【问题标题】:Checking if a user has read permissions for a file in windows检查用户是否对windows中的文件具有读取权限
【发布时间】:2011-04-20 18:03:38
【问题描述】:

如何检查用户是否对 Windows 中的文件具有读取权限?可以通过File.GetAccessControl 读取授权规则。这并不能告诉我用户是否有权通过组成员身份读取文件...

【问题讨论】:

    标签: .net windows file-permissions acl


    【解决方案1】:

    读取文件。如果你能读,你有权限。


    这实际上是这里的预期模型。即使您在尝试阅读之前检查了权限,它们也有可能在您开始阅读之前更改。您应该尝试读取文件(如果您不能,CreateFile 将失败)并在之后请求宽恕(处理错误)。

    【讨论】:

    • 方便的澄清。在这种情况下,模拟该用户并尝试读取该文件。否则,你到底想在这里做什么?可能有更好的方法。
    • 但是,如果您需要检查与登录用户不同的用户是否对某个文件具有权限。例如,如果有一个包含配置的文件和读取该配置的服务用户(即非登录用户)。假设您无法控制将要部署的环境。您无法控制配置管理器为他们的组命名的内容,但只能要求他们授予一组文件的权限。能够检查用户是否可以读取配置文件会很有帮助。
    • 最可靠的方法仍然是模拟用户(即以编程方式启动一个进程作为尝试读取文件并返回成功/失败的用户),尽管这确实需要知道用户的凭据。当用户实际上无法读取文件时,为什么没有错误/日志消息作为选项?你是不是想过早地失败?
    • 另外,我相信只有管理员可以查看其他用户的组成员身份,这会极大地改变一切(权限方面)。
    • 我可以假设检查这些设置的人具有管理权限。我要看看是否可以进行模拟。我希望有其他方法。
    【解决方案2】:

    C“访问”运行时函数可用于检查访问。我不确定它是否检查所有 Windows 级别(组、用户、...)。试试看吧。

    【讨论】:

    • PInvoke to advapi32.dll 你的意思是?
    猜你喜欢
    • 1970-01-01
    • 2016-04-23
    • 2015-05-28
    • 1970-01-01
    • 2011-04-29
    • 2010-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多