एलिवेटेड राइट्स के साथ कमांड लाइन से प्रोग्राम कैसे चलाएं


44

जब मैं पहले से ही गैर-एलिवेटेड कमांड लाइन में हूं, तो क्या ऊंचे अधिकारों के साथ प्रोग्राम या कमांड चलाने का कोई तरीका है?

बिल्कुल वही कार्रवाई जो प्रोग्राम शॉर्टकट पर क्लिक करने और व्यवस्थापक के रूप में रन का चयन करने पर की जाएगी ।

Runas आदेश शायद एक समाधान नहीं है - यह एक पासवर्ड के लिए पूछता है, लेकिन मैं तो बस चाहते यूएसी संवाद।

जवाबों:


14

यह इस उपयोगिता की तरह दिखता है - हिडन स्टार्ट - यदि आप / यूएसी स्विच का उपयोग करते हैं, तो आप जो चाहते हैं वह करेंगे। यहाँ एक उदाहरण कमांड लाइन है:

hstart /UAC "notepad.exe"

यह यूएसी संवाद को पॉप अप करने के बजाय एक पासवर्ड के लिए पॉप अप करेगा जैसे कि रनस करता है।

यहाँ छवि विवरण दर्ज करें


2
चेतावनी: यह छोटी उपयोगिता 20 डॉलर है। छोटी जेब वाले लोगों के लिए, इसके बजाय RunAdmin का उपयोग करें :)
WeGoToMars

यह आने-अप नहीं करता है Windows 10 पर
होगा

48

PowerShell में ऐसा करने का एक तरीका है :

PS> Start-Process powershell -Verb runAs

19
ठीक काम करने लगता है। कमांड लाइन से, आप उदाहरण के लिए कर सकते हैंpowershell -Command "Start-Process 'C:\program.exe' -Verb runAs"
मंगल

7
इसे सही / सर्वोत्तम उत्तर IMO के रूप में चिह्नित किया जाना चाहिए - यह 3 पार्टी उपयोगिताओं के बिना काम करता है।
1

5
@Marsze - Fwiw का निर्माण, सबसे सरल मामले में तर्क अपने स्वयं के उद्धृत मूल्य में जाते हैं, उदाहरण के लिए powershell -Command "Start-Process 'gvim' 'c:\windows\system32\drivers\etc\hosts' -Verb runAs"। धन्यवाद!
रफिन

मैं अपने वर्तमान में निष्पादित स्क्रिप्ट में उन्नत कमांड प्रॉम्प्ट के आउटपुट को कैसे पाइप कर सकता हूं?
पहिएदार

@wheeler, मुझे लगभग निश्चित है कि आप ऐसा नहीं कर सकते, लेकिन आप एक एक्जिट कोड वापस कर सकते हैं:$p = Start-Process powershell -Verb runAs -ArgumentList "-Command ``"& { ``$Host.SetShouldExit(123) }``"" -PassThru; $p.ExitCode
रुस्तम

4

रुस्तम के जवाब पर बिल्डिंग , आप कर सकते हैं:

  • su.batनिम्नलिखित वन-लाइनर के साथ अपने डिफ़ॉल्ट% PATH% में कहीं एक बैच फ़ाइल बनाएँ :@powershell start -verb runas %*
  • इस फ़ंक्शन को अपने PowerShell $ प्रोफ़ाइल में जोड़ें :function su {start -verb runas @args}

अब आप su <command> [parameters]या तो शेल में जारी कर सकते हैं !


2

RunAdmin एक छोटी उपयोगिता (150Kb) है जो आपको उन्नत अधिकारों के साथ कमांड लाइन से एक प्रोग्राम चलाने की सुविधा देता है (यह यूएसी दिखाएगा)। और हिडन स्टार्ट के विपरीत है।


2

यह विंडोज 10 सहित सभी प्लेटफार्मों पर मेरे लिए काम करता है। मेरी जरूरतें सरल हैं, शायद आपको पावर की आवश्यकता होने पर आप इसे अपना सकते हैं ।

मैं एक छोटी स्क्रिप्ट के साथ आया, sudo.cmdजिसका नाम लिनक्स सुडो कमांड था। यह काफी अच्छा काम करता है। मैंने आवश्यकताओं, उल्लिखित चरणों का पालन किया है और स्क्रिप्ट एक उदाहरण के साथ नीचे के पास है। पहले चेतावनी का एक शब्द।

