UAC: файл манифеста игнорируется - PullRequest
2 голосов
/ 18 сентября 2009

Один из моих исполняемых файлов записывает некоторую конфигурацию в файл 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 ]

3 голосов
/ 14 октября 2009

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 и более поздних версиях, дважды проверьте, что исполняемый файл не имеет внутреннего манифеста

2 голосов
/ 07 января 2011

Это сведет вас с ума - добрался до сути и опубликовал статью и некоторые утилиты, которые помогут игнорировать ваш манифест: Узнайте, почему игнорируется ваш внешний манифест .

0 голосов
/ 18 сентября 2009

Хорошо, это работает, когда я встраиваю файл манифеста с помощью MT.EXE. До сих пор не понимаю, почему это не работает, когда я предоставляю манифест в виде отдельного файла, но я полагаю, что встраивание - это достаточно хорошее решение.

...