首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# Directory.GetDirectories -如何解决UnauthorizedAccessException问题?

C# Directory.GetDirectories -如何解决UnauthorizedAccessException问题?
EN

Stack Overflow用户
提问于 2012-11-16 21:11:54
回答 3查看 884关注 0票数 2

当我尝试使用Directory.GetDirectories(systemVolumePath)访问系统卷时,我的应用程序抛出了一个UnauthorizedAccessException。很好。我已经在这里看到了所有使用try catch的答案--这不是我想要的。

如何在拥有足够权限访问所有文件夹的帐户下运行我的应用程序?

谢谢

EN

回答 3

Stack Overflow用户

发布于 2012-11-16 21:32:14

我已经成功地使用runas.exe工具做到了这一点。

代码语言:javascript
复制
runas.exe /savecred /user:yourusernamehere my_app_that_needs_permissions.exe

这将在当前桌面环境中运行应用程序,但使用其他用户的配置文件和权限,因此将使用该用户的凭据进行文件访问(包括创建文件)。

这样做的一个有趣的副作用是,您的应用程序创建的任何文件都将作为其他用户作为所有者创建,而您的当前用户可能没有访问这些文件所需的权限。

这是在世界多用户环境中的一次有趣的短途旅行。

如果你正在寻找一种从你自己的代码中做到这一点的方法,这些SO帖子似乎涵盖了它:

Launch a process under another user's credentials

Using Process.Start() to start a process as a different user from within a Windows Service

票数 0
EN

Stack Overflow用户

发布于 2012-11-16 21:36:31

据我所知,你不能“解决”安全问题。您所能做的就是要求权限。

您必须要求用户提升权限,才能让您的代码以所需的权限运行。

在.NET中,您可以使用Declarative SyntaxImperative Syntax来完成此操作。

下面是来自Microsoft的一个示例,其中使用命令式语法要求拥有对单个文件夹的权限:

代码语言:javascript
复制
FileIOPermission permFileIO =
new FileIOPermission(FileIOPermissionAccess.AllAccess, "C:\\Temp");
try 
{
    // Demand the permission to access the C:\Temp folder.
    permFileIO.Demand();
    resultText.Append("The demand for permission to access the C:\\Temp folder succeeded.\n\n");
}
catch (SecurityException se)
{
    resultText.Append("The demand for permission to access the C:\\Temp folder failed.\nException message: ");
    resultText.Append(se.Message);
    resultText.Append("\n\n");
}
票数 0
EN

Stack Overflow用户

发布于 2012-11-16 21:40:36

要访问这些目录,您需要在LocalSystem帐户下运行,这一点您不应掉以轻心。

如果PSExec适合您的使用场景,它将帮助您实现所需的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13417328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档