2013-02-01 18 views
14

मैं क्लाइंट/सर्वर जांच प्रोग्राम लिख रहा हूं लेकिन इसे प्रशासक के रूप में चलाने की आवश्यकता है। मैं इसे अपने नेटवर्क और उपयोगकर्ताओं पर चुपचाप चलाने के लिए चाहता हूं, और मैं "व्यवस्थापक" के रूप में चलाएं "संकेत नहीं चाहता हूं। क्या कोई प्रारंभिक कोड है जिसे मैं बैच फ़ाइल में रख सकता हूं ताकि इसे प्रशासक के रूप में स्वतः चलाया जा सके।/बैच स्क्रिप्ट व्यवस्थापक के रूप में चलाने के लिए

उत्तर

13

एनओपीई - - एक शॉर्टकट बनाएं [-> संगतता -> "इस प्रोग्राम को व्यवस्थापक के रूप में चलाएं"] समाधान काम नहीं करता है।

यह विकल्प भी साथ यूएसी विकलांग

विंडोज 7 में धूसर हो -

नहींं -, "runas/env/उपयोगकर्ता: डोमेन \ प्रशासक"

भी पर्याप्त नहीं है क्योंकि यह उपयोगकर्ता को व्यवस्थापक पासवर्ड के लिए संकेत देगा।

-

हां - अक्षम यूएसी -> एक नौकरी का उपयोग कर कार्य अनुसूचक

यह मेरे लिए काम किया बनाएं: कार्य अनुसूचक के तहत कार्य बनाएं और इसे व्यवस्थापक अनुमतियों के साथ एक उपयोगकर्ता के रूप में चलाने बनाते हैं। स्पष्ट रूप से चिह्नित: "उच्चतम विशेषाधिकारों के साथ चलाने के लिए" अक्षम यूएसी तो वहाँ इस कार्य

आप स्क्रिप्ट यूएसी बाद में सक्षम संपादन रजिस्ट्री द्वारा यदि आप चाहते हैं कर सकते हैं चलाने के लिए किसी शीघ्र किया जाएगा। मेरे मामले में यह स्क्रिप्ट केवल एक बार वर्चुअल मशीन के निर्माण द्वारा चलायी जाती है, जहां छवि में यूएसी अक्षम है।

अभी भी बहुत परेशानी के बिना व्यवस्थापक के रूप में चलाने वाली स्क्रिप्ट के लिए सर्वोत्तम दृष्टिकोण की प्रतीक्षा कर रहा है।

set ELEVATE_APP=Full command line without parameters for the app to run 
set ELEVATE_PARMS=The actual parameters for the app 
echo Set objShell = CreateObject("Shell.Application") >elevatedapp.vbs 
echo Set objWshShell = WScript.CreateObject("WScript.Shell") >>elevatedapp.vbs 
echo Set objWshProcessEnv = objWshShell.Environment("PROCESS") >>elevatedapp.vbs 
echo objShell.ShellExecute "%ELEVATE_APP%", "%ELEVATE_PARMS%", "", "runas" >>elevatedapp.vbs 
DEL elevatedapp.vbs 

सादर

Nika,:

+1

यूएसी भाग यूएसी अक्षम करें सी: \ विंडोज \ System32 \ cmd.exe/k% windir% \ System32 \ reg.exe HKLM \ सॉफ़्टवेयर \ Microsoft \ Windows \ CurrentVersion \ Policies \ System/v EnableLUA/t REG_DWORD/d 0/f सक्षम करें UAC सी: \ Windows \ System32 \ cmd.exe/k% windir% \ System32 \ reg.exe HKLM \ सॉफ़्टवेयर \ Microsoft \ Windows \ CurrentVersion \ Policies \ System/v EnableLUA/t REG_DWORD/d 1/f – zenin

4

इसके संभावित उपयोग करते हुए वाक्य रचना:

RUNAS [/profile] [/env] [/netonly] /user:user Program 

Key : 
/profile Option to load the user's profile (registry) 
/env Use current environment instead of user's. 
/netonly Use the credentials specified only for remote connections. 
/user Username in form [email protected] or DOMAIN\USER 
([email protected] is not compatible with /netonly) 
Program The command to execute 

