Questo funziona per me su tutte le piattaforme, incluso Windows 10. Le mie esigenze sono semplici, forse puoi adattare l'approccio se hai bisogno di energia .
Ho trovato un piccolo script chiamato, sudo.cmd
chiamato per il comando sudo Linux. Funziona abbastanza bene, pensa. Ho delineato i requisiti, i passaggi da seguire e lo script è quasi in fondo con un esempio. Prima una parola di avvertimento.
ATTENZIONE : il comando viene eseguito nella directory di sistema di Windows per impostazione predefinita. Dovrai prima andarecd
in un posto sicuro.
requisiti :
- Esegui il comando con amministratore come privilegiato da Windows .CMD
o dalla shell cmd.
- richiedono i normali controlli dei privilegi di Windows sul comando
- In altre parole, il comando NON funzionerà se non ho già effettuato l'accesso con un account privilegiato.
- Esegui il comando con l'autorizzazione di amministratore e continua quando viene chiamato all'interno di uno script. Quindi attendere il completamento del comando.
- Sii semplice, quindi funzionerà sempre
- Non è necessario inserire una password ogni volta, se ho già effettuato l'accesso.
- Un metodo migliore sarebbe se posso inserire la password una volta come fa il vero
sudo
comando su Linux.
soluzione :
- Creare uno script di comandi per eseguire tutti gli argomenti passati,
sudo.cmd
- Creare una scorciatoia di Windows per il nome dello script di comando che:
sudo.lnk
.
- Inserisci la
sudo
scorciatoia nel PERCORSO di Windows in modo che possa essere visto.
- Modifica le proprietà della scorciatoia, rendi
Start in:
vuoto il percorso.
- Fare clic sul
Advanced
pulsante [ ] - VerificaRun as Administrator
- Abilita le scorciatoie nel tuo percorso di Windows, usa la variabile d'ambiente PATHEXT, vale a dire.
d:> echo %PATHEXT%
.lnk;.EXE;.CMD;.BAT;.COM
Quando si digita sudo dir
sulla riga di comando, Windows mostrerà il
User Account Control
Do you want to allow this app to make changes to this device?
[YES] [NO]
Pop-up di controllo accessi. Se fai clic su "[ NO
]" non accadrà nulla. Windows mostrerà un " Access is denied.
" messaggio.
Quando si fa clic su "[ YES
]", il comando di directory viene eseguito con un privilegio elevato. Ovviamente probabilmente vuoi qualcosa di più interessante come l'arresto o la query su un servizio:
sudo sc query SDRSVC
SDRSVC è il nome del servizio per "Servizio di backup di Windows", ciò mostra quanto segue in una finestra Cmd separata:
[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 . . .
La sudo.cmd
sceneggiatura stessa è molto semplice. Come ho già detto, le mie esigenze sono semplici. Voglio solo interrompere e avviare i servizi mentre distribuisco il codice per i test.
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
Il pause
comando attende che tu riveda i risultati. Se estrai pause
la finestra di amministrazione si chiude e non sai se il comando ha funzionato o meno. Il ERRORLEVEL
dal comando viene restituito pure.