ในการยกระดับไฟล์แบตช์ด้วยตนเองคุณจะต้องคลิกขวาที่ไฟล์นั้นแล้วเลือกเรียกใช้ในฐานะผู้ดูแลระบบ นี่คือวิธีในการยกระดับไฟล์แบตช์โดยอัตโนมัติซึ่งต้องใช้สิทธิ์ระดับสูงเพื่อให้ทำงานได้อย่างถูกต้อง สิ่งนี้เทียบเท่ากับการเลือก“ Run as Administrator” โดยการคลิกขวาที่แบตช์ไฟล์ ในทั้งสองกรณีพรอมต์ UAC จะยังคงปรากฏขึ้น
ยกระดับไฟล์แบทช์โดยอัตโนมัติ
:::::::::::::::::::::::::::::::::::::::::::: :: 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
เพิ่มคำแนะนำของคุณลงในไฟล์. bat นี้ใต้ป้ายกำกับ "เริ่ม"
ไฟล์แบทช์นี้สร้างไฟล์ Vbscript ซึ่งจะเปิดตัวไฟล์แบตช์อีกครั้งในฐานะผู้ดูแลระบบ (หากยังไม่ได้ทำงานภายใต้สิทธิ์ผู้ดูแลระบบ) โดยใช้พารามิเตอร์“ runas” ซึ่งจำเป็นต้องยกระดับ วิธี Vbscript &“ runas” ได้รับการกล่าวถึงใน VBScripts และ UAC ระดับสูงใน Windows Vista และสูงกว่า
มอบเครดิตให้แก่ Matt ที่ Stack Overflow สำหรับวิธีการนี้ windows - ฉันจะยกระดับไฟล์แบตช์ของฉันโดยอัตโนมัติได้อย่างไรเพื่อที่จะได้รับการร้องขอจากสิทธิ์ผู้ดูแลระบบ UAC หากจำเป็น
การเรียกใช้ไฟล์แบทช์ยกระดับโดยค่าเริ่มต้น
นอกเหนือจากวิธีการยกระดับอัตโนมัติข้างต้นจากฝั่งไคลเอ็นต์คุณสามารถปรับแต่งรีจิสตรีเพื่อให้ไฟล์แบตช์จะเริ่มการยกระดับเสมอโดยแสดงพร้อมท์ UAC สิ่งนี้ทำได้โดยการเปลี่ยนการกระทำดับเบิลคลิกเริ่มต้นจาก "เปิด" เป็น "runas" ในรีจิสทรี ใช้ขั้นตอนเหล่านี้:
เริ่ม Regedit.exe และไปที่ตำแหน่งต่อไปนี้:
HKEY_CLASSES_ROOT \ batfile \ shell
ดับเบิลคลิก (ค่าเริ่มต้น) และตั้งค่าข้อมูลเป็น runas
ออกจากตัวแก้ไขรีจิสทรี
หลังจากการเปลี่ยนแปลงนี้ไฟล์แบตช์จะเรียกใช้การยกระดับเสมอเมื่อดับเบิลคลิก เรียกใช้ในฐานะผู้ดูแลระบบจะเป็นตัวเลือกเริ่มต้นที่แสดงเมื่อคุณคลิกขวาที่ไฟล์. bat