Манифест не заставляет Visual Studio 2013 перезагружаться в режиме администратора при запуске приложения в режиме отладки.

Это работало в VS2010 и VS2012. Но в VS2013 приложение (нажатием "Run" или 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>

Я попытался Google, попытался создать новый манифест, скопировал его содержимое из 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:
Окей, вот простой пример: когда я запускаю скомпилированный.exe файл, UAC запрашивает права администратора. Но когда я запускаю его из VS2013 (нажав "Run" или F5), это не так! И если вы откроете тот же проект с VS2012 / VS2010, они попросят перезапустить под администратором.
Вы можете проверить это быстро:
Создайте консольное приложение в VS2013, добавьте манифест и установите level = "requireAdministrator". Затем запустите или нажмите F5 (VS2013 запускает приложение с правами администратора при нажатии Ctrl-F5).
Но это не поведение VS2012 / VS2010!
Как мы можем получить старое поведение?

Update3:
Пожалуйста, проголосуйте здесь или сообщите мне о другом билете.

3 ответа

Решение

Вам нужно отключить опцию процесса хостинга, чтобы получить приглашение перезагрузки VS. Project + Properties, вкладка "Debug", снимите флажок "Включить процесс размещения Visual Studio". Может быть легче просто начать повышенный VS сразу. Щелкните правой кнопкой мыши ярлык "Запуск от имени администратора".

Не совсем уверен, что это ошибка или особенность. Следите за отчетом Connect, чтобы узнать больше.


Обновление: похоже на ошибку, отчет обратной связи был закрыт как "исправлено". К сожалению, это не дает подсказки, когда это исправление сделает наши машины. Возможно, в будущем обновлении VS2013, конечно, в следующей версии.
Обновление 2: исправление внесено в VS2013 Обновление 3.

В итоге я запустил проект без отладки CRTL+F5, Это дает мне ту же подсказку, что Visual Studio 2010 дает вам.

Я надеюсь, что это будет исправлено в ближайшее время. Тем временем вы можете использовать удобные ярлыки для перезапуска 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>
Другие вопросы по тегам