我在Windows 7 64位上运行Visual Studio 2008。我以管理员身份登录,并且我以管理员身份运行它,但是当我调用受限制的API时,我正在处理的程序因访问被拒绝而失败。如果使用“以管理员身份运行”从资源管理器运行该程序,则可以正常运行。
我认为Visual Studio 2008使用Visual Studio 2008本身运行的任何权限来调试程序。由于这个原因,我无法调试我的应用程序,而且我不知道发生了什么。
答案 0 :(得分:14)
这适用于Visual Studio 2012。
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托管过程”并查看是否存在 解决了你的问题。
所以我需要app.manifest设置和“取消选中”。
答案 5 :(得分:0)
我使用Windows Vista和Visual Studio 2005测试表明,当您使用主机进程时,调试器下的行为仅取决于您启动Visual Studio的方式,而不取决于应用程序的清单(或缺少清单)。当Visual Studio升级时,行为仅取决于主机进程的使用(或不使用),而不取决于清单。对于Windows 7和Visual Studio 2008,这可能仍然适用。
另外,您是否尝试在Visual Studio外部启动应用程序并使用附加到进程?