Hvordan løfte en batch-fil automatisk for å kjøre den som administrator?

2018-08-18 05:27:54
Hoved~~Pos=Trunc·Microsoft·Hvordan løfte en batch-fil automatisk for å kjøre den som administrator?

For å løfte batch-filer manuelt, høyreklikker du på den og velger Kjør som administrator. Her er en måte å heve en batchfil automatisk som krever forhøyede rettigheter for å kjøre riktig. Dette tilsvarer valg av "Kjør som administrator" ved å høyreklikke på en batchfil. I begge tilfeller vil UAC-ledet fremdeles vises.

Løft automatisk 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 

Legg til instruksjonene dine i denne .bat-filen under "START" -etiketten.

Denne batch-filen oppretter en Vbscript-fil som deretter starter batch-filen på nytt som administrator (hvis den ikke allerede kjører under administratorrettigheter) ved å bruke "runas" -parameteren som er nødvendig for å heve den. Vbscript- og “runas” -metoden er dekket i de gamle post Vbscripts og UAC-elevasjonene i Windows Vista og Higher.

Kreditter til Matt ved Stack Overflow for denne metoden. windows - Hvordan kan jeg automatisk heve batch-filen, slik at den ber om UAC-administratorrettigheter om nødvendig?

Kjører batch-filer forhøyet som standard

I tillegg til den ovennevnte automatiske høydemetoden, kan du fra klientens side finjustere registeret slik at batchfiler alltid vil begynne hevet, viser UAC-ledeteksten. Dette gjøres ved å endre standard dobbeltklikk-handlingen fra “åpen” til “runas” i registeret. Bruk disse trinnene:

Start Regedit.exe og gå til følgende sted:

 HKEY_CLASSES_ROOT \ batfile \ shell 

Dobbeltklikk (standard) og angi verdidataene som runer

Gå ut av registerredigereren.

Etter denne endringen vil batchfiler alltid kjøres forhøyet når de dobbeltklikkes. Kjør som administrator ville være standardalternativet som vises når du høyreklikker på en .bat-fil.

Redaksjonens