检查特定用户是否可以访问特定文件的好方法是什么?

时间:2010-05-11 21:08:02

标签: security windows-server-2003 file-permissions

我正在处理作为特殊的非特权用户运行的应用程序。我希望能够轻松检查用户是否可以读取给定文件。看起来这应该很容易,即使我在Windows资源管理器中进入文件并看到检查了读取权限,有时似乎还有一些东西阻止用户读取文件(例如父目录,当我尝试以编程方式将其作为用户阅读时,用户无法浏览。

用户没有控制台登录权限,因此我不能以用户身份登录并尝试读取该文件。

因此...

如果我想知道,“UserBob是否可以访问文件c:\specialPath\specialFile,有什么简单的方法可以找到?BTW,我的环境是Windows Server 2003。

更新:澄清一下,我想做这样的事情:

if UserHasAccess(UserBob, @"c:\specialPath\specialFile")
{
 doStuff(); 
}
else
{
 // error handling
}

更新:

我收到一个答案,建议我只是尝试打开该文件。问题是打开文件的代码在特殊的系统帐户下运行,并封装在另一个库中。因此,让我问:如何使我的代码尝试打开文件作为特殊系统帐户运行。假设我具有代码将运行的机器的管理员访问权限。

1 个答案:

答案 0 :(得分:1)

找出答案的最简单方法就是尝试打开文件。如果失败则您无法访问。

我认为你真正试图找出的是为什么 UserBob无法访问该文件。不幸的是,您无法用作为 UserBob来查找。特别是,如果可能的话,它将被视为信息漏洞的披露。

作为管理员,您可以执行的操作是为该特定文件启用审核。右键单击该文件,选择“安全性”,然后转到“审核”选项卡。另一种选择是使用Process Monitor来监控程序运行时发生的情况。