Existe uma maneira de executar um programa ou comando com direitos elevados quando eu já estiver em uma linha de comando não elevada?
Exatamente a mesma ação que seria executada quando eu clicar no atalho do programa e selecione Executar como administrador .
O comando runas provavelmente não é uma solução - ele pede uma senha, mas eu só quero a caixa de diálogo do UAC .
windows
administrator
privileges
Lukas Cenovsky
fonte
fonte
Existe uma maneira de fazer isso no PowerShell:
fonte
powershell -Command "Start-Process 'C:\program.exe' -Verb runAs"
powershell -Command "Start-Process 'gvim' 'c:\windows\system32\drivers\etc\hosts' -Verb runAs"
. Obrigado!$p = Start-Process powershell -Verb runAs -ArgumentList "-Command ``"& { ``$Host.SetShouldExit(123) }``"" -PassThru; $p.ExitCode
Com base Rustam 's resposta , você pode:
su.bat
arquivo em lote em algum lugar do seu% PATH% padrão, com a seguinte linha única:@powershell start -verb runas %*
function su {start -verb runas @args}
Agora você pode emitir
su <command> [parameters]
em qualquer shell!fonte
O RunAdmin é um pequeno utilitário (150 KB) que permite executar um programa na linha de comando com direitos elevados (ele mostrará o UAC). E o oposto do Hidden Start é gratuito.
fonte
Isso funciona para mim em todas as plataformas, incluindo o Windows 10. Minhas necessidades são simples, talvez você possa adaptar a abordagem se precisar de energia .
Eu vim com um pequeno script chamado,
sudo.cmd
nomeado para o comando sudo do Linux. Funciona bem o suficiente para pensar. Descrevi os requisitos, as etapas a seguir e o script está próximo ao final com um exemplo. Primeiro uma palavra de aviso.AVISO : O comando é executado no diretório System do Windows por padrão. Você vai querer um
cd
lugar seguro primeiro.requisitos :
ou no cmd-shell.
sudo
comando real no Linux.solução :
sudo.cmd
sudo.lnk
.sudo
atalho no PATH do Windows para que ele possa ser visto.Start in:
caminho vazio.Advanced
botão [ ] - VerificarRun as Administrator
Quando você digita
sudo dir
na linha de comando, o Windows mostra oPop-up de controle de acesso. Se você clicar em "[
NO
]" nada acontecerá. O Windows mostrará umaAccess is denied.
mensagem " ".Quando você clica em "[
YES
]", o comando do diretório é executado com privilégios elevados. É claro que você provavelmente deseja algo mais interessante, como parar ou consultar um serviço:SDRSVC é o nome do serviço para "Serviço de Backup do Windows", mostra o seguinte em uma janela Cmd separada:
O
sudo.cmd
script em si é muito básico. Como eu disse, minhas necessidades são simples. Eu só quero parar e iniciar serviços enquanto implanto código para teste.sudo.cmd
:O
pause
comando aguarda você revisar os resultados. Se você removerpause
a janela de administração, fechará e não saberá se o comando funcionou ou não. OERRORLEVEL
comando from também é retornado.fonte
Isso funciona no Windows 10, não foi testado com outras versões do Windows.
Um exemplo para abrir o bloco de notas com direitos de administrador no cmd.exe, que inicia o PowerShell, que solicita as permissões elevadas.
Isso fornecerá uma caixa de diálogo do UAC (se ativada) com [Sim] [Não] ou solicitará a senha do administrador.
Outro exemplo para abrir o arquivo hosts com o bloco de notas seria:
Mais informações: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/start-process?view=powershell-6
fonte
-ArgumentList
parâmetro, não apenas parâmetros adicionais para iniciar o processo.Dê uma olhada no Start ++ - ele tem essa funcionalidade, além de muitas outras coisas úteis. Para executar com o prompt do UAC, basta usar
sudo
o nome do seu programa na linha de comando, como mostrado aqui:Aqui estão alguns outros recursos (você também pode adicionar os seus):
fonte
Você pode definir
__COMPAT_LAYER=RunAsAdmin
. Em seguida, os comandos serão executados em um nível elevado separadocmd
.Exemplo
.bat
:Todas as opções do Modo de compatibilidade estão listadas no MS Application Compatibility Toolkit.
fonte
;
como um delimitador de comentários. "Os arquivos em lote não reconhecem o ponto e vírgula e geralmente causam uma mensagem de erro sobre um comando incorreto."