चेतावनी : आदेश डिफ़ॉल्ट रूप से विंडोज़ सिस्टम निर्देशिका में चलता है। आपcdपहले कहीं सुरक्षितहोना चाहेंगे।

आवश्यकताएँ :

  • प्रशासक के साथ कमांड चलाएँ विंडोज़ से विशेषाधिकार प्राप्त .CMD
    या cmd- शेल।
  • कमांड पर सामान्य विंडोज विशेषाधिकार चेक की आवश्यकता होती है
    • दूसरे शब्दों में, कमांड तब तक काम नहीं करेगा जब तक कि मैं पहले से ही एक विशेषाधिकार प्राप्त खाते से लॉग इन नहीं हूं।
  • व्यवस्थापक की अनुमति के साथ कमांड निष्पादित करें और स्क्रिप्ट के अंदर कॉल करने पर जारी रखें। इसलिए कमांड पूरा होने का इंतजार करें।
  • सरल रहो तो यह हमेशा काम करेगा
  • यदि मुझे पहले से लॉग इन है, तो हर बार पासवर्ड दर्ज करने की आवश्यकता नहीं है।
    • एक बेहतर तरीका यह होगा कि अगर मैं sudoलिनक्स पर असली कमांड करता हूं, तो मैं पासवर्ड दर्ज कर सकता हूं ।

समाधान :

  1. पारित सभी तर्कों को निष्पादित करने के लिए एक कमांड स्क्रिप्ट बनाएं, sudo.cmd
  2. कमांड लिपि नाम से विंडोज शॉर्ट-कट बनाएं sudo.lnk:।
  3. sudoअपनी खिड़कियों PATH में शॉर्ट-कट डालें ताकि इसे देखा जा सके।
  4. शॉर्ट-कट गुणों को संपादित करें, Start in:पथ को खाली करें।
  5. [ Advanced] बटन पर क्लिक करें - जाँच करेंRun as Administrator
  6. अपने विंडोज़ पथ में शॉर्ट-कट सक्षम करें, पैथ टेक्स्ट वातावरण चर का उपयोग करें।
d:> echo %PATHEXT%
    .lnk;.EXE;.CMD;.BAT;.COM

जब आप sudo dirकमांड-लाइन पर टाइप करेंगे, तो विंडोज शो करेगा

User Account Control

Do you want to allow this app to make changes to this device?

  [YES]  [NO]

एक्सेस कंट्रोल पॉप-अप। यदि आप "[ NO]" पर क्लिक करते हैं तो कुछ नहीं होगा। विंडोज एक " Access is denied." संदेश दिखाएगा ।

जब आप "[ YES]" पर क्लिक करते हैं, तो निर्देशिका कमांड एक उन्नत विशेषाधिकार पर चलता है। बेशक आप शायद कुछ और दिलचस्प चाहते हैं जैसे किसी सेवा को रोकना या क्वेरी करना:

 sudo sc query SDRSVC

SDRSVC "विंडोज बैकअप सेवा" का सेवा नाम है, यह एक अलग सीएमडी विंडो में निम्नलिखित दिखाता है:

  [sudo]

   administrator
  ---------------

  sc query SDRSVC

