Aby ręcznie podnieść pliki wsadowe, kliknij je prawym przyciskiem myszy i wybierz polecenie Uruchom jako administrator. Oto sposób automatycznego podniesienia pliku wsadowego, który wymaga podniesionych uprawnień do poprawnego działania. Jest to równoważne wybraniu opcji „Uruchom jako administrator” poprzez kliknięcie prawym przyciskiem myszy pliku wsadowego. W obu przypadkach monit UAC nadal się wyświetla.
Automatyczne podnoszenie pliku wsadowego
:::::::::::::::::::::::::::::::::::::::::::: :: Automatically check & get admin rights V2 :::::::::::::::::::::::::::::::::::::::::::: @echo off CLS ECHO. ECHO ============================= ECHO Running Admin shell ECHO ============================= :init setlocal DisableDelayedExpansion set "batchPath=%~0" for %%k in (%0) do set batchName=%%~nk set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs" setlocal EnableDelayedExpansion :checkPrivileges NET FILE 1>NUL 2>NUL if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges ) :getPrivileges if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges) ECHO. ECHO ************************************** ECHO Invoking UAC for Privilege Escalation ECHO ************************************** ECHO Set UAC = CreateObject^("Shell.Application"^)>"%vbsGetPrivileges%" ECHO args = "ELEV ">>"%vbsGetPrivileges%" ECHO For Each strArg in WScript.Arguments>>"%vbsGetPrivileges%" ECHO args = args ^& strArg ^& " ">>"%vbsGetPrivileges%" ECHO Next>>"%vbsGetPrivileges%" ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1>>"%vbsGetPrivileges%" "%SystemRoot%\System32\WScript.exe" "%vbsGetPrivileges%" %* exit /B :gotPrivileges setlocal & pushd . cd /d %~dp0 if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul & shift /1) :::::::::::::::::::::::::::: ::START :::::::::::::::::::::::::::: REM Run shell as admin (example) - put here code as you like ECHO %batchName% Arguments: %1 %2 %3 %4 %5 %6 %7 %8 %9 cmd /k
Dodaj instrukcje do tego pliku .bat pod etykietą „START”.
Ten plik wsadowy tworzy plik Vbscript, który następnie ponownie uruchamia plik wsadowy jako administrator (jeśli nie jest jeszcze uruchomiony z uprawnieniami administratora) przy użyciu parametru „runas”, który jest potrzebny do podniesienia go. Metoda Vbscript i „runas” została opisana w moich starych postach Vbscripts i podniesienie kontroli konta użytkownika w Windows Vista i wyższych.
Kredyty dla Matta przy przepełnieniu stosu dla tej metody. windows - Jak mogę automatycznie podnieść mój plik wsadowy, aby w razie potrzeby żądał uprawnień administratora UAC?
Uruchamianie plików wsadowych domyślnie podniesionych
Oprócz powyższej metody automatycznej elewacji, po stronie klienta możesz dostosować rejestr, aby pliki wsadowe zawsze zaczynały podwyższać, wyświetlając monit UAC. Odbywa się to poprzez zmianę domyślnej akcji podwójnego kliknięcia z „open” na „runas” w rejestrze. Wykonaj następujące kroki:
Uruchom Regedit.exe i przejdź do następującej lokalizacji:
HKEY_CLASSES_ROOT \ batfile \ shell
Kliknij dwukrotnie (domyślnie) i ustaw dane wartości jako runy
Wyjdź z Edytora rejestru.
Po tej zmianie pliki wsadowe zawsze będą uruchamiane z podwyższonym poziomem uprawnień po dwukrotnym kliknięciu. Uruchom jako administrator byłaby domyślną opcją wyświetlaną po kliknięciu prawym przyciskiem myszy pliku .bat.