उदाहरण:।

runas /env /user:domain\Administrator <program.exe/command you want to execute> 
+10

यह एक पासवर्ड के लिए संकेत देगा, जो वह नहीं चाहता है। – eddyq

+0

@eddyq True, हालांकि यह प्रश्न के शीर्षक का जवाब देता है, भले ही प्रश्न का शरीर वह जो कहता है उसे बदल देता है। – leetNightshade

+0

शीर्षक प्रश्न नहीं है। शरीर का पाठ सवाल है। शीर्षक शीर्षक है। शरीर प्राथमिकता लेता है, क्योंकि इसमें विवरण शामिल हैं। –

3

आप एक जोड़े विकल्प हैं

  1. यदि आपको केवल एक बैच फ़ाइल और मूल आदेशों का उपयोग करके इसे करने की आवश्यकता है, तो How can I auto-elevate my batch file, so that it requests from UAC admin rights if required? देखें।

  2. यदि तृतीय-पक्ष सुविधाएं कोई विकल्प हैं, तो आप Elevate जैसे टूल का उपयोग कर सकते हैं। यह एक निष्पादन योग्य है जिसे आप उस प्रोग्राम के साथ कॉल करते हैं जिसे आप पैरामीटर के रूप में ऊंचा करना चाहते हैं।
    इस तरह: elevate net share ...

0

आप इसे स्टार्टअप आइटम के रूप में डाल सकते हैं ... स्टार्टअप आइटम व्यवस्थापक के रूप में चलाने के लिए संकेत नहीं दिखाते हैं।

चेक इस लेख Elevated Program Shortcut Without UAC rompt

+0

स्टैक ओवरफ़्लो पर उत्तर "Google को उत्तर खोजने के लिए" नहीं होना चाहिए। –

+0

क्षमा करें मेरा बुरा। संपादन – sandrows

+0

बेहतर अब, धन्यवाद। –

1

शॉर्टकट बनाएं और शॉर्टकट हमेशा व्यवस्थापक के रूप में चलाने के लिए निर्धारित किया है।

कैसे-गीक मंच Make a batch file to run cmd as administrator समाधान:

एक संपादक में एक बैच फ़ाइल बनाएँ और nameit.bat तो यह करने के लिए एक शॉर्टकट बना। Nameit.bat - शॉर्टकट। फिर Nameit.bat पर क्लिक करें - शॉर्टकट -> गुण-> शॉर्टकट टैब -> उन्नत और व्यवस्थापक के रूप में चलाएं क्लिक करें। शॉर्टकट से इसे निष्पादित करें।

+2

आप बैच फ़ाइल पर 'व्यवस्थापक के रूप में चलाएं' सेट नहीं कर सकते हैं या शॉर्टकट को इंगित नहीं कर सकते हैं। – StormPooper

+1

आप इसे बैच फ़ाइल पर सेट नहीं कर सकते हैं - लेकिन आप ** इसे ** शॉर्टकट पर सेट कर सकते हैं – icc97

1

जैसा कि मैंने किसी भी सरल स्क्रिप्ट अब तक नहीं मिला है, यहाँ मेरी दो सेंट है।

0

यदि उपर्युक्त उत्तर आपकी पसंद के अनुसार नहीं हैं तो आप अपने फ़ाइल को चलाने के लिए ऑटोआईटी का उपयोग कर सकते हैं (या कभी भी फाइल) अपने क्रेडेंशियल्स के साथ एक विशिष्ट उपयोगकर्ता के रूप में।

एक स्क्रिप्ट का नमूना जो उस उपयोगकर्ता का उपयोग कर प्रोग्राम चलाएगा।

installAdmin() 

Func installAdmin() 
    ; Change the username and password to the appropriate values for your system. 
    Local $sUserName = "xxxxx" 
    Local $sPassword = "xxx" 
    Local $sDirectory = "C:\ASD4VM\Download\" 
    Local $sFiletoRun = "Inst_with_Privileges.bat" 

    RunAsWait($sUserName, @ComputerName, $sPassword, 0, $sDirectory & $sFiletoRun) 
