在Windows 7下调试需要管理员权限的程序

时间:2010-06-20 19:50:28

标签: visual-studio debugging visual-studio-2008 windows-7

我在Windows 7 64位上运行Visual Studio 2008。我以管理员身份登录,并且我以管理员身份运行它,但是当我调用受限制的API时,我正在处理的程序因访问被拒绝而失败。如果使用“以管理员身份运行”从资源管理器运行该程序,则可以正常运行。

我认为Visual Studio 2008使用Visual Studio 2008本身运行的任何权限来调试程序。由于这个原因,我无法调试我的应用程序,而且我不知道发生了什么。

6 个答案:

答案 0 :(得分:14)

这适用于Visual Studio 2012。

  • 创建清单文件:右键单击项目并选择“添加新项”,选择“应用程序清单文件”。这会将名为app.manifest的文件添加到项目中。
  • 修改清单文件:将标记level的属性requestedExecutionLevel设置为requireAdministrator

现在,您的程序将始终需要管理员权限,无论它在何处执行。如果由Visual Studio调试器启动,它将提示您以管理员身份重新启动Visual Studio。

答案 1 :(得分:8)

最好以管理员身份运行Visual Studio 2008。此外,最好将应用程序的清单设置更改为需要管理员权限。每次启动应用程序时,系统都会提示您升级到系统管理员,并且在Visual Studio 2008下运行时,IDE将在开始调试之前为您提供高程。

要更改设置,请打开项目属性并转到配置属性链接器清单文件 UAC执行级别< / em>的

答案 2 :(得分:7)

我找到了答案。事实证明,它实际上是一个明显的问题:默认情况下,如果您有清单,则需要设置适当的管理员权限。

默认值为asInvoker,但如果您需要提升权限,则无效;您必须在清单属性中将其设置为requireAdministrator

答案 3 :(得分:2)

以管理员身份运行Visual Studio 2008。

答案 4 :(得分:1)

我有一个案例,我放入

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

设置(在这篇文章的另一个答案中描述)........并且没有用。

我找到了另一个提示(见下文)......并取消选中该选项可让我的代码正常工作。

  

尝试进入项目属性,并在“调试”选项卡下,   取消选中“启用Visual Studio托管过程”并查看是否存在   解决了你的问题。

(来自https://social.msdn.microsoft.com/Forums/vstudio/en-US/b5c4da93-5d64-442e-af28-df6d10765538/debug-as-administrator?forum=vbgeneral

所以我需要app.manifest设置和“取消选中”。

答案 5 :(得分:0)

我使用Windows Vista和Visual Studio 2005测试表明,当您使用主机进程时,调试器下的行为仅取决于您启动Visual Studio的方式,而不取决于应用程序的清单(或缺少清单)。当Visual Studio升级时,行为仅取决于主机进程的使用(或不使用),而不取决于清单。对于Windows 7和Visual Studio 2008,这可能仍然适用。

另外,您是否尝试在Visual Studio外部启动应用程序并使用附加到进程