Działa to na wszystkich platformach, w tym na systemie Windows 10. Moje potrzeby są proste, być może możesz dostosować podejście, jeśli potrzebujesz zasilania .
Wymyśliłem mały skrypt o nazwie, sudo.cmd
nazwany dla polecenia sudo systemu Linux. Działa wystarczająco dobrze, jak myśli. Naszkicowałem wymagania, kroki, które należy wykonać, a skrypt jest na dole z przykładem. Najpierw słowo ostrzeżenia.
OSTRZEŻENIE : Domyślnie polecenie jest uruchamiane w katalogu systemu Windows. cd
Najpierwbędziesz chciał znaleźć sięw bezpiecznym miejscu.
wymagania :
- Uruchom polecenie z Administratorem uprawnionym z systemu Windows .CMD
lub powłoki cmd.
- wymagają normalnej kontroli uprawnień systemu Windows do polecenia
- Innymi słowy, polecenie NIE zadziała, dopóki nie zaloguję się na konto uprzywilejowane.
- Wykonaj polecenie z uprawnieniami administratora i kontynuuj po wywołaniu w skrypcie. Poczekaj, aż polecenie się zakończy.
- Bądź prosty, aby zawsze działał
- Nie muszę wprowadzać hasła za każdym razem, jeśli jestem już zalogowany.
- Lepszą metodą byłoby wprowadzenie hasła raz, podobnie jak prawdziwe
sudo
polecenie w systemie Linux.
rozwiązanie :
- Utwórz skrypt poleceń, aby wykonać wszystkie przekazane argumenty,
sudo.cmd
- Tworzenie systemu Windows skrót do nazwy skryptu poleceń IT:
sudo.lnk
.
- Umieść
sudo
skrót w ścieżce systemu Windows, aby był widoczny.
- Edytuj właściwości skrótu,
Start in:
opróżnij ścieżkę.
- Kliknij przycisk [
Advanced
] - SprawdźRun as Administrator
- Włącz skróty na ścieżce systemu Windows, użyj zmiennej środowiskowej PATHEXT, mianowicie.
d:> echo %PATHEXT%
.lnk;.EXE;.CMD;.BAT;.COM
Po wpisaniu sudo dir
w wierszu polecenia system Windows wyświetli
User Account Control
Do you want to allow this app to make changes to this device?
[YES] [NO]
Wyskakujące okienko kontroli dostępu. Jeśli klikniesz „[ NO
]”, nic się nie stanie. System Windows wyświetli komunikat „ Access is denied.
”.
Po kliknięciu „[ YES
]” polecenie katalogu działa z podwyższonym poziomem uprawnień. Oczywiście prawdopodobnie potrzebujesz czegoś bardziej interesującego, takiego jak zatrzymanie lub zapytanie dotyczące usługi:
sudo sc query SDRSVC
SDRSVC to nazwa usługi „Kopia zapasowa systemu Windows”, która pokazuje następujące informacje w osobnym oknie 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 . . .
Sam sudo.cmd
skrypt jest bardzo prosty. Jak powiedziałem, moje potrzeby są proste. Chcę tylko zatrzymać i uruchomić usługi podczas wdrażania kodu do testowania.
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
pause
Komenda czeka, aby przejrzeć wyniki. Jeśli pause
wyjmiesz okno administracyjne, zamknie się i nie wiesz, czy polecenie zadziałało, czy nie. ERRORLEVEL
Z polecenia jest zwracany jako dobrze.