Adicionando programaticamente o sinalizador “Executar este programa como administrador” ao executável?

0

Eu preciso distribuir um programa para usuários do Windows (XP, 7, 8). O programa requer direitos administrativos porque adiciona e remove rotas, entre outras coisas. O problema é que o sinalizador "Executar este programa como administrador" no executável não é preservado, então acho que poderia programaticamente adicionar isso usando um script em lote ou algo semelhante em uma espécie de script de configuração.

Esta é a abordagem correta? Se sim, como adicionar essa bandeira?

    
por user135361 05.08.2013 / 11:06

1 resposta

7

Você pode incluir um arquivo de manifesto nos recursos do executável. Isso fará com que o Windows exija privilégios de administrador para esse arquivo em todos os sistemas.

Você pode abrir qualquer instalador com o Resource Hacker e encontrará um arquivo XML como este:

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <ms_asmv2:trustInfo xmlns:ms_asmv2="urn:schemas-microsoft-com:asm.v2">
    <ms_asmv2:security>
      <ms_asmv2:requestedPrivileges>
        <ms_asmv2:requestedExecutionLevel level="requireAdministrator" uiAccess="false"></ms_asmv2:requestedExecutionLevel>
      </ms_asmv2:requestedPrivileges>
    </ms_asmv2:security>
  </ms_asmv2:trustInfo>
</assembly>

Esse é o arquivo de manifesto. Você precisa de algo assim compilado em recursos.

    
por 05.08.2013 / 12:02