Depois que meu programa é instalado em uma máquina cliente, como forço meu programa a ser executado como administrador no Windows 7?
876
Depois que meu programa é instalado em uma máquina cliente, como forço meu programa a ser executado como administrador no Windows 7?
Respostas:
Você deseja modificar o manifesto incorporado ao programa. Isso funciona no Visual Studio 2008 e superior: Projeto + Adicionar novo item, selecione "Arquivo de manifesto do aplicativo". Mude o
<requestedExecutionLevel>
elemento para:O usuário recebe o prompt do UAC quando inicia o programa. Use sabiamente; sua paciência pode se desgastar rapidamente.
fonte
Adicionar um
requestedExecutionLevel
elemento ao seu manifesto é apenas metade da batalha; você deve se lembrar que o UAC pode ser desligado. Se for, você deve executar a verificação da maneira antiga e abrir uma caixa de diálogo de erro se o usuário não for administrador(ligue
IsInRole(WindowsBuiltInRole.Administrator)
para o seu tópicoCurrentPrincipal
).fonte
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
bemIsInRole
Anders fala.As etapas detalhadas são as seguintes.
Observe que, usando esse código, você precisa desativar as configurações de segurança do ClickOnce; para isso, entre em Propriedades -> Segurança -> Segurança do ClickOnce
fonte
New Item...
não é uma opção no meu projeto do Serviço Instalador. Como eu adicionaria o manifesto do aplicativo? Posso adicioná-lo ao meu projeto principal, mas não é o instalador.Eu implementei algum código para fazê-lo manualmente:
fonte
Você pode incorporar um arquivo de manifesto no arquivo EXE, o que fará com que o Windows (7 ou superior) sempre execute o programa como administrador.
Você pode encontrar mais detalhes na Etapa 6: Criar e incorporar um manifesto de aplicativo (UAC) (MSDN).
fonte
Enquanto trabalhava no Visual Studio 2008, clique com o botão direito do mouse
Project -> Add New Item
e escolhaApplication Manifest File
.No arquivo de manifesto, você encontrará a tag
requestedExecutionLevel
e poderá definir o nível para três valores:<requestedExecutionLevel level="asInvoker" uiAccess="false" />
OU
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
OU
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
Para definir seu aplicativo para ser executado como administrador, você deve escolher o meio.
fonte
Conforme
convém adicionar um manifesto de aplicativo se ainda não tiver um ou não souber como adicioná-lo. Como alguns projetos não adicionam automaticamente um arquivo de manifesto separado, primeiro vá às propriedades do projeto, navegue até o Aplicativo guia e verifique se o seu projeto não está excluindo o manifesto na parte inferior da torneira.
fonte
No Visual Studio 2010, clique com o botão direito do mouse no nome do seu projeto. Aperte "View Windows Settings", isso gera e abre um arquivo chamado "app.manifest". Nesse arquivo, substitua "asInvoker" por "requireAdministrator", conforme explicado nas seções comentadas no arquivo.
fonte
Outra maneira de fazer isso, apenas no código, é detectar se o processo está sendo executado como administrador, como na resposta do @NG. . E, em seguida, abra o aplicativo novamente e feche o atual.
Uso esse código quando um aplicativo precisa apenas de privilégios de administrador quando executado sob certas condições, como quando se instala como um serviço. Portanto, ele não precisa funcionar como administrador o tempo todo, como as outras respostas o forçam também.
Observe no código abaixo
NeedsToRunAsAdmin
um método que detecta se, nas condições atuais, são necessários privilégios de administrador. Se isso retornarfalse
o código não se elevará. Essa é uma grande vantagem dessa abordagem em relação às outras.Embora esse código tenha as vantagens mencionadas acima, ele precisa se reiniciar como um novo processo que nem sempre é o que você deseja.
fonte
runas
como administrador de um usuário não administrador; caso contrário, ele será aberto silenciosamente com as permissões de usuário atual (verificadas no Windows 7 de 64 bits). Pelo que sei, a única coisa que você pode fazer com o UAC desativado e o direito de administrador está em falta é interromper a execução em um momento adequado.Você pode criar o manifesto usando o ClickOnce Security Settings e depois desabilitá-lo:
Depois de clicar nele, um arquivo será criado na pasta de propriedades do projeto chamada app.manifest, uma vez criado, você pode desmarcar a opção
Enable ClickOnce Security Settings
opçãoAbra esse arquivo e altere esta linha:
para:
Isso fará com que o programa exija privilégios de administrador.
fonte
Esta é uma versão simplificada desta resposta , acima de @NG
fonte
Clique com o botão direito do mouse no executável, vá para Propriedades> Compatibilidade e marque a caixa 'Executar este programa como administrador'.
Se você deseja executá-lo como administrador para todos os usuários, faça o mesmo em 'alterar configuração para todos os usuários'.
fonte