我正在处理作为特殊的非特权用户运行的应用程序。我希望能够轻松检查用户是否可以读取给定文件。看起来这应该很容易,即使我在Windows资源管理器中进入文件并看到检查了读取权限,有时似乎还有一些东西阻止用户读取文件(例如父目录,当我尝试以编程方式将其作为用户阅读时,用户无法浏览。
用户没有控制台登录权限,因此我不能以用户身份登录并尝试读取该文件。
因此...
如果我想知道,“UserBob
是否可以访问文件c:\specialPath\specialFile
,有什么简单的方法可以找到?BTW,我的环境是Windows Server 2003。
更新:澄清一下,我想做这样的事情:
if UserHasAccess(UserBob, @"c:\specialPath\specialFile") { doStuff(); } else { // error handling }
更新:的
我收到一个答案,建议我只是尝试打开该文件。问题是打开文件的代码在特殊的系统帐户下运行,并封装在另一个库中。因此,让我问:如何使我的代码尝试打开文件作为特殊系统帐户运行。假设我具有代码将运行的机器的管理员访问权限。
答案 0 :(得分:1)
找出答案的最简单方法就是尝试打开文件。如果失败则您无法访问。
我认为你真正试图找出的是为什么 UserBob无法访问该文件。不幸的是,您无法用作为 UserBob来查找。特别是,如果可能的话,它将被视为信息漏洞的披露。
作为管理员,您可以执行的操作是为该特定文件启用审核。右键单击该文件,选择“安全性”,然后转到“审核”选项卡。另一种选择是使用Process Monitor来监控程序运行时发生的情况。