【问题标题】:System.UnauthorizedAccessException with Admin PrivilegesSystem.UnauthorizedAccessException 具有管理员权限
【发布时间】:2014-07-05 00:54:43
【问题描述】:

我的应用程序有一些问题,必须访问“C:\”目录。当我尝试这样做时,会发生未经授权的访问异常。我已经尝试将 app.manifest 中的执行级别更改为:

<requestedExecutionLevel level="highestAvailable" />

<requestedExecutionLevel level="requireAdministrator" uiAccess= "true"/>

<requestedExecutionLevel level="requireAdministrator" uiAccess= "false"/>

异常的主要代码是:

List<string> search =
    Directory.GetFiles(@"C:\\", "*.exe*", SearchOption.AllDirectories).ToList();

谁能帮帮我?非常感谢!

【问题讨论】:

  • 这可能不是你的问题,但@"C:\\" 是 C:\\ 而不是 C:\
  • 右键Visual Studio快捷方式,点击以管理员身份运行
  • 谢谢!我也试过了,但是没用,出现同样的错误。

标签: c# visual-studio-2013 manifest execution


【解决方案1】:

当我尝试这样做时发生未经授权的访问异常。

仅仅因为您是管理员并不意味着您可以访问所有内容。我以前从未使用过它,但手册上说SearchOption.AllDirectories 这样做:

在搜索操作中包括当前目录及其所有子目录。此选项在搜索中包括重新解析点,例如已安装的驱动器和符号链接。

所以它递归地搜索 C 盘。这意味着它将尝试进入普通管理员无法访问的System Volume Information 之类的内容。

除了自己设置一个(以及修改重要系统文件夹上的 ACL)之外,我不相信 Windows 中有一个安全主体可以保证访问 C 驱动器上的所有内容。您应该尝试自己递归浏览文件和文件夹,并忽略您无法进入的文件夹。

【讨论】:

    最近更新 更多