Anda dapat menggunakan skrip saya Batch_Admin untuk secara otomatis meninggikan Administrator untuk digunakan dalam semua jenis skrip Batch sendiri, atau BAT atau .CMD. Fungsi ini memastikan pekerjaan pada lingkungan standar, dengan alat standar dan dengan cara yang sama di berbagai sistem Windows. Ini menggunakan beberapa perintah Windows standar dan built-in. Jangan gunakan skrip eksternal lainnya. Dapat digunakan untuk memanggil program apa pun sebagai Administrator, bukan hanya skrip Batch. Cukuplah untuk membuat skrip kecil, yang kemudian memanggil program yang memerlukan izin Administartor. Tempatkan ini di folder PATH pencarian apa saja (dari% PATH%).
Untuk menggunakannya, Anda cukup memasukkan baris berikut (persis seperti) di skrip Batch induknya, yang akan dijalankan sebagai Administrator. Ini paling baik dilakukan di bagian atas skrip induk kami dan yang terbaik adalah yang pertama, yang akan dipanggil melalui CALL lebih lanjut, beberapa sub-skrip (lihat penjelasan terperinci di bawah).
net session >nul 2>nul&if errorlevel 1 Batch_Admin "%~0" %*
Ini dapat dimasukkan ke dalam skrip anak apa saja, yang disebut oleh sintaks CALL. Untuk menampilkan pesan saat masih belum memiliki hak Administrator, mis. selama 5 detik sebelum memanggil Batch_Admin setel variabel "ShowAdminInfo" pada jumlah detik
SET ShowAdminInfo=5
net session >nul 2>nul&if errorlevel 1 Batch_Admin "%~0" %*
Jadi cara kerjanya:
• Memanggil UAC.ShellExecute melalui VBScript untuk mengambil izin pengguna
• Batch menjalankan skrip, atau BAT atau CMD
• Penelepon skrip dapat memiliki ruang nama panjang yang termasuk dalam panggilan dalam tanda kutip
• Kembalikan semua parameter panggilan script master yang dilewatkan dari baris perintah, seolah-olah tidak ada transmisi panggilan dan mulai sesuatu dari awal, juga dengan karakter khusus, seperti tanda seru (!) Dan persentase (%), dan juga dengan tanda kurung ()
• Memegang lokasi skrip master jika panggilan berlangsung di direktori di mana skrip ini adalah master
• Auxiliary menampilkan pesan jika kita mengatur sendiri variabel "ShowAdminInfo", mis. selama 5 detik yang dapat mencegah berlalunya segera hak-hak Administrator memberikan informasi tambahan dan kemungkinan keputusan yang diinformasikan. Contoh pengaturan yang harus ditetapkan: SET ShowAdminInfo = 5 Secara default, karena variabel ini tidak ditentukan, tidak ditampilkan.
• Skrip memanggil juga di jalur pencarian sistem% PATH% dan dari sumber daya jaringan, seperti: \ Computer \ share \ test.bat
• Mencegah kesalahpahaman dalam menulis file tambahan yang diperlukan ketika skrip memanggil beberapa Batch_Admin hampir secara bersamaan. Ini menggunakan nomor acak dari 1 hingga 100
• Tapi, yang terbaik adalah menggunakannya pada skrip induk. Transisi ke hak Administrator selalu mengharuskan Anda menjalankan skrip sepenuhnya lagi, di jendela baru, di lingkungan baru, tanpa bantuan ke variabel yang ditetapkan sebelumnya dalam skrip kami dan nilai-nilai variabel ini tidak lulus kemudian memanggil sebagai Administrator . Hanya script yang akan dieksekusi lagi.
Di bawah ini skrip lengkap Batch_Admin. Informasi tambahan tentang ini ada di situs saya.
Salin teks berikut ke Notepad dan simpan ke disk sebagai: Batch_Admin.bat
@echo off
if "%~1"=="" (echo *** Batch_Admin ***&echo.&echo Automatically get admin rights for another Batch. See info inside.&TIMEOUT /T 30>nul&goto:eof)
:: A D M I N I S T R A T O R - Automatically get admin rights for script batch. Paste this on top: net session >nul 2>nul&if errorlevel 1 Batch_Admin "%~0" %*
:: Also keep Batch directory localisation and then set variable: PATH_BAT
:: if earlier variable "ShowAdminInfo" is empty (not defined) then no info, else showing info with number of seconds
::
:: Elaboration: Artur Zgadzaj
setlocal
setlocal DisableDelayedExpansion
SET "Localy="
if exist "%~1" SET "Localy=YES"
if exist "%~1.BAT" SET "Localy=YES"
if exist "%~1.CMD" SET "Localy=YES"
if defined Localy FOR %%I IN ("%~1") DO SET "PATH_BAT=%%~dI%%~pI"
SET P1=%~1
SET Parameters=%*
SET Parameters=%Parameters:!=^^!%
setlocal EnableDelayedExpansion
SET Parameters=!Parameters:%P1%=!
SET Parameters=!Parameters:%%=%%%%!
setlocal DisableDelayedExpansion
SET Parameters=%Parameters:~3%
net session >nul 2>nul&if not errorlevel 1 goto Administrator_OK
if not defined ShowAdminInfo goto skip_message_Administrator
echo.
echo Script: %~1
echo.
echo *****************************************************************
echo *** R U N N I N G A S A D M I N I S T R A T O R ***
echo *****************************************************************
echo.
echo Call up just as the Administrator. You can make a shortcut to the script and set:
echo.
echo shortcut ^> Advanced ^> Running as Administrator
echo.
echo Alternatively run once "As Administrator"
echo or in the Schedule tasks with highest privileges
echo.
echo Cancel Ctrl-C or wait for launch %ShowAdminInfo% seconds ...
TIMEOUT /T %ShowAdminInfo% > nul
:skip_message_Administrator
MD %TEMP% 2> nul
SET /A $Admin$=%RANDOM% * 100 / 32768 + 1
SET "Percent="
del "%TEMP%\$Admin_%$Admin$%_Test.bat" 2>nul
echo %Parameters% > "%TEMP%\$Admin_%$Admin$%_Test.bat"
if not exist "%TEMP%\$Admin_%$Admin$%_Test.bat" SET Percent=^"
del "%TEMP%\$Admin_%$Admin$%_Test.bat" 2>nul
echo @SET "PATH_BAT=%PATH_BAT%" > "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat"
echo @SET "BatchFullName=%BatchFullName%" >> "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat"
if defined Localy (echo @CD /D "%PATH_BAT%" >> "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat")
echo @"%~1" %Parameters% %Percent% >> "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat"
echo SET UAC = CreateObject^("Shell.Application"^) > "%TEMP%\$Admin_%$Admin$%_Batch_getPrivileges.vbs"
echo UAC.ShellExecute "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat", "", "", "runas", 1 >> "%TEMP%\$Admin_%$Admin$%_Batch_getPrivileges.vbs"
"%TEMP%\$Admin_%$Admin$%_Batch_getPrivileges.vbs"
endlocal
exit /B
:Administrator_OK
"%~1" %Parameters%
goto:eof
REM *** A D M I N I S T R A T O R - Automatically get admin rights (The End) ***