UAC: файл манифеста игнорируется
-
22-07-2019 - |
Вопрос
Один из моих исполняемых файлов записывает некоторую конфигурацию в файл XML в C: \ Program Files \ MyApp \ config.xml. Он должен работать от имени администратора в Vista / Server 2008, в противном случае ОС не разрешит запись в это место.
Я включил файл манифеста с именем config.exe.manifest, чтобы автоматически запрашивать права администратора при запуске.
Вот мой файл манифеста:
<?xml version="1.0" encoding="utf-8"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
Я пробовал это в Windows Server 2008, но файл манифеста, похоже, игнорируется, и исполняемый файл запускается без достаточных прав.
Решение 3
Хорошо, это работает, когда я встраиваю файл манифеста с помощью MT.EXE. До сих пор не понимаю, почему это не работает, когда я предоставляю манифест в виде отдельного файла, но я полагаю, что встраивание является достаточно хорошим решением.
Другие советы
http: / /blogs.msdn.com/junfeng/archive/2009/05/11/internal-manifest-vs-external-manifest.aspx р>
цитируемая выше ссылка: В Windows XP Sxs ищет внешний манифест перед внутренним манифестом. Если внешний манифест найден, внутренний манифест игнорируется.
В Windows Server 2003 и более поздних версиях порядок обратный. Внутренний манифест предпочтительнее внешнего.
Если вы используете внешний манифест, и ваш сценарий работает в Windows XP, но не в Windows Server 2003 и более поздних версиях, пожалуйста, проверьте, что исполняемый файл не имеет внутреннего манифеста
Это сведет вас с ума - докопался до сути и опубликовал статью и некоторые утилиты, помогающие игнорировать ваш манифест: Узнайте, почему игнорируется ваш внешний манифест .