राइट क्लिक संदर्भ मेनू के लिए रनस कमांड में पर्यावरण चर को कैसे कॉल करें


1

मुझे runasराइट क्लिक संदर्भ मेनू कमांड के लिए रजिस्ट्री में कमांड का उपयोग करते समय उपयोग करने के साथ पर्यावरण चर का उपयोग करने में परेशानी हो रही है । मैंने चर से बचने के विभिन्न तरीकों की कोशिश की है, हालांकि runasकुछ अलग वाक्यविन्यास हैं जिन्हें स्पष्ट रूप से समझाया नहीं गया है।

मैं राइट क्लिक संदर्भ मेनू आइटम के लिए रजिस्ट्री में एक कस्टम कमांड का उपयोग कर रहा हूं। उदाहरण के लिए मैं एक नया राइट क्लिक कमांड बनाने की कोशिश कर रहा हूँ उदा HKEY_USERS\<some user account>\Software\Classes\Msi.Package\shell\RunAsAdmin\command

मुझे लगता है कि मैं फिर भी का उपयोग कर पारी को दबाए रखें सकते हैं और सही एक अन्य उपयोगकर्ता के रूप में चलाने के लिए खोल इंटरफ़ेस उपयोग करने के लिए क्लिक करें, runasइस तरह के रूप में अतिरिक्त विकल्प और पैरामीटर स्विच उपयोग करने की क्षमता आदेश पंक्ति से प्रदान करता है \noprofileऔर \savecred

प्रारंभिक प्रयास

सीधे रन का उपयोग करते हुए, संयुक्त राष्ट्र से बच गए

यहाँ वही है जो मैंने शुरू में सीधे तौर पर रनस का उपयोग करके किया था :

runas /noprofile /user:Administrator "\"%SystemRoot%\System32\msiexec.exe\" /i \"%1\" %*"

पहले सीएमडी का उपयोग करते हुए, संयुक्त राष्ट्र बच गया

डीबगिंग उद्देश्यों के लिए, मैं आदेश भेजा पहली करने के लिए cmd को तो (विकल्प के साथ विंडो को बंद करने के लिए नहीं) और runas

cmd /k "runas /noprofile /user:Administrator "\"%SystemRoot%\System32\msiexec.exe\" /i \"%1\" %*""

सीधे या सेमी का उपयोग करना, पहले से बच गया

परिणाम दिखाता है कि पर्यावरणीय चर की सही व्याख्या नहीं की जा रही है। किन्हीं कारणों से %sइसे ए से बदल दिया जा रहा है1

Attempting to start "1ystemRoot\System32\msiexec.exe" /i "D:\Downloads\somePackage.msi"  as user "Administrator" ...
RUNAS ERROR: Unable to run - "1ystemRoot\System32\msiexec.exe" /i "D:\Downloads\somePackage.msi"
2: The system cannot find the file specified.

पहले सीधे या सेमी का उपयोग करके, बैकस्लैश के साथ भाग गया

चर से बचने के अपने पहले प्रयास के साथ, मुझे एक ही परिणाम मिलता है 1ystemRootयदि मैं \पर्यावरण चर (जैसे \%SystemRoot\%) के आसपास बैकस्लैश के साथ प्रतिशत संकेतों से बचता हूं, तो दोनों को पहले cmd भेजने के लिए या सीधे runas पर भेजने के लिए ।

मैंने \"पर्यावरण चर (जैसे \"%SystemRoot\"%) के आसपास उद्धरण लगाने की भी कोशिश की और वह भी काम नहीं किया।

वैकल्पिक हल

पहले सीएमडी का उपयोग करते हुए, प्रतिशत के साथ भाग गए

मैंने पाया कि पहले cmd और फिर runas पर भेजने के बाद निम्नलिखित काम करता है

cmd /k "runas /noprofile /user:Administrator "\"%%SystemRoot%%\System32\msiexec.exe\" /i \"%1\" %*""

Attempting to start "C:\Windows\System32\msiexec.exe" /i "D:\Downloads\somePackage.msi" as user "Administrator" ...

और इसने काम किया

सीधे रन का उपयोग करते हुए, प्रतिशत के साथ भाग गए

हालाँकि जब मैं समान सिंटैक्स का उपयोग सीधे रनों के साथ करता हूं , तो यह पर्यावरणीय चर की व्याख्या या प्रतिस्थापन नहीं करता है, जो मुझे बहुत अजीब लगता है।

runas /noprofile /user:Administrator "\"%%SystemRoot%%\System32\msiexec.exe\" /i \"%1\" %*"

यह परिणाम दिखाता है कि रनर्स पर्यावरण के चर को प्रतिस्थापित नहीं कर रहा है जैसा कि कमांड प्रॉम्प्ट विंडो जल्दी बंद होने से पहले दिखाया गया है

Attempting to start "%SystemRoot%\System32\msiexec.exe" /i "D:\Downloads\somePackage.msi" as user "Administrator" ...

सही रनस सिंटैक्स?

सीधे रन का उपयोग, सही वाक्यविन्यास?

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

(ऐसा लगता है कि यह अन्वेषक / पैरामीटर को अलग-अलग तरीके से भेजने या कमांड / पैरामीटर की व्याख्या करने वाले एक्सप्लोरर के साथ कुछ करने के लिए है।)

या क्या मुझे पर्यावरण चर पाने के लिए पहले cmd और फिर रनों को भेजना होगा , जैसा कि मैंने डिबगिंग के उद्देश्यों के लिए किया था?

संदर्भ

  1. Cmd.exe में पात्रों से बचने के लिए बैकस्लैश का उपयोग करना - सुपर उपयोगकर्ता
  2. runas जटिल तर्कों की अनुमति नहीं देता है? - स्टैक ओवरफ़्लो
  3. उद्धरण, एस्केप कैरेक्टर, डेलीमीटर - विंडोज सीएमडी - एसएस 64
  4. बैच फाइलें - एस्केप कैरेक्टर - रोब वैन डेर वूडे की स्क्रिप्टिंग पेज

जैसा कि पहले से ही आपके सिस्टम पथ में होगा, उसके %SystemRoot%\System32\msiexec.exeसाथ बदलने का प्रयास करें । msiexec%SystemRoot%\System32;
DavidPostill

जवाबों:


1

यदि आप cmdउन्हें विस्तार करने के लिए उपयोग किए बिना रजिस्ट्री कुंजी के अंदर पर्यावरण चर का उपयोग करना चाहते हैं, तो आपको "डिफ़ॉल्ट ())" रजिस्ट्री मान का डिफ़ॉल्ट REG_SZ नहीं, बल्कि एक REG_EXPAND_SZ रजिस्ट्री कुंजी प्रकार का उपयोग करना होगा।

लेकिन रजिस्ट्री संपादक आपको "(डिफ़ॉल्ट)" रजिस्ट्री मान के प्रकार को बदलने की अनुमति नहीं देता है, इसलिए, आपको कुछ का उपयोग करने की आवश्यकता होगी

reg add HKEY_CURRENT_USER\Software\Classes\Msi.Package\shell\RunAsAdmin\command /f /ve /t REG_EXPAND_SZ 

पहले रजिस्ट्री कुंजी बनाने के लिए, और उसके बाद जो आपके लिए आवश्यक है उसका मूल्य निर्धारित करें और विस्तारित पर्यावरण चर प्राप्त करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.