SERVICE_NAME: SDRSVC
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 4  RUNNING
                                (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

  [done]

Press any key to continue . . .

sudo.cmdस्क्रिप्ट में ही बहुत ही बुनियादी है। जैसा कि मैंने कहा कि मेरी जरूरतें सरल हैं। मैं सिर्फ सेवाओं को रोकना और शुरू करना चाहता हूं, जबकि मैं परीक्षण के लिए कोड तैनात करता हूं।

sudo.cmd:

 @echo off
 @rem    sudo.cmd
         cd /d %temp%
 @echo.
 @echo.   administrator
 @echo.  ---------------
         cd 
 @echo.
 @rem  _________________________________________________
 @rem      -- Print usage . . .
        @if    [""]      ==["%~1"]   goto USAGE
        @if /i ["--HELP"]==["%~1"]   goto USAGE
 @rem  _________________________________________________
 @rem
 @echo.  %*
 @rem
         %*
 @rem
         set EXIT_STATUS=%ERRORLEVEL%
 @rem  -- -- -- -- --  
 @echo.
 @echo.  [done]
 @rem  ______________________________________________________
 :Exit
 @echo.
 @pause
  exit /b  %EXIT_STATUS%
 @rem  ______________________________________________________
 :USAGE
 @echo.
 @echo  ^Usage:
 @echo.    sudo ^<complete command line^>
 @echo.
 @echo.  Attempts to rune the: ^<complete command line^>
 @echo.  under Administrator priviliges.  Relies on Windows 
 @echo.  prompt for elevated privileges.
 @rem  ______________________________________________________
 @goto Exit

pauseआदेश इंतजार कर रहा है आप परिणामों की समीक्षा करने के लिए। यदि आप pauseप्रशासन की खिड़की बंद कर देते हैं और आपको नहीं पता कि कमांड काम करती है या नहीं। ERRORLEVELआदेश के साथ-साथ दिया जाता है।


0

स्टार्ट ++ पर एक नज़र डालें - इसमें कई अन्य उपयोगी चीजों के साथ-साथ यह कार्यक्षमता है। यूएसी प्रॉम्प्ट के साथ चलने के लिए, बस sudoकमांड लाइन पर अपने प्रोग्राम के नाम का उपयोग करें जैसा कि यहां दिखाया गया है:

वैकल्पिक शब्द

यहाँ कुछ अन्य विशेषताएं हैं (आप स्वयं भी जोड़ सकते हैं):

वैकल्पिक शब्द

वैकल्पिक शब्द


यह भी अच्छा लगता है, लेकिन मैं पहले से ही FARR का उपयोग करता हूं जिसमें स्टार्ट ++ और इसी तरह की कार्यक्षमता है (सुडो को छोड़कर)।
लुकास सेनोव्स्की

2
लिंक में आपका स्वागत है
xmojmr

1
जैसा कि @xmojmr कहता है, वह साइट मर चुकी है। यदि आप एक नया स्थान जानते हैं (मुझे ऐसा जल्दी नहीं मिला), तो आपको उत्तर में लिंक को अपडेट करना चाहिए।
एबेल

0

यह विंडोज 10 के लिए काम करता है, अन्य विंडोज संस्करणों के साथ परीक्षण नहीं किया गया है।

Cmd.exe से व्यवस्थापक अधिकारों के साथ नोटपैड खोलने के लिए एक उदाहरण जो शक्तियां शुरू करता है जो एलिवेटेड अनुमतियों के लिए पूछता है।

C:\>start powershell -command "&{start-process -filepath notepad -verb RunAs}"

यह आपको [हां] [नहीं] के साथ एक यूएसी डायलॉग बॉक्स (यदि सक्षम है) देगा, या आपसे प्रशासक पासवर्ड मांगेगा।

नोटपैड के साथ मेजबान फ़ाइल को खोलने के लिए एक और उदाहरण होगा:

C:\>start powershell -command "&{start-process -filepath notepad 'C:\Windows\System32\drivers\etc\hosts' -verb RunAs}"

अधिक जानकारी: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/start-process?view=powershell-6


-1

आप सेट कर सकते हैं __COMPAT_LAYER=RunAsAdmin। फिर कमांड एक अलग ऊंचाई पर चलेंगे cmd

उदाहरण .bat:

rem Run next command elevated to Admin.
set __COMPAT_LAYER=RunAsAdmin
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Group Policy\{35378EAC-683F-11D2-A89A-00C04FBBCFA2}" /t REG_DWORD /v "NoBackgroundPolicy" /d "1"
rem Disable elevation
set __COMPAT_LAYER=
rem continue non elevated
reg add "HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Internet Explorer\Main" /t REG_SZ /v "Start Page" /d "https://www.google.com" /f

सभी संगतता मोड विकल्प MS अनुप्रयोग संगतता टूलकिट में सूचीबद्ध हैं।


यह बैच फ़ाइल बुरी तरह से टूटी हुई है। आप ;एक टिप्पणी परिसीमनकर्ता के रूप में उपयोग नहीं कर सकते । "बैच फाइलें अर्धविराम को नहीं पहचानती हैं और आमतौर पर एक खराब कमांड के बारे में त्रुटि संदेश का कारण बनेंगी।"
DavidPostill
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.