【问题标题】:What is a good way of checking to see if a particular user may access a particular file?检查特定用户是否可以访问特定文件的好方法是什么?
【发布时间】:2011-02-18 08:35:33
【问题描述】:

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

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

所以...

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

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

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

更新:

我收到一个回答,建议我只是尝试打开文件。问题是打开文件的代码在一个特殊的系统帐户下运行,并且被封装在另一个库中。因此,让我问一下:我怎样才能让我试图打开文件的代码作为那个特殊的系统帐户运行。假设我对运行代码的机器拥有管理员权限。

【问题讨论】:

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


    【解决方案1】:

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

    我假设您真正想知道的是为什么 UserBob 无法访问该文件。不幸的是,您作为 UserBob 可以做的事情并不多。特别是,如果可能的话,这将被视为信息泄露漏洞。

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

    【讨论】:

    • 好的,我应该更具体一点。我正在使用一些.net 代码。有没有一种简单的方法可以尝试以UserBob 的身份打开文件?
    • UserBob 是不是与您的应用程序在其下运行的用户不同用户?
    • 是的,codeka,UserBob 与运行应用程序的用户不同。事实上,UserBob 和运行应用程序的用户都可能是没有直接登录权限的“系统”帐户。我想要一些类似这样的代码: if UserHasAccess(UserBob, @"c:\specialPath\specialFile") { doStuff(); } else { // 错误处理 }
    • 看起来我无法在主要问题之外的评论中格式化代码,但我想你明白了 :-)
    猜你喜欢
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2013-07-12
    • 2021-01-27
    • 2020-12-08
    • 2011-02-24
    • 2011-01-25
    • 2020-03-30
    相关资源
    最近更新 更多