在调试模式下运行应用程序时,Manifest不会强制Visual Studio 2013在Admin下重新启动

时间:2013-10-30 19:48:56

标签: manifest visual-studio-2013

这适用于 VS2010 VS2012 。但是在 VS2013 应用程序中(通过按“运行”或 F5 )只是以我的用户权限启动,无法访问某些资源(我正在使用HttpListener)。

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
  <security>
    <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
      <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
    </requestedPrivileges>
  </security>
</trustInfo>

我试图谷歌,试图生成新的清单,从MSDN复制它的内容,但没有任何帮助。 VS2013 的这一部分有什么变化吗?

UPDATE1:
那是一个部分。这是完整的清单内容:

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
  <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
    <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
  </requestedPrivileges>
</security>
</trustInfo>

<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
  <application></application>
</compatibility>

</asmv1:assembly>

UPDATE2:
这里的Okey是一个简单的例子:当我运行编译的.exe文件时,UAC要求管理员权限。但是,当我从 VS2013 (通过按“运行”或 F5 )运行它时,它不会!如果您使用 VS2012 / VS2010 打开同一个项目,他们会要求在管理员下重新启动。
  你可以快速检查:
VS2013 中创建控制台应用程序,添加清单并设置 level =“requireAdministrator”。然后运行或按 F5 VS2013 在按下 Ctrl-F5 时在管理员下运行应用程序。)
  但这不是 VS2012 / VS2010 的行为!
  我们怎样才能得到旧的行为?

UPDATE3:
请投票here或通知我另一张票。

3 个答案:

答案 0 :(得分:14)

您需要禁用托管进程选项以获取VS重新启动提示。单击项目+属性,调试选项卡,取消选中“启用Visual Studio主机进程”复选框。立即启动VS可能更容易。右键单击快捷方式“以管理员身份运行”。

不完全确定这是错误还是功能。请密切关注this Connect report以了解详情。


更新:看起来像一个错误,反馈报告被关闭为“已修复”。不幸的是,当修复程序将其作为我们的机器时它没有提示。也许未来的VS2013更新,肯定是下一个版本。
Update2:修复程序进入VS2013 Update 3。

答案 1 :(得分:2)

我最终做的是在没有调试CRTL+F5的情况下运行项目。它给了我与Visual Studio 2010相同的提示。

答案 2 :(得分:1)

我希望很快就能解决这个问题 同时你可以使用方便的快捷方式在管理模式下重启VS,在扩展库中查找“Visual Studio Restart”。

编辑:

只有我看到你能够实现旧的行为才能关闭VS主机进程,因为这个过程由于某种原因“吃掉”提升提示。实际上,当我考虑它时,这种行为甚至可能是设计上的。您可以在项目属性(Debug)中关闭托管进程,或者在生成.csproj时设置平台配置UseVSHostingProcess标记为false,如下所示:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <UseVSHostingProcess>false</UseVSHostingProcess>
</PropertyGroup>