Parece que este utilitário - Início oculto - fará o que você deseja se usar o / interruptor uac. Aqui está um exemplo de linha de comando:
hstart /UAC "notepad.exe"
Isto irá mostrar o diálogo do UAC em vez de pedir uma senha como o runas.
Existe uma maneira de executar um programa ou comando com direitos elevados quando já estou em uma linha de comando não elevada?
Exatamente a mesma ação que seria executada quando eu clico no atalho do programa e seleciono 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 UAC .
Parece que este utilitário - Início oculto - fará o que você deseja se usar o / interruptor uac. Aqui está um exemplo de linha de comando:
hstart /UAC "notepad.exe"
Isto irá mostrar o diálogo do UAC em vez de pedir uma senha como o runas.
Há uma maneira de fazer isso no PowerShell:
PS> Start-Process powershell -Verb runAs
Com base em "> answer , você pode:
su.bat
em algum lugar em seu% PATH% padrão, com o seguinte one-liner: @powershell start -verb runas %*
Agora você pode emitir function su {start -verb runas @args}
em qualquer shell!
RunAdmin é um pequeno utilitário (150Kb) que permite que você execute um programa a partir da linha de comando com direitos elevados (ele mostrará o UAC). E em frente ao Hidden Start é livre.
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 criei um pequeno script chamado sudo.cmd
chamado para o comando sudo do Linux. Funciona bem o suficiente, pensa. Eu descrevi os requisitos, os passos a seguir e o script está próximo do 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 cd
em algum lugar seguro primeiro.
requisitos :
sudo
real no Linux. solução :
sudo.cmd
sudo.lnk
. sudo
no seu PATH do Windows para que possa ser visto. Start in:
vazio. Advanced
] - verifique Run as Administrator
d:> echo %PATHEXT%
.lnk;.EXE;.CMD;.BAT;.COM
Quando você digita sudo dir
na linha de comando, o Windows mostrará o
User Account Control
Do you want to allow this app to make changes to this device?
[YES] [NO]
Pop-up de controle de acesso. Se você clicar em "[ NO
]", nada acontecerá. O Windows mostrará uma mensagem " Access is denied.
".
Quando você clica em "[ YES
]", o comando de diretório é executado com um privilégio elevado. Claro que você provavelmente quer algo mais interessante, como parar ou consultar um serviço:
sudo sc query SDRSVC
SDRSVC é o nome do serviço para "Serviço de Backup do Windows", isso mostra o seguinte em uma janela separada do Cmd:
[sudo]
administrator
---------------
sc query SDRSVC
SERVICE_NAME: SDRSVC
TYPE : 10 WIN32_OWN_PROCESS
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
[done]
Press any key to continue . . .
O script sudo.cmd
é muito básico. Como eu disse, minhas necessidades são simples. Eu só quero parar e iniciar serviços enquanto implico código para testes.
sudo.cmd
:
@echo off
@rem sudo.cmd
cd /d %temp%
@echo.
@echo. administrator
@echo. ---------------
cd
@echo.
@rem _________________________________________________
@rem -- Print usage . . .
@if [""] ==["%~1"] goto USAGE
@if /i ["--HELP"]==["%~1"] goto USAGE
@rem _________________________________________________
@rem
@echo. %*
@rem
%*
@rem
set EXIT_STATUS=%ERRORLEVEL%
@rem -- -- -- -- --
@echo.
@echo. [done]
@rem ______________________________________________________
:Exit
@echo.
@pause
exit /b %EXIT_STATUS%
@rem ______________________________________________________
:USAGE
@echo.
@echo ^Usage:
@echo. sudo ^<complete command line^>
@echo.
@echo. Attempts to rune the: ^<complete command line^>
@echo. under Administrator priviliges. Relies on Windows
@echo. prompt for elevated privileges.
@rem ______________________________________________________
@goto Exit
O comando pause
espera que você revise os resultados. Se você tirar pause
da janela de administração fecha e você não sabe se o comando funcionou ou não. O ERRORLEVEL
do comando é retornado também.
Dê uma olhada no Start ++ - ele tem essa funcionalidade junto com muitas outras coisas úteis. Para rodar com o prompt do UAC, simplesmente use sudo
e o nome do seu programa na linha de comando, como mostrado aqui:
Aquiestãoalgunsoutrosrecursos(vocêtambémpodeadicionarosseuspróprios):
Isso funciona para o Windows 10 e não foi testado em outras versões do Windows.
Um exemplo para abrir o bloco de notas com direitos de administrador do cmd.exe que inicia o powershell que solicita as permissões elevadas.
C:\>start powershell -command "&{start-process -filepath notepad -verb RunAs}"
Isso lhe dará 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 de hosts com o bloco de notas seria:
C:\>start powershell -command "&{start-process -filepath notepad 'C:\Windows\System32\drivers\etc\hosts' -verb RunAs}"
Mais informações: link
Você pode definir __COMPAT_LAYER = RunAsAdmin Então os comandos serão executados em um cmd elevado separado
exemplo bat:
;Run next command elevated to Admin.
set __COMPAT_LAYER=RunAsAdmin
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Group Policy\{35378EAC-683F-11D2-A89A-00C04FBBCFA2}" /t REG_DWORD /v "NoBackgroundPolicy" /d "1"
;Disable elevation
set __COMPAT_LAYER=
;continue non elevated
reg add "HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Internet Explorer\Main" /t REG_SZ /v "Start Page" /d "https://www.google.com" /f
Todas as opções do Modo de Compatibilidade estão listadas no MS Application Compatibility Toolkit.