Força um programa a ser executado * sem * privilégios de administrador ou UAC?

113

Existe alguma maneira que eu possa forçar um programa que normalmente requer privilégios de administrador (via UAC) para executar sem eles? (isto é: sem prompt do UAC e sem acesso ao sistema .)

Adicionado: sem modificar o próprio executável.

Apesar da resposta de James, eu encontrei algumas maneiras que podem quase ser feitas:

  1. Ao modificar o executável, posso remover a entrada trustInfo do manifesto (ou o manifesto totalmente, para que eu possa usar uma entrada externa), permitindo que o programa seja iniciado sem o UAC. Infelizmente, isso modifica o executável, portanto, ele sai logo após devido a um teste de soma de verificação interna.
  2. Ao usar o Process Explorer, posso iniciá-lo como um usuário limitado. No entanto, isso parece limitá-lo significativamente mais do que eu gostaria (ele é executado como o Modo Protegido IE e, portanto, pode acessar significativamente menos do que o meu usuário padrão não elevado pode).
por Andrew Russell 04.08.2010 / 15:49

9 respostas

68
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker]
@="Run without privilege elevation"

[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker\command]
@="cmd /min /C \"set __COMPAT_LAYER=RUNASINVOKER && start \"\" \"%1\"\""

Salve este texto em <name_of_file>.reg e adicione-o ao Registro do Windows. (Dê um duplo clique nele deve fazer o truque.)

Depois, clique com o botão direito do mouse no aplicativo que você deseja executar sem privilégios administrativos e selecione "Executar sem elevação de privilégio".

Em alguns casos - pequena quantidade de 0,1% dos programas pode perguntar duas vezes sobre o prompt do UAC.

    
por 18.07.2012 / 17:20
48

Salvar em nonadmin.bat :

cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %1"

Agora você pode arrastar e soltar programas para executá-los sem administração.

Isso não requer privilégios de administrador, pois a alteração dessa chave de registro é necessária. Além disso, você não vai bagunçar o menu de contexto.

Com base na resposta do Vom

Atualização: Agora deve funcionar com programas que também tenham espaços no nome.

    
por 02.10.2015 / 13:27
33

Espero não estar muito atrasado para a festa, mas estava procurando uma pergunta semelhante e, sem ver uma resposta, descobri que o comando 'builtin RunAs ' do Windows, quando executado como administrador, pode fazer isso com /trustlevel switch.

RUNAS /trustlevel:<TrustLevel> program

/showtrustlevels  displays the trust levels that can be used
                  as arguments to /trustlevel.
/trustlevel       <Level> should be one of levels enumerated
                  in /showtrustlevels.

Isso funcionou no meu caso. Ironicamente, iniciar um programa explicitamente sem elevação requer um prompt de comando elevado . Vai saber. :) Espero que ajude você.

    
por 05.01.2012 / 09:15
13

Se você tem um aplicativo específico que deseja sempre executar sem o UAC, você pode direcioná-lo com o Registro (adicione o texto a um arquivo REG e importe-o para o Registro):

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\example\application.exe"="RunAsInvoker"

Ao contrário desta resposta , esta solução não requer nenhum clique alternativo ou alteração na interação do usuário.

A Microsoft chama esse processo de adicionar o RunAsInvoker "Compatibility Shim" .

    
por 09.09.2016 / 22:16
3

Eu resolvi esse problema hoje usando o kit de ferramentas de personalização de aplicativos MS.

Eu segui as instruções em um artigo de república de tecnologia .

Basicamente:

1) você obtém o kit de ferramentas do MS aqui .

2) Clique em Corrigir

3) Escolha a opção RunAsInvoker

4) Clique com o botão direito na correção e escolha Instalar

    
por 18.05.2011 / 03:05
1

Enquanto em sua pergunta Andrew afirmou que o seguinte não funcionou bem:

By modifying the executable I can remove the trustInfo entry from the manifest (or the manifest entirely, so I can use an external one), allowing the program to start without UAC. Unfortunately this modifies the executable, so it exits shortly after due to an internal checksum test.

Consegui modificar um arquivo de manifesto externo para o software que eu estava usando e alterar

<ms_asmv2:requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

para

<ms_asmv2:requestedExecutionLevel level="asInvoker" uiAccess="false" />

Acontece que o software que eu estava usando realmente não exigia direitos de administrador, então eu era capaz de executá-lo em uma conta de usuário padrão sem UAC ou senhas de administrador. Obrigado!

    
por 21.07.2013 / 04:56
-1

Se for um arquivo exe de instalação (instalação) que está exigindo privilégio de administração, há um truque para executá-lo sem acesso elevado:

Se o nome do arquivo contiver palavras como setup ou install , o windows o executará vigorosamente com acesso elevado, mesmo que não precise de acesso elevado:

    
por 25.01.2019 / 12:54
-1

Eu consertei esse problema mudando as permissões na pasta que continha o programa.

Eu adicionei cada usuário que executará esse programa e deu a eles privilégios de "controle total". Isso resolveu o problema e deixei o "run as admin" desmarcado.

Não tenho preocupações de segurança para os usuários que executarão o programa.

    
por 20.04.2012 / 06:28
-4

Não, se um programa exigir o UAC, ele tentará acessar algo fora de sua sandbox. O programa não será executado corretamente sem o acesso elevado.

Se você quiser apenas se livrar da notificação, poderá desabilitar o UAC.

Desative o UAC no Windows Vista: Clique em Iniciar, digite "usuário". Clique em "Contas de Usuário". Na janela que aparece, clique em "Configurações de Controle de Conta de Usuário" e depois em Desligar o UAC.

Desative o UAC no Windows 7: Iniciar, digite "usuário". Clique em "Configurações do Controle de Conta de Usuário". Arraste a barra de opções até a parte inferior para "Nunca notificar".

    
por 04.08.2010 / 16:09