Jak zakodować plik BAT, aby zawsze działał w trybie administratora?


149

Mam tę linię w moim pliku BAT:

"Example1Server.exe"

Chciałbym to wykonać w trybie administratora. Jak zmodyfikować kod bat, aby uruchomić to jako administrator?

Czy to jest poprawne? Czy muszę cytować?

runas /user:Administrator invis.vbs Example1Server.exe


Odpowiedzi:


71

Używasz runasdo uruchamiania programu jako określony użytkownik:

runas /user:Administrator Example1Server.exe

6
@karikari: Nazwy takiej jak ta ( Example1Server.exe) nie trzeba umieszczać w cudzysłowie, ale w niektórych innych przypadkach (np. spacje w nazwie :) Example1 Server.exenaprawdę byś ich potrzebowała. Możesz jednak używać cudzysłowów, nawet jeśli nie są potrzebne.
Andriy M,

18
Konto administratora może nie nosić nazwy Administrator
Anders,

9
@Anders: Nie, może nie; Zakładam, że OP może „dostrzec wzór”. To nie była odpowiedź typu plz-give-me-teh-codez: -S Nawiasem mówiąc, powinienem dodać OP może potrzebować bardziej rozbudowanej komendy, takiej jak runas /User:abc "csript myscript.vbs", lub runas /User:abc "cmd /c start ...".
Kerrek SB,

16
Obawiam się, że ta odpowiedź nie jest tym, czego chce 90% odwiedzających, ponieważ jest to nawet trudniejsze niż kliknięcie prawym przyciskiem myszy -> uruchom jako administrator, nawet jeśli jest technicznie poprawna. Sprawdź ponownie inną odpowiedź. To jest dokładnie to, czego większość będzie chciała.
j riv

13
Nie, ta odpowiedź jest technicznie niepoprawna. Uruchomienie jako administrator to nie to samo, co uruchomienie z użytkownikiem, którego nazwa to Administrator, a uprawnienia są różne. Zobacz inną odpowiedź.
Alexander Gelbukh,

370

Druga odpowiedź wymaga podania hasła do konta administratora. Ponadto uruchomienie na koncie w grupie administratorów nie jest tym samym, co uruchomienie z administratorem, zobacz: UAC w Wikipedii

Instrukcje dotyczące systemu Windows 7

Aby działać jako administrator, utwórz skrót do pliku wsadowego.

  1. Kliknij plik wsadowy prawym przyciskiem myszy i kliknij kopiuj
  2. Przejdź do miejsca, w którym chcesz uzyskać skrót
  3. Kliknij prawym przyciskiem myszy tło katalogu
  4. Wybierz Wklej skrót

Następnie możesz ustawić skrót tak, aby działał jako administrator:

  1. Kliknij skrót prawym przyciskiem myszy
  2. Wybierz Właściwości
  3. Na karcie Skrót kliknij Zaawansowane
  4. Zaznacz pole wyboru „Uruchom jako administrator”
  5. Kliknij OK, OK

Teraz po dwukrotnym kliknięciu skrótu pojawi się monit o potwierdzenie UAC, a następnie Uruchom jako administrator (co, jak powiedziałem powyżej, różni się od uruchamiania na koncie w grupie administratorów)

Sprawdź poniższy zrzut ekranu

Zrzut ekranu

Uwaga: jeśli zrobisz to w celu uruchomienia jako administrator, bieżący katalog (ścieżka) nie będzie taki sam jak plik bat. Może to powodować pewne problemy w wielu przypadkach, gdy plik bat odwołuje się do plików względnych obok siebie. Na przykład w moim Windows 7 bieżącym katalogiem będzie SYSTEM32 zamiast lokalizacji pliku bat! Aby to obejść , użyj

cd "%~dp0"

albo lepiej

pushd "%~dp0"

aby upewnić się, że katalog cur znajduje się w tej samej ścieżce, co plik bat.


8
Ach, to było rzeczywiście ukryte (większość z nas nie myślała, że ​​ten zaawansowany przycisk ma taką opcję). Jestem prawie pewien, że ktokolwiek pomyślał o innej złożonej odpowiedzi, nie wiedział o tym. To jest odpowiedź, której będzie chciało 90% + odwiedzających.
j riv

1
Zgadzam się. to powinna być odpowiedź. Dodałem również zrzut ekranu, aby ułatwić znalezienie przycisku zaliczki
fedmich

1
Dotyczy to również systemu Windows Server 2012 R2.
garec

3
To nie działa dla mnie ani w Windows 10, ani w Windows 7. Kiedy próbuję uruchomić jako administrator, albo klikając prawym przyciskiem myszy plik BAT i „Uruchom jako administrator”, albo używając techniki opisanej tutaj, plik wsadowy otwiera się przez sekundę następnie zamyka się natychmiast bez wykonywania żadnych poleceń ani programów w pliku wsadowym. Próbowałem uruchamiać bardzo proste pliki wsadowe, które po prostu przypominają „Hello World” i one też zawodzą w ten sposób. To bardzo frustrujące. Jak dotąd nie udało mi się znaleźć rozwiązania.
Jonathan Elkins,

1
@JonathanElkins czy próbowałeś dodać pauzę na końcu pliku wsadowego?
Ed Greaves,

32

