10

这适用于VS2010VS2012。但是在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>

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

更新3:
在这里投票或通知我另一张票。

4

3 回答 3

14

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

不完全确定这是错误还是功能。请密切关注此 Connect 报告以了解更多信息。


更新:看起来像一个错误,反馈报告已关闭为“已修复”。不幸的是,它没有暗示该修复何时将使其成为我们的机器。也许是未来的 VS2013 更新,肯定是下一个版本。
更新 2:修复进入 VS2013 更新 3。

于 2013-11-14T01:08:01.550 回答
2

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

于 2013-11-16T01:39:59.100 回答
1

我希望这会很快得到解决™ 同时,您可以使用方便的快捷方式在管理员模式下重新启动 VS,在扩展库中查找“Visual Studio Restart”。

编辑:

我看到你可以实现旧行为的唯一方法是关闭 VS 托管进程,因为正是这个进程由于某种原因“吃掉”了提升提示。实际上,当我想到它时,这种行为甚至可能是设计使然。您可以在项目属性(调试)中关闭托管进程,或者在生成 .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>
于 2013-11-13T09:37:31.753 回答