Como faço para configurar meu aplicativo para ser executado como administrador automaticamente?

9

Eu criei um arquivo de patch com um executável dentro dele usando o recurso Winrar SFX.
Depois de executar o arquivo SFX e a extração terminar, meu arquivo executável nunca será executado porque não possui privilégios de administrador. Estou pensando em como posso conceder acesso de administrador a esse arquivo de alguma maneira de programação (como um arquivo em lotes).

Eu sei que posso clicar com o botão direito do mouse, ir para "Propriedades", escolha a guia "Compatibilidade" e marque a caixa "Executar como administrador".

O problema é que os usuários que farão o download desse patch não o conhecem (e meu exe só é executado quando você clica com o botão direito do mouse e escolhe "Abrir como administrador", caso contrário, ele nunca abrirá nem exibirá o pop-up do UAC).

Eu tentei algumas maneiras, como o "Elevador Elevador (me eleva)", etc, mas na verdade estou procurando algo mais simples do que.
Eu só preciso fazer o exe sempre funcionar como administrador.

Rafael Vidal
fonte
2
Nota para mods: Nenhuma migração para o SO é necessária aqui.
Karan

Respostas:

15

O que você precisa fazer é incorporar um manifesto de aplicativo no EXE.

  1. Salve o seguinte como um arquivo de texto chamado App.exe.manifest :

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
        <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
            <security>
                <requestedPrivileges>
                    <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
                </requestedPrivileges>
            </security>
        </trustInfo>
    </assembly>
    
  2. Faça o download do Windows SDK.

  3. Dentro, você encontrará o mt.exe, ou seja, a Manifest Tool . Chame da seguinte maneira:

    mt.exe -manifest "App.exe.manifest" -outputresource:"App.exe";#1
    
  4. Se não houver erros, você estará cometendo. Você pode excluir o arquivo de manifesto e distribuir apenas o EXE. A execução deve solicitar o acesso de administrador automaticamente sempre.

Fonte

Karan
fonte
Eu vou testar. A propósito, é possível tornar esse "Manifesto" um pouco melhor? Gosta de executá-lo como administrador sem solicitar acesso de administrador? Obrigado
Rafael Vidal
Significa que você deseja elevar silenciosamente e obter acesso de administrador? A menos que você desative o UAC, isso não é possível; caso contrário, qual seria o objetivo do UAC e você não acha que todo malware faria isso?
quer
Entendo o seu ponto de vista, mas sei que existem maneiras ... não é fácil, com certeza, mas existem, como o programa "Elevate Me" ... De qualquer forma, fazer o exe funcionar como administrador é o suficiente por enquanto. Realmente agradeço antecipadamente
Rafael Vidal
11
Todos esses programas para ignorar o prompt de elevação usam o conhecido truque Agendador de Tarefas, que requer acesso de administrador. Como você deseja fazer isso em qualquer PC arbitrário onde o SFX é executado, não é possível criar silenciosamente a tarefa agendada sem o consentimento do usuário padrão. De fato, se algum programa fizesse isso no meu PC (crie silenciosamente uma tarefa agendada para ignorar o UAC), eu o classificaria instantaneamente como malware e o excluiria.
Karan
Karan muito bom, funcionou perfeitamente. Gostaria de sugerir que você adicione a resposta a necessidade de executar CMD como ADMIN, caso contrário não vai funcionar ... Obrigado novamente
Rafael Vidal
2

Ao criar seu arquivo, solicite acesso administrativo .insira a descrição da imagem aqui

MDMoore313
fonte
MDMoore313 Obrigado pelo seu tempo, mas acho que não me expliquei bem. Não preciso executar o SFX como administrador. Eu preciso executar um arquivo específico como admin ("my_app.exe"), localizado dentro do arquivo SFX. O ponto é que clicar duas vezes nesse arquivo não fará com que seja executado. A única maneira de executá-lo é o botão direito e escolha "Executar como Administrador"
Rafael Vidal
@RafaelVidal o SFX inicia seu aplicativo? Nesse caso, seu aplicativo terá direitos de administrador. Caso contrário, atualizarei minha resposta.
MDMoore313
Não, ele não inicia o aplicativo. O usuário tem que fazê-lo manualmente, então ele pode marcar a opção "Executar como Adminsitrator" caixa no "Compatibilidade" guia ou clique com o botão direito em "Executar como Administrador" menu de contexto
Rafael Vidal
@RafaelVidal, existe uma razão para você não querer que o WinRAR inicie o exe e faça com que o usuário execute o próprio SFX? parece que isso atingiria o mesmo objetivo e resolveria seu problema de administrador. Se você ainda está focada em sinalizar o programa seja executado como administrador, você tem mais chances de uma resposta sobre estouro de pilha (flag sua pergunta para a migração)
MDMoore313
O SFX inicia o arquivo, mas os usuários podem executá-lo sozinhos mais tarde e, então, não haverá SFX para executá-lo. É por isso que a necessidade exe a ser sinalizados como "Executar como administrador"
Rafael Vidal