Po prostu dodaj to na początku pliku nietoperza:

set "params=%*"
cd /d "%~dp0" && ( if exist "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs" ) && fsutil dirty query %systemdrive% 1>nul 2>nul || (  echo Set UAC = CreateObject^("Shell.Application"^) : UAC.ShellExecute "cmd.exe", "/k cd ""%~sdp0"" && %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs" && "%temp%\getadmin.vbs" && exit /B )

Zostanie podniesiony do poziomu admin, a także pozostanie we właściwym katalogu. Przetestowano w systemie Windows 10.


1
Przetestowany w systemie Windows 7 i działa świetnie. Ale czy mógłbyś wyjaśnić, co to robi? Nie znam plików nietoperzy.
Sunfloro

1
Tworzy plik VBScript z kodem, który podnosi Cię do poziomu administratora (jeśli jeszcze nie jesteś) i ponownie uruchamia plik bat, tym razem jako admin.
Ojciec

1
Czego dokładnie szukam! nie są wymagane żadne dodatkowe zmiany ani dodatkowy plik!
MSS

1
co to jest getadmin.vbs?
Kiquenet,

4
Dodanie dwóch wierszy kodu do mojego istniejącego pliku wsadowego jest dla mnie dobrym rozwiązaniem. Musiałem również dodać exitna końcu mojego pliku wsadowego lub zostałbym pozostawiony po monicie. Dzieje się tak prawdopodobnie dlatego, że plik .vbs uruchamia drugi wiersz polecenia.
Ben

10

Jeśli możesz użyć narzędzia innej firmy, oto elevatenarzędzie wiersza poleceń .

Oto opis użytkowania:

Usage: Elevate [-?|-wait|-k] prog [args]
-?    - Shows this help
-wait - Waits until prog terminates
-k    - Starts the the %COMSPEC% environment variable value and
                executes prog in it (CMD.EXE, 4NT.EXE, etc.)
prog  - The program to execute
args  - Optional command line arguments to prog

elevate.exeskały!
Sangbok Lee

8

Można użyć nircmd.exe „s podnieść polecenia

NirCmd Command Reference - Elevate

elevate [Program] {Command-Line Parameters}

Tylko dla Windows Vista / 7/2008: Uruchom program z uprawnieniami administratora. Gdy [Program] zawiera jeden lub więcej znaków spacji, należy umieścić go w cudzysłowie.

Przykłady:

elevate notepad.exe 
elevate notepad.exe C:\Windows\System32\Drivers\etc\HOSTS 
elevate "c:\program files\my software\abc.exe"

PS: Używam go na win 10 i działa


6

przekonwertuj plik wsadowy na .exe za pomocą tego narzędzia: http://www.battoexeconverter.com/, a następnie uruchom go jako administrator


2
Należy pamiętać, że wiele programów antywirusowych jest bardzo wrażliwych na pliki exe zbudowane w ten sposób. „Konwertowanie / szyfrowanie” plików wsadowych w ten sposób jest starym sposobem stosowanym przez złośliwe programy.
Hamy

Jeśli przeanalizujesz tę domenę za pomocą Symantec - Typ zagrożenia: inne złośliwe oprogramowanie Przyczyna zagrożenia: domena zgłoszona i zweryfikowana jako obsługująca złośliwe oprogramowanie. Zidentyfikowany jako złośliwa domena lub adres URL.
Sunil

Zła sugestia!
Vlad

6
go get github.com/mattn/sudo

Następnie

sudo Example1Server.exe

6

Myślę, że mam rozwiązanie problemu z hasłem. Ten pojedynczy argument jest naprawdę niesamowity. Pyta o hasło raz i nigdy więcej nie pyta o to. Nawet jeśli umieścisz go w innym programie, nie poprosi o hasło. Oto ona:

runas /user:Administrator /savecred Example1Server.exe


4
  1. Moje eksperymenty wskazują, że polecenie runas musi zawierać domenę administratora (przynajmniej tak jest w konfiguracji środowiska mojej organizacji):

    runas /user:AdminDomain\AdminUserName ExampleScript.bat
    

    Jeśli nie znasz jeszcze domeny administratora, uruchom wystąpienie wiersza polecenia jako administrator i wprowadź następujące polecenie:

    echo %userdomain%
    
  2. Odpowiedzi udzielone przez Kerreka SB i Eda Greavesa wykonają plik docelowy w ramach konta administratora, ale jeśli plik jest skryptem poleceń (plik .bat) lub skryptem VB (plik .vbs), który próbuje działać na normalnym logowaniu środowisko użytkownika (takie jak zmiana wpisów rejestru), możesz nie uzyskać pożądanych wyników, ponieważ środowisko, w którym skrypt faktycznie działa, będzie należało do administratora, a nie do zwykłego użytkownika! Na przykład, jeśli plik jest skryptem działającym w gałęzi rejestru HKEY_CURRENT_USER, „bieżący użytkownik”, którego dotyczy problem, będzie administratorem, a nie zwykłym użytkownikiem.


0

Użyj pełnego dysku fizycznego \ ścieżki do docelowego pliku wsadowego we właściwościach skrótu.

To nie działa w systemie Windows 10, jeśli używasz dysków zastępczych, tak jak próbowałem to zrobić na początku ...

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.