Komutum Batch_Admin'i, herhangi bir Batch kendi komut dosyasında veya BAT veya .CMD'de kullanmak üzere Yöneticiyi otomatik olarak yükseltmek için kullanabilirsiniz. Bu işlev, standart bir ortamda, standart araçlarla ve aynı şekilde farklı Windows sistemlerinde çalışmayı sağlar. Birkaç standart ve yerleşik Windows komutları kullanır. Başka hiçbir harici komut dosyası kullanmayın. Herhangi bir programı Yönetici olarak çağırmak için kullanılabilir, yalnızca Batch komut dosyalarını değil. Daha sonra izin Yönetici gerektiren programı çağıran küçük bir komut dosyası oluşturmak yeterlidir. Bunu herhangi bir arama PATH klasörüne yerleştirin (% PATH% 'den).
Kullanmak için, aşağıdaki satırı (aynen gibi) Yönetici olarak çalıştırılacak olan üst Batch betiğine ekleyin. Bu en iyi üst betiğimizin en üstünde yapılır ve en iyisi ilk olarak CALL aracılığıyla bazı alt betiği üzerinden çağrılacaktır (aşağıdaki ayrıntılı açıklamaya bakınız).
net session >nul 2>nul&if errorlevel 1 Batch_Admin "%~0" %*
Bu, CALL sözdizimi tarafından adlandırılan herhangi bir alt komut dosyasının içine eklenebilir. Bir mesajı hala Yönetici ayrıcalıklarına sahip değilken göstermek için, örn. Batch_Admin çağrılmadan önce 5 saniye boyunca "ShowAdminInfo" değişkenini saniye sayısına ayarlayın
SET ShowAdminInfo=5
net session >nul 2>nul&if errorlevel 1 Batch_Admin "%~0" %*
Peki nasıl çalışır:
• Kullanıcı izinlerini almak için UBS.ShellExecute'u VBScript aracılığıyla çağırır
• Toplu komut dosyasını çalıştırır veya BAT veya CMD
• Script arayan, çağrıya tırnak içine alınmış uzun bir ad alanına sahip olabilir.
• Tüm parametreleri geri çağırın, sanki çağrı iletimi yokmuş gibi komut satırından geçen ana betiği arayın ve ünlem işareti (!) Ve yüzdesi (%) gibi özel karakterlerle ve aynı zamanda sıfırdan bir şey başlatın. parantezli ()
• Çağrı, bu komut dosyasının ana olduğu dizinde gerçekleşirse, bir ana komut dosyası konumu tutar.
• Yardımcı, kendimizden önce "ShowAdminInfo" değişkenini ayarlarsak, örneğin bir mesaj görüntüler. 5 saniye boyunca Yönetici haklarının derhal geçişini önleyebilir ve ek bilgi verir ve bilinçli bir karar verebilir. Ayarlanması gereken ayar örnekleri: SET ShowAdminInfo = 5 Varsayılan olarak, bu değişken tanımlanmadığı için görüntülenmez.
• Betik ayrıca% PATH% sistem arama yolunda ve aşağıdaki gibi ağ kaynağından da çağırıyor: \ Computer \ share \ test.bat
• Senaryo neredeyse aynı anda birkaç Batch_Admin çağırdığında, gerekli dosyaları yazarken yanlış anlamaları önler. 1'den 100'e kadar rasgele sayı kullanır
• Ancak, en iyisi üst komut dosyasında kullanmaktır. Yönetici haklarına geçiş her zaman komut dosyasını tamamen yeniden çalıştırmanızı gerektirir, yeni bir pencerede, yeni bir ortamda, önceden komut dosyamızda ayarlanan değişkenlere başvurmadan ve bu değişkenlerin değerleri Yönetici olarak çağırmak için geçmedi . Sadece senaryo tekrar çalıştırılacak.
Batch_Admin tam bir betiğinin altında. Bu konuda genişletilmiş bilgi sitemde.
Aşağıdaki metni Not Defteri'ne kopyalayın ve diske farklı kaydedin: 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) ***