Czasami warto zaewidencjonować plik wsadowy, jeśli został uruchomiony z wiersza polecenia z podwyższonym poziomem uprawnień lub jako administrator. Chciałbym podzielić się z wami sztuczką, której używam do tego. Główna idea mojej sztuczki opiera się na wartości specjalnej zmiennej środowiskowej% errorlevel%, która przechowuje kod zakończenia dla większości aplikacji i poleceń konsoli. Zobaczmy to w akcji.
Reklama
Gdy jakaś aplikacja konsolowa zakończy swoje zadanie poprawnie, zmienna% errrorlevel% przechowuje wartość 0 jako swoją wartość.
Otwórz nowe wystąpienie wiersza polecenia i uruchom polecenie „dir”. Następnie wypisz wartość% errorlevel% za pomocą polecenia „echo”:
dir echo% errorlevel%
Wytworzy 0 jako wyjście.
Teraz spróbujmy wykonać polecenie, które wymaga podniesienia uprawnień, ze zwykłego okna wiersza polecenia bez podwyższenia uprawnień. Na przykład spróbujmy Otwórz pliki polecenie wymagające uprawnień administratora.
Jeśli wydrukujesz wartość% errorlevel%, nie będzie ona równa 0, ponieważ polecenie openfiles nie pokaże otwartych plików bez uprawnień administratora.
Jeśli jednak uruchomisz go z wiersza polecenia z podwyższonym poziomem uprawnień ( oto jak otworzyć monit cmd administratora ), pokaże otwarte pliki i zwróci 0, zgodnie z oczekiwaniami.
Korzystając z tej funkcji, można zaimplementować proste sprawdzenie w pliku wsadowym:
@echo off openfiles> NUL 2> & 1 jeśli NIE% ERRORLEVEL% EQU 0 goto NotAdmin echo Witaj z wiersza poleceń z podwyższonym poziomem uprawnień goto End: NotAdmin echo Ten wiersz polecenia NIE PODWYŻSZONY: Koniec
Zauważ, że używam przekierowania wyjścia, aby ukryć jakiekolwiek wyjście z polecenia openfiles. W części „> NUL 2> & 1” domyślne wyjście polecenia jest przekierowywane donikąd (NUL), a wyjście błędu jest przekierowywane na standardowe wyjście, tj. Również do NUL.
Zamiast polecenia openfiles można użyć dowolnego polecenia, które wymaga podniesienia uprawnień, na przykład sesja sieciowa Komenda.
Otóż to.