2010-05-11 55 views
1

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

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

所以......

如果我想知道,“难道UserBob访问文件c:\specialPath\specialFile,什么是要找出一个简单的方法?顺便说一句,我的环境是Windows Server 2003

更新:为了澄清,我想要做这样的事情:

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

更新:

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

回答

1

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

我假设你是真的试图找出是为什么 UserBob无法访问该文件。不幸的是,你没有太多可以做的作为 UserBob找出来。特别是,如果可能的话,它将被视为泄露信息的脆弱性。

作为管理员,您可以执行的操作是对该特定文件启用审计。右键单击该文件,选择安全性,然后转到审核选项卡。另一种选择是使用进程监视器来监视程序运行时发生了什么。

+0

好的,我应该更具体。我正在使用一些.net代码。有没有简单的方法来尝试打开文件为'UserBob'? – 2010-05-12 03:09:24

+0

UserBob是一个与您的应用程序运行的用户不同的*用户吗? – 2010-05-12 03:38:06

+0

是的,codeka,'UserBob'是与运行应用程序的用户不同的用户。事实上,UserBob和运行该应用程序的用户都可能是没有直接登录权限的“系统”帐户。 我想有一些代码,说是这样的:如果 UserHasAccess(UserBob,@ “C:\ specialPath \ specialFile”) { doStuff(); } 其他 { //错误处理 } – 2010-05-12 13:39:48

相关问题