检查用户是不是对windows中的文件具有读取权限

Posted

技术标签:

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

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

【问题讨论】:

【参考方案1】:

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


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

【讨论】:

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

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

【讨论】:

PInvoke to advapi32.dll 你的意思是?

以上是关于检查用户是不是对windows中的文件具有读取权限的主要内容,如果未能解决你的问题,请参考以下文章

Linux中的文件权限怎么理解

Windows文件管理器登录Ftp服务提示请检查是不是有权限

Windows 如何解决冲突的文件系统权限/权限?

如何检查某个用户是不是在根节点上具有 Write, read 权限

如何检查用户选择的文件是不是我的沙盒应用程序具有写入权限?

读取文件的权限