Перезаписать исполняемый файл в C: \ Program \ MyProg в Windows Vista - PullRequest
3 голосов
/ 09 января 2009

Я бы хотел, чтобы моя программа обновилась (загрузив новый exe и / или некоторые другие файлы с ftp), и я использовал рецепт в принятом ответе на этот вопрос . Резюме:

  1. Переименование запущенной программы в old-mp.exe
  2. Загрузите обновление как mp.exe напрямую
  3. Перезапустить программу

Это прекрасно работает для Windows XP. На Vista есть проблема, так как пользователь должен запустить программу от имени администратора, чтобы это работало. Щелкнув правой кнопкой мыши и выбрав «Запуск от имени администратора», возможно, над головами моих пользователей ... Кто-нибудь знает способ обойти это? Мне очень нравится простой метод обновления.

1 Ответ

2 голосов
/ 09 января 2009

Простой вариант - включить манифест, указывающий, что приложению необходимы права администратора. Тогда Vista автоматически запросит повышение прав. Манифест должен выглядеть примерно так:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
   <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="ApplicationName" type="win32"/>
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
      <security>
         <requestedPrivileges>
            <requestedExecutionLevel level="requireAdministrator"/> 
         </requestedPrivileges>
      </security>
   </trustInfo>
</assembly>

Вы можете использовать инструмент mt.exe, чтобы добавить его в существующее приложение.

В качестве альтернативы вы можете перезапустить программу с правами администратора непосредственно перед фактическим обновлением. Таким образом, пользователю не нужно будет всегда работать с правами администратора - только при обновлении.

...