我尝试使用GetEffectiveRightsFromAcl
执行此操作,但是由于我所属的群组,它没有为我拒绝的文件返回正确的访问掩码。
例如,我有一个文件unreadable.txt
。如果我拒绝为当前用户对unreadable.txt
的写访问权限,则访问掩码正确显示我没有写访问权限。但是,如果我拒绝拒绝“Authenticated Users”组的写访问权限,则访问掩码意味着我具有完全访问权限(我没有)。
我的另一种选择是手动迭代Ace列表并将我的SID与每个条目进行比较,但是我无法找到一种干净或简单的方法来检查Ace是否适用于某个组,以及当前用户是否属于那个小组。
作为扩展名,文件可能不存在(即它是一个即将被写入的新文件),在这种情况下,需要检查对目录的访问。
这有什么好的解决方案吗?似乎应该存在一种更简单的方法来实现这一点,而不是实际尝试读取/写入有问题的文件。
答案 0 :(得分:2)
根据AccessCheck上的知识库文章的建议,改为使用Limitations of the GetEffectiveRightsFromAcl API。
答案 1 :(得分:1)
尝试使用CreateFile
以所需模式打开文件 - 如果成功,则表示您拥有访问权限。你实际上不必向文件写任何东西,只需立即关闭它。