如何使用Visual Studio在调试中以管理员身份运行应用程序?

car*_*666 84 c# visual-studio

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

我试过添加:

<requestedExecutionLevel level="asInvoker" uiAccess="true" />
Run Code Online (Sandbox Code Playgroud)

到我的清单,但我仍然得到访问被拒绝错误.

以下是失败的代码行:

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

现在我有一个工作,但我想知道未来.

Sam*_*ica 117

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

  • @PanagiotisKanavos我个人希望避免以管理员身份运行,除非我有特定的理由这样做 (17认同)
  • 更好的是,将Visual Studio快捷方式设置为从其"属性"页面以管理员身份运行 (13认同)
  • 我同意@Gábor:**这不是正确的解决方案**。您只需在应用程序清单中将“requiredExecutionLevel”设置为“requireAdministrator”,VS就会自动注意到这一点,并且在启动调试时,将显示一个对话框,询问您是否要使用管理员权限重新启动。 (3认同)
  • 尽管被接受,这 ** 不是 ** 正确的解决方案。除非有必要,否则您不会以管理员身份运行程序,也不会运行 VS 或其他任何东西。最初的问题是关于 OP 编写的程序,而不是 VS。正确答案是指定正在开发的程序需要管理员权限。 (2认同)

Sup*_*nno 63

VS必须以管理员权限运行.但是,一个更优雅的方法是在manifest中的requiredExecutionLevel中设置为'requireAdministrator'.

<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
Run Code Online (Sandbox Code Playgroud)

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

  • `manifest` 可以通过右键单击 VS 项目 `properties` 树,然后添加项目(搜索 `manifest`),文件名如 `app.manifest` 来添加。之后,打开项目属性,在“应用程序/资源/图标和清单”下,选择清单文件。 (3认同)

Bur*_*dar 12

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

在此输入图像描述

  • 这是一个极其糟糕的主意。您确实不希望 Visual Studio 始终以管理员身份运行。 (3认同)
  • 该屏幕截图完全无法理解,并且没有附带说明,无论它是否是一个好的解决方案。 (2认同)

Jos*_*osh 7

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


小智 7

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

您应该在项目属性Linker -> Manifest File -> UAC Execution Level中找到一个选项。将其设置为requireAdminstrator

这将导致默认生成的清单包含您需要的requestedExecutionlevel,以便您的用户在尚未提升权限的情况下,系统会自动提示他们提升权限。