4

我尝试使用 来执行此操作GetEffectiveRightsFromAcl,但它没有为由于我所属的组而被拒绝的文件返回正确的访问掩码。

例如,我有一个文件unreadable.txt. 如果我拒绝unreadable.txt当前用户的写访问权限,访问掩码会正确显示我没有写访问权限。但是,如果我改为拒绝“经过身份验证的用户”组的写访问权限,则访问掩码意味着我具有完全访问权限(我没有)。

我的替代方法是手动迭代 Ace 列表并将我的 SID 与每个条目进行比较,但我无法找到一种干净或简单的方法来检查 Ace 是否用于某个组,以及当前用户是否属于该组。

作为扩展,该文件可能不存在(即它是一个新文件,即将被写入),在这种情况下,需要检查对目录的访问。

有什么好的解决办法吗?似乎应该存在一种更简单的方法来执行此操作,而无需实际尝试读取/写入相关文件。

4

2 回答 2

3

请改用AccessCheck ,正如有关 GetEffectiveRightsFromAcl API的限制的知识库文章所建议的那样。

于 2012-06-01T02:46:13.940 回答
1

只需尝试使用所需的模式打开文件CreateFile- 如果成功,您就知道您拥有访问权限。您实际上不必向文件中写入任何内容,只需立即将其关闭即可。

于 2012-06-01T02:44:58.250 回答