微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Windows中查找文件的权限

我在Linux工作。 在具有statfunction的Linux中,我们可以提取文件的权限。

同样,我们如何才能在Windows中提取文件的权限。

msdn中的_stat函数声明在stat缓冲区中设置了权限位。 但它并没有给出如何提取它们。

http://msdn.microsoft.com/en-us/library/14h5k7ff%28VS.71%29.aspx

另一种获得过程的argc和argv的方法

如何在Windows Phone上开发Google地图

C ++如何检查Outlook进程是否已经在运行

为什么QueryPerformanceFrequency是由1024除以TSC频率,为什么不只是TSC?

Windows Store Javascript背景audiotassk close()方法

用C ++获取用户的login会话

Ajax请求在windows上不能并行运行

Eclipse使用错误的Java家庭

文件types关联到正在运行的应用程序

来自Python的Win32长path

结构统计结构在Windows上不包含任何文件权限信息。 Windows的安全性更为复杂,你需要GetFileSecurity()来检索文件的DACL。 这很少在Windows程序中完成,您通常会让Windows评估有效的权限并处理“您无法做到”错误返回。 GetLastError()中的ERROR_ACCESS_DENIED。

Windows使用ACL(访问控制列表)来控制对文件(或其他内核对象)的访问。 您可以使用GetFileSecurity获取文件的ACL(您需要DACL,而不是SACL)。 然后你可以通过GetEffectiveRightsFromAcl获得实际的权限(权限)。

这有一个竞争条件,所以它不是一个好主意。 特别是,在检索DACL的时间和尝试对文件执行操作的时间之间,DACL可能已经更改,因此检索到的内容不再正确。

我从你提供的链接中读到,在_stat和朋友中实现的文件权限是UNIX专用的,并且没有用于NTFS,FAT和其他Windows文件系统。

我想你会有更多的运气使用经典的FindFirstFile和相关函数读取文件权限。 你将需要处理这里描述的函数返回的句柄。这些是非常难以移植的,但是由于C ++没有文件系统支持,它们是唯一不错的选择。

MSDN没有像它应该那样多的超链接,你需要搜索一下来找到_stat Structure st_mode Field Constants 。

在Unix和Windows上,只能获得文件的基本权限,而不能访问控制列表。 由于Windows使用ACL很多, _stat不会给你很多有用的信息。 您需要使用本地Windows API函数获取ACL。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