आप किसी भी प्रकार की बैच की अपनी स्क्रिप्ट या BAT या .CMD में उपयोग के लिए व्यवस्थापिका को स्वचालित रूप से उन्नत करने के लिए मेरी स्क्रिप्ट Batch_Admin का उपयोग कर सकते हैं। यह फ़ंक्शन मानक उपकरणों पर और विभिन्न विंडोज सिस्टम में उसी तरह मानक वातावरण पर काम सुनिश्चित करता है। यह कई मानक और अंतर्निहित विंडोज कमांड का उपयोग करता है। किसी अन्य बाहरी स्क्रिप्ट का उपयोग न करें। इसका उपयोग किसी भी प्रोग्राम को एडमिनिस्ट्रेटर के रूप में कॉल करने के लिए किया जा सकता है, न कि केवल स्क्रिप्ट पर। यह एक छोटी स्क्रिप्ट बनाने के लिए पर्याप्त है, जो तब उस प्रोग्राम को कॉल करता है जिसे अनुमति व्यवस्थापक की आवश्यकता होती है। इसे किसी भी खोज पथ फ़ोल्डर (% PATH% से) में रखें।
इसका उपयोग करने के लिए, आप बस इसकी मूल बैच स्क्रिप्ट में निम्न पंक्ति (बिल्कुल) डालें, जिसे प्रशासक के रूप में चलाया जाना है। यह हमारी मूल स्क्रिप्ट के शीर्ष पर सबसे अच्छा किया जाता है और यह सबसे अच्छा है कि पहले, जिसे कॉल के माध्यम से आगे कहा जाएगा, कुछ उप-स्क्रिप्ट (नीचे विस्तृत विवरण देखें)।
net session >nul 2>nul&if errorlevel 1 Batch_Admin "%~0" %*
यह किसी भी बाल स्क्रिप्ट के अंदर डाला जा सकता है, जिसे कॉल सिंटैक्स द्वारा बुलाया जाता है। एक संदेश प्रदर्शित करने के लिए जबकि यह अभी भी प्रशासक विशेषाधिकार नहीं है, जैसे। Batch_Admin कॉल करने से पहले 5 सेकंड के लिए सेकंड की संख्या पर चर "ShowAdminInfo" सेट करें
SET ShowAdminInfo=5
net session >nul 2>nul&if errorlevel 1 Batch_Admin "%~0" %*
तो यह कैसे काम करता है:
• उपयोगकर्ता की अनुमति लेने के लिए VBScript के माध्यम से UAC.ShellExecute को कॉल करें
• बैच स्क्रिप्ट, या बैट या सीएमडी चलाता है
• स्क्रिप्ट कॉलर में कॉल में शामिल लंबे नाम के स्थान हो सकते हैं
• सभी मापदंडों को कमांड लाइन से पास की गई मास्टर स्क्रिप्ट को कॉल करें, जैसे कि कॉल का कोई प्रसारण नहीं था और स्क्रैच से कुछ शुरू करें, विशेष वर्णों के साथ, जैसे विस्मयादिबोधक चिह्न (!) और प्रतिशत (%), और भी! कोष्ठक के साथ ()
यदि कॉल उस निर्देशिका में जगह लेता है जहां यह स्क्रिप्ट मास्टर है तो एक मास्टर स्क्रिप्ट स्थान प्राप्त करता है
• यदि हम स्वयं को "ShowAdminInfo", उदाहरण के लिए सेट करते हैं तो सहायक संदेश प्रदर्शित करता है। 5 सेकंड के लिए जो अतिरिक्त जानकारी देने वाले प्रशासक के अधिकारों के तत्काल पारित होने और एक सूचित निर्णय की संभावना को रोक सकता है। सेटिंग के उदाहरण जिन्हें सेट किया जाना चाहिए: SET ShowAdminInfo = 5 डिफ़ॉल्ट रूप से, क्योंकि यह चर परिभाषित नहीं है, यह प्रदर्शित नहीं करता है।
• स्क्रिप्ट सिस्टम खोज पथ% PATH% और नेटवर्क संसाधन से भी कॉल कर रही है, जैसे: \ Computer \ share \ _tat
• आवश्यक सहायक फ़ाइलों को लिखने में गलतफहमी को रोकता है जब स्क्रिप्ट लगभग एक ही समय में कई Batch_Admin को कॉल करती है। यह 1 से 100 तक यादृच्छिक संख्या का उपयोग करता है
• लेकिन, सबसे अच्छा यह मूल स्क्रिप्ट पर उपयोग करने के लिए है। व्यवस्थापक अधिकारों के लिए संक्रमण की हमेशा आवश्यकता होती है कि आप स्क्रिप्ट को पूरी तरह से फिर से चलाएं, एक नई विंडो में, एक नए वातावरण में, बिना चरों के परिवर्तन के लिए हमारी स्क्रिप्ट में पहले से सेट हैं और इन चरों के मानों को तब पारित नहीं किया गया जब प्रशासक के रूप में कॉल करना हो । बस स्क्रिप्ट को फिर से निष्पादित किया जाएगा।
पूरी स्क्रिप्ट Batch_Admin के नीचे। इस बारे में विस्तृत जानकारी मेरी साइट पर है।
निम्न पाठ को नोटपैड में कॉपी करें और इसे डिस्क पर सहेजें: 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) ***