Z wnętrza pliku wsadowego chciałbym sprawdzić, czy pracuję z uprawnieniami administratora / podwyższonymi.
Nazwa użytkownika nie zmienia się po wybraniu opcji „Uruchom jako administrator”, więc to nie działa.
Gdyby istniało powszechnie dostępne polecenie, które nie ma żadnego skutku, ale wymaga uprawnień administratora, mógłbym je uruchomić i sprawdzić, czy nie ma kodu błędu, aby przetestować uprawnienia. Do tej pory nie znalazłem takiego polecenia. Polecenia, które znalazłem, wydają się zwracać pojedynczy, niespecyficzny kod błędu, który może wskazywać cokolwiek, i są podatne na awarie z różnych powodów.
Zależy mi tylko na Windows 7, chociaż obsługa wcześniejszych systemów operacyjnych byłaby fajna.
windows
command-line
cmd
Jeff
źródło
źródło
echo > somefile
wejścia do katalogu, który wymagałby uprawnień administratora. dałoby to plik jako efekt uboczny, ale możesz sprawdzić, czy nie ma kolizji i utworzyć unikalną nazwę pliku jako obejście.Odpowiedzi:
DODATEK : W systemie Windows 8 to nie zadziała; zamiast tego zobacz tę doskonałą odpowiedź .
Znalazłem to rozwiązanie tutaj: http://www.robvanderwoude.com/clevertricks.php
Zakładając, że to nie zadziała, a ponieważ mówimy o Win7, możesz użyć następującego programu w Powershell, jeśli jest to odpowiednie:
Jeśli nie (i prawdopodobnie nie, ponieważ jawnie zaproponowałeś pliki wsadowe), możesz napisać powyższe w .NET i zwrócić kod zakończenia z exe na podstawie wyniku do użycia przez plik wsadowy.
źródło
AT
nie działa na Windows 8, ale znalazłem lepsze rozwiązanie. Opublikowałem to jako odpowiedź na inne pytanie, tutaj: stackoverflow.com/questions/4051883/… .ping
wymienić brakującesleep
:)Ta sztuczka wymaga tylko jednego polecenia: wpisz
net session
w wierszu polecenia.Jeśli NIE jesteś administratorem , otrzymasz wiadomość o odmowie dostępu.
Jeśli jesteś administratorem , otrzymujesz inną wiadomość, najczęściej:
Z MS Technet :
źródło
There are no entries in the list.
w systemie Windows 10 Pronet session >nul 2>&1 || (echo not admin&goto :eof)
Podoba mi się sugestia Rushyo dotycząca korzystania z AT, ale to jest inna opcja:
Takie podejście pozwoliłoby również na rozróżnienie między administratorem niebędącym administratorem a administratorem bez podwyższonego poziomu uprawnień, gdybyś chciał. Administratorzy bez uprawnień nadal mają BUILTIN \ Administrators na liście grup, ale nie jest ona włączona.
Jednak to nie zadziała w niektórych systemach językowych innych niż angielski. Zamiast tego spróbuj
(To powinno działać w systemie Windows 7, ale nie jestem pewien co do wcześniejszych wersji).
źródło
whoami/groups
a potem ręczne skanowanie wierszy. Nie zajęłoby to zbyt dużo czasu, a polecenie pasuje do twojego mózgu.Prawie to, co inni umieścili wcześniej, ale jako jedna linijka, którą można umieścić na początku polecenia wsadowego. (Cóż, zwykle po wyłączeniu @echo.)
źródło
Najłatwiejszym sposobem na to w systemie Vista, Win 7 i nowszych jest wyliczenie grup tokenów i wyszukanie aktualnego poziomu integralności (lub adresu administratora, jeśli ważne jest tylko członkostwo w grupie):
Sprawdź, czy biegamy na podwyższonym poziomie:
Sprawdź, czy należymy do lokalnych administratorów:
Sprawdź, czy należymy do administratorów domeny:
Poniższy artykuł zawiera listę identyfikatorów SID na poziomie integralności używanych w systemie Windows: http://msdn.microsoft.com/en-us/library/bb625963.aspx
źródło
Oto niewielka modyfikacja odpowiedzi Harry'ego, która koncentruje się na podwyższonym statusie; Używam tego na początku pliku install.bat:
To zdecydowanie zadziałało i zasada wydaje się być rozsądna; od Chrisa Jacksona z MSFT :
źródło
rozwiązanie:
nie działa pod Windows 10
dla wszystkich wersji systemu Windows można to zrobić:
źródło
Przeczytałem wiele (większość?) Odpowiedzi, a następnie opracowałem plik bat, który działa dla mnie w Win 8.1. Pomyślałem, że się tym podzielę.
Mam nadzieję, że ktoś uzna to za przydatne :)
źródło
Wersja „not-a-one-liner” https://stackoverflow.com/a/38856823/2193477
źródło
Wiem, że jestem naprawdę spóźniony na tę imprezę, ale oto moja jedna linijka do ustalenia administracji.
Nie polega na poziomie błędu, tylko na
systeminfo
:Zwraca tak lub nie, w zależności od statusu administratora użytkownika ...
Ustawia również wartość zmiennej „admin” odpowiednio na tak lub nie.
źródło
Jeśli pracujesz jako użytkownik z prawami administratora, zmienna środowiskowa SessionName NIE zostanie zdefiniowana i nadal nie masz uprawnień administratora podczas uruchamiania pliku wsadowego.
Powinieneś użyć polecenia „net session” i poszukać kodu powrotu błędu „0”, aby zweryfikować uprawnienia administratora.
Przykład; - pierwsza instrukcja echa to znak dzwonka
net session >nul 2>&1 if not %errorlevel%==0 (echo echo You need to start over and right-click on this file, echo then select "Run as administrator" to be successfull. echo.&pause&exit)
źródło
Oto prosta metoda, której używałem w systemach Windows 7 do Windows 10. Po prostu używam polecenia „IF EXIST”, aby sprawdzić folder Windows \ System32 \ WDI \ LogFiles. Folder WDI istnieje w każdej instalacji systemu Windows począwszy od co najmniej 7 i wymaga uprawnień administratora, aby uzyskać do niego dostęp. Folder WDI zawsze zawiera folder LogFiles. Zatem uruchomienie „IF EXIST” w folderze WDI \ LogFiles zwróci wartość „prawda”, jeśli jest uruchomiona jako administrator, i „fałsz”, jeśli nie zostanie uruchomiona jako administrator. Można tego użyć w pliku wsadowym, aby sprawdzić poziom uprawnień i przejść do dowolnych poleceń na podstawie tego wyniku.
Oto krótki fragment przykładowego kodu:
Należy pamiętać, że ta metoda zakłada, że domyślne uprawnienia zabezpieczeń nie zostały zmodyfikowane w folderze WDI (co jest mało prawdopodobne w większości sytuacji, ale należy zapoznać się z zastrzeżeniem nr 2 poniżej). Nawet w takim przypadku wystarczy zmodyfikować kod, aby sprawdzić, czy nie ma innego wspólnego pliku / folderu, który wymaga dostępu administratora (System32 \ config \ SAM może być dobrym alternatywnym kandydatem) lub możesz nawet utworzyć własny specjalnie do tego celu cel, powód.
Istnieją jednak dwa zastrzeżenia dotyczące tej metody:
Wyłączenie UAC prawdopodobnie przełamie ten prosty fakt, że i tak wszystko zostanie uruchomione jako administrator.
Próba otwarcia folderu WDI w Eksploratorze Windows, a następnie kliknięcie przycisku „Kontynuuj” po wyświetleniu monitu spowoduje dodanie stałych praw dostępu do tego konta użytkownika, łamiąc w ten sposób moją metodę. W takim przypadku można to naprawić, usuwając konto użytkownika z uprawnień zabezpieczeń folderu WDI. Jeśli z jakiegoś powodu użytkownik MUSI mieć dostęp do folderu WDI za pomocą Eksploratora Windows, musiałbyś zmodyfikować kod, aby sprawdzić inny folder (jak wspomniano powyżej, utworzenie własnego specjalnie w tym celu może być dobrym wyborem) .
Tak więc, co prawda, moja metoda nie jest idealna, ponieważ można ją zepsuć, ale jest to stosunkowo szybka metoda, która jest łatwa do wdrożenia, jest równie kompatybilna ze wszystkimi wersjami Windows 7, 8 i 10 i pod warunkiem, że będę pamiętać o wspomnianych zastrzeżeniach był dla mnie w 100% skuteczny.
źródło
Działa dla Win7 Enterprise i Win10 Enterprise
źródło