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 umcd
lugar seguro primeiro.
requisitos :
- Execute o comando com o Administrador privilegiado no Windows .CMD
ou no cmd-shell.
- requer as verificações normais de privilégios do Windows no comando
- Em outras palavras, o comando NÃO funcionará, a menos que eu já esteja logado com uma conta privilegiada.
- Execute o comando com permissão de administrador e continue quando chamado dentro de um script. Portanto, aguarde o comando concluir.
- Seja simples, sempre funcionará
- Não é necessário inserir uma senha todas as vezes, se já estiver logado.
- Um método melhor seria se eu pudesse digitar a senha uma vez, assim como o
sudo
comando real no Linux.
solução :
- Crie um script de comando para executar todos os argumentos passados,
sudo.cmd
- Criar um atalho do Windows para o nome do script de comando que:
sudo.lnk
.
- Coloque o
sudo
atalho no PATH do Windows para que ele possa ser visto.
- Edite as propriedades de atalho, deixe o
Start in:
caminho vazio.
- Clique no
Advanced
botão [ ] - VerificarRun as Administrator
- Habilite atalhos no caminho do Windows, use a variável de ambiente PATHEXT, viz.
d:> echo %PATHEXT%
.lnk;.EXE;.CMD;.BAT;.COM
Quando você digita sudo dir
na linha de comando, o Windows mostra 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 Access 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:
sudo sc query SDRSVC
SDRSVC é o nome do serviço para "Serviço de Backup do Windows", mostra o seguinte em uma janela Cmd separada:
[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 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
:
@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 pause
comando aguarda você revisar os resultados. Se você remover pause
a janela de administração, fechará e não saberá se o comando funcionou ou não. O ERRORLEVEL
comando from também é retornado.