راههای ساده ای مانند کلیک راست و Run as Administrator و گزفتن Shift + Ctrl و اجرا برنامه و روش Compatibility Properties برای اجرا موجود است

در این مطلب در ادامه آموزش اسکریپت نویسی فایل .bat میخواهیم نیاز نباشد کاربر از روشهای بالا Run as Administrator انجام بدهد و با اجرا فایل بصورت خودکار در سطح دسترسی Administrator اجرا شود.
مطالعه مطالب و آموزشهای قبلی مفید میباشد:
کد اول
برای اینکار به سادگی میتوانید متن زیر را به ابتدای فایل اسکریپت اضافه کنید و بعد از :start کد اسکریپت خود را قرار دهید
@echo off
setlocal EnableDelayedExpansion & cd /d "%~dp0"
%1 %2
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :start","","runas",0)(window.close)&exit
:start
این دستور با استفاده از vbscript فایل باز شده را با دسترسی Administrator دورباره اجرا میکند و جهت ادامه کار goto به :start میژند و ادامه اسکریت را اجرا میکند و پنجره اجرای عادی فایل را میبندد.
کد دوم
برای استفاده از این روش متن زیر را در .bat کپی کنید و کد اکریپت مورد نظر را در محل
@echo off
call :isAdmin
if %errorlevel% == 0 (
goto :run
) else (
echo Requesting administrative privileges...
goto :UACPrompt
)
exit /b
:isAdmin
fsutil dirty query %systemdrive% >nul
exit /b
:run
exit /b
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "cmd.exe", "/c %~s0 %~1", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B`
این اسکریپت با دستور call زیرمجموعه دستور ایجاد میکند و در قسمت:isAdmin توسط دستور fsutil dirty query %systemdrive% (این دستور نام درایو ویندوز را میپرسد از انجا که این کار به دسترسی ادمین نیاز دارد در اینجا استفاده شده است) و چک کردن %errorlevel% بررسی دسترسی ادمین را انجام میدهد اگر دسترسی ادمین باشد اسکریپت شما اجرا میشود در غیر این صورت یک فایل getadmin.vbs در پوشه temp ویندوز با دستور اجرای cmd.exe در حالت Run as Administrator و مسیر دادن خود اسکریت فایل دسترسی را مجدد بررسی میکند. در انتها هم فایل getadmin.vbs را حذف میکند.