【问题标题】:How to run application as administrator in debug with Visual Studio?如何在 Visual Studio 调试中以管理员身份运行应用程序?
【发布时间】:2013-12-22 15:26:26
【问题描述】:

我有一个 c# 应用程序,我必须对 C 驱动器的根目录具有读/写访问权限。我意识到我可以编译代码并以管理员身份运行可执行文件并且它可以工作。但我需要调试它,我不确定如何在 Visual Studio 中启动应用程序。

我已尝试添加:

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

到我的清单,但我仍然收到拒绝访问错误。

这是失败的代码行:

MemoryMappedFile mmf = MemoryMappedFile.CreateFromFile(@"c:\somemapnamefile.data", System.IO.FileMode.OpenOrCreate, "somemapname", 1000);

目前我有一个解决办法,但我想知道未来。

【问题讨论】:

  • 如果您以管理员身份运行 VS,那么您正在调试的任何内容也将以管理员身份运行。
  • 我推荐following fix 否则你在运行固定解决方案时遇到问题
  • 就我而言,我必须转到兼容性并选择在 Windows XP (Service Pack 3) 中运行。以管理员身份运行 IDE 没有帮助。

标签: c# visual-studio


【解决方案1】:

"This task requires the application to have elevated permissions" 错误是因为当前用户没有足够的权限打开 Visual Studio。

作为临时解决方案

您可以通过右键单击 Visual Studio 并在每次打算打开它时选择以管理员身份运行来解决此问题

作为永久解决方案

您可以查看compatibility troubleshooting

  • 对,点击Visual Studio > 选择Troubleshoot compatibility。
  • 选择疑难解答程序。
  • 检查程序需要额外的权限。
  • 点击测试程序。
  • 稍等片刻,直到程序启动。点击下一步。
  • 选择是,保存此程序的这些设置。

图片详细步骤请查看Visual Studio requires the application to have elevated permissions

【讨论】:

    【解决方案2】:

    现在检查的答案将不起作用。

    您应该在项目属性 Linker -> Manifest File -> UAC 执行级别 中找到一个选项。将此设置为 requireAdminstrator

    这将导致默认生成的清单包含您需要的 requestedExecutionlevel,因此如果您的用户尚未提升权限,则会自动提示他们提升他们的权限。

    【讨论】:

      【解决方案3】:

      VS 必须以管理员权限运行。然而,一个更优雅的方式是在 manifest 中的 requiredExecutionLevel 应该设置为 'requireAdministrator'。

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

      当您打开项目并尝试调试时,VS2012 会警告管理员权限并重新启动到管理员权限。并且exe文件将首先标记为需要管理员权限,因此部署时您不需要在文件属性中配置管理员权限要求。

      【讨论】:

      • 还要确保在项目的安全选项卡下,未选中“启用 ClickOnce...”,否则当您尝试运行管理员所需的代码时会收到安全警告。 (如果您已经在某个时候点击了应用上的“发布”,则会检查该设置)。
      • 只是一个注释 - 如果没有清单,只需添加一个。不知何故,我没有意识到它可能不存在。
      【解决方案4】:

      您也可以自动设置此管理员选项:

      【讨论】:

      • 我认为您的意思是在上下文菜单中突出显示“属性”条目,但每个人都知道您在说什么。
      • 更简单的方法是Compatibility &gt; Run As Administrator
      • 这是一个非常糟糕的主意。您真的不希望 Visual Studio 一直以管理员身份运行。
      • 这个截图完全看不懂,也没有附带说明,不管好不好解决。
      【解决方案5】:

      要回答标题中的问题,您只需在启动 VS 时从上下文菜单中选择以管理员身份运行即可。

      【讨论】:

        【解决方案6】:

        只需以管理员身份运行 Visual Studio 本身。您从那里调试的任何程序也将以管理员身份运行。

        【讨论】:

        • 更好的是,将 Visual Studio 快捷方式设置为从其属性页面以管理员身份运行
        • @PanagiotisKanavos 我个人喜欢避免以管理员身份运行事情,除非我有特定的理由这样做
        • 是的。有一些程序需要管理员。一旦我运行它,VS 会要求以管理员模式重新启动 VS。我不确定这是怎么回事。我只是设置了 level="requireAdministrator"。但有时,它不会自动重启
        • 如果您将 VS 默认设置为以管理员身份运行,但双击解决方案,您最终可能会意外以非管理员身份启动它。偶尔发生在我身上。
        • 尽管被接受,这不是正确的解决方案。除非有必要,否则您不会以管理员身份运行程序、VS 或其他任何东西。最初的问题是关于 OP 编写的程序,而不是 VS。正确答案是指定正在开发的程序需要管理员权限。
        猜你喜欢
        • 2012-11-27
        • 1970-01-01
        • 1970-01-01
        • 2011-02-15
        • 1970-01-01
        • 2020-11-20
        • 2017-09-20
        • 2013-12-14
        • 2011-09-24
        相关资源
        最近更新 更多