我在Linux工作。 在具有statfunction的Linux中,我们可以提取文件的权限。
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()方法?
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] 举报,一经查实,本站将立刻删除。