Hur höjer jag en batchfil automatiskt för att köra den som administratör?

2018-08-18 05:27:54
Huvud·Microsoft·Hur höjer jag en batchfil automatiskt för att köra den som administratör?

För att höja batchfiler manuellt, högerklickar du på den och väljer Kör som administratör. Här är ett sätt att automatiskt höja en batchfil som kräver förhöjda behörigheter för att kunna köras korrekt. Detta motsvarar valet av "Kör som administratör" genom att högerklicka på en batchfil. I båda fallen skulle UAC-prompten fortfarande dyka upp.

Lyft automatiskt en batchfil

:::::::::::::::::::::::::::::::::::::::::::: :: 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 

Lägg till dina instruktioner till denna .bat-fil under etiketten “START”.

Denna batchfil skapar en Vbscript-fil som sedan startar batchfilen igen som administratör (om den inte redan körs under administratörsbehörigheter) med hjälp av "runas" -parametern som behövs för att höja den. Vbscript & “runas” -metoden har täckts i min gamla Vbscripts-post och UAC-höjd i Windows Vista och Higher.

Krediter till Matt vid Stack Overflow för den här metoden. windows - Hur kan jag automatiskt höja min batchfil så att den begär från UAC-administratörsrättigheter vid behov?

Köra batchfiler som är förhöjda som standard

Förutom ovanstående automatisk höjningsmetod kan du från klientens sida finjustera registret så att batchfiler alltid börjar upphöjas, vilket visar UAC-prompten. Detta görs genom att ändra standard dubbelklickåtgärden från "öppen" till "runor" i registret. Använd dessa steg:

Starta Regedit.exe och gå till följande plats:

 HKEY_CLASSES_ROOT \ batfile \ shell 

Dubbelklicka (standard) och ställ in dess värdedata som runor

Avsluta registerredigeraren.

Efter denna ändring körs batchfiler alltid förhöjda när du dubbelklickar. Kör som administratör skulle vara standardalternativet som visas när du högerklickar på en .bat-fil.

Redaktionen