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

Posted

技术标签:

【中文标题】在Windows 7下调试需要管理员权限的程序【英文标题】:Debug a program that needs administrator rights under Windows 7 【发布时间】:2011-03-06 01:48:25 【问题描述】:

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

我相信 Visual Studio 2008 可以使用 Visual Studio 2008 本身运行的任何权限来调试程序。就目前而言,我无法调试我的应用程序,而且我不知道发生了什么。

【问题讨论】:

为未来的读者。我使用了下面的 app.manifest 答案。但是对于 VS2012(我知道这最初是针对 VS2008)...对于 VS2012,我必须转到项目 // 属性 // (调试选项卡) // 然后取消选择(取消选中)“启用 Visual Studio 托管进程” .我的操作系统也是 Windows Server 2008,但是是 64 位的。 【参考方案1】:

这适用于 Visual Studio 2012。

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

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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

默认为asInvoker,但如果您需要提升权限,这将不起作用;相反,您必须在清单属性中将其设置为 requireAdministrator

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

我有一个案例,我放了

    <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 设置和“取消选中”。

【讨论】:

【参考方案6】:

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

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

【讨论】:

以上是关于在Windows 7下调试需要管理员权限的程序的主要内容,如果未能解决你的问题,请参考以下文章

在 Delphi 中开发具有管理员权限的应用程序

在 Windows 7 下提升权限

Visual Studio 需要在 Windows 7 中提升权限

CMake 编译器标识在 Windows 7 64 位下未知,仅无管理员权限

vs调试中出现异常无法跳转下一步v

Java项目管理员权限windows 7