Вопрос

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top