EndFunc ;==>Example 

AutoIT can be found here. -> यह एक .ua3 प्रारूप है कि उस चलाया जा सकता है एक exe फ़ाइल को संकलित किया गया है का उपयोग करता है।

1

मैं एक ही स्क्रिप्ट (बस यूएसी मंगलाचरण की आवश्यकता होती है किसी भी स्क्रिप्ट की शुरुआत में जोड़ना) के भीतर से चलाने के लिए इसे सक्षम करने के मैट की पटकथा को यह मामूली संशोधन किया है, लेकिन एक और भी बेहतर समाधान है कि मैं के लिए नीचे दिए गए कोड को पढ़ने के लिए

:: ### START UAC SCRIPT ### 

if "%2"=="firstrun" exit 
cmd /c "%0" null firstrun 

if "%1"=="skipuac" goto skipuacstart 

:checkPrivileges 
NET FILE 1>NUL 2>NUL 
if '%errorlevel%' == '0' (goto gotPrivileges) else (goto getPrivileges) 

:getPrivileges 
if '%1'=='ELEV' (shift & goto gotPrivileges) 

setlocal DisableDelayedExpansion 
set "batchPath=%~0" 
setlocal EnableDelayedExpansion 
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%temp%\OEgetPrivileges.vbs" 
ECHO UAC.ShellExecute "!batchPath!", "ELEV", "", "runas", 1 >> "%temp%\OEgetPrivileges.vbs" 
"%temp%\OEgetPrivileges.vbs" 
exit /B 

:gotPrivileges 

setlocal & pushd . 

cd /d %~dp0 
cmd /c "%0" skipuac firstrun 
cd /d %~dp0 

:skipuacstart 

if "%2"=="firstrun" exit 

:: ### END UAC SCRIPT ### 

:: ### START OF YOUR OWN BATCH SCRIPT BELOW THIS LINE ### 

मेरे संशोधन दो फ़ाइल तर्क का उपयोग करता है के रूप में आप देख सकते हैं, जो विशेष रूप से सुंदर नहीं है, लेकिन (और आप हमेशा उन्हें दूर पूंछ अंत में पहले आरक्षित करके छिपा कर सकते हैं काम करता है: एक ब्लॉग पर पाया है डमी प्लेसहोल्डर्स का उपयोग करके कुछ तर्क)। इसके अतिरिक्त, AFAIK मैट की स्क्रिप्ट फ़ाइल पथों में रिक्त स्थान का समर्थन नहीं करती है और यह सीमा भी इस स्क्रिप्ट के मेरे संशोधन पर लागू होती है।

यह समस्या वीबीएस इन पथों को संभालने के तरीके में निहित प्रतीत होती है लेकिन नीचे दिए गए लिंक पर यूएसी का आह्वान करने के लिए एक बेहतर वीबीएस आधारित समाधान है जो फ़ाइल का उपयोग कर इस तरह के कामकाज की आवश्यकता के बिना एक स्क्रिप्ट के भीतर से चलता है तर्क और कि भी फ़ाइल पथ में रिक्त स्थान का समर्थन करता है:

http://pcloadletter.co.uk/2012/12/11/uac-elevation-for-batch-script/

इस लिंक पर स्क्रिप्ट थोड़ा अलग VBS कॉल के रूप में आप पर ध्यान देंगे, जो किसी कारण के लिए रिक्त स्थान के साथ इस मुद्दे में गतिरोध उत्पन्न करता है।

4
@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 
    <YOUR BATCH SCRIPT HERE> 
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` 
+0

यह मेरे लिए पूरी तरह से काम करता है। धन्यवाद। – Emad

1

के बाद एक काम के आसपास है:

  1. .bat फ़ाइल की एक शॉर्टकट
  2. ओपन गुण शॉर्टकट की बनाएँ। शॉर्टकट टैब के तहत, उन्नत पर क्लिक करें।
  3. टिक "व्यवस्थापक के रूप में चलाएँ"

शॉर्टकट व्यवस्थापक के रूप में अपने बैच स्क्रिप्ट को निष्पादित करेगा चल रहा है।

संबंधित मुद्दे