मेरे पास एक .bat
फाइल है जिसका उपयोग मैं कुछ प्रोग्राम लॉन्च करने के लिए करता हूं। उनमें से कुछ को विशेषाधिकारों की आवश्यकता होती है (ia devcon
-based does-device-मौजूद चेक), लेकिन कुछ नहीं करते हैं। इसलिए, मैं .bat
प्रशासक के रूप में चलाता हूं , और runas
दूसरों को चलाने के लिए कमांड का उपयोग करता हूं ।
runas /trustlevel:0x20000 "C:\Folder\foo.exe"
runas /trustlevel:0x20000 "C:\Folder\bar.exe"
यह कुछ कार्यक्रमों के लिए काम करता है। हालाँकि, कुछ के लिए यह त्रुटि संदेश दिखाता है (फिनिश से स्वयं द्वारा अनुवादित, अंग्रेजी में थोड़ा भिन्न हो सकता है):
ERROR: Can not execute - bar.exe
740: The requested operation requires elevation.
अजीब हिस्सा है, अगर मैं इसे बनाता हूं .bat
:
@echo off
start "" "bar.exe"
और इसे चलाने के साथ runas
, यह एक आकर्षण की तरह काम करता है। उनका संयोजन
runas /trustlevel:0x20000 "start \"\" \"C:\Folder\bar.exe\""
काम नहीं करेगा, क्योंकि start
फाइल नहीं है। इसका क्या कारण होगा?
अपडेट: मैंने एक और कमांड की कोशिश की, और यह काम कर गया।
runas /trustlevel:0x20000 "cmd /c start \"\" \"C:\Folder\bar.exe\""
लेकिन , जो मैं जानना चाहता हूं वह यह नहीं है कि इसे कैसे काम किया जाए बल्कि ऐसा क्यों होता है ।
अद्यतन 2: जैसा कि and31415 द्वारा टिप्पणियों में सुझाव दिया गया है कि यह foo.exe
और के बीच का अंतर है bar.exe
। लेकिन, उन्हें चलाने के तरीकों में अंतर होना चाहिए, क्योंकि उनके परिणाम अलग-अलग हैं; यही अंतर मैं देख रहा हूं।
अपडेट 3: मैंने रिसोर्स एडिटर का उपयोग करते हुए कार्यक्रमों के मेनिफेस्टों की जाँच की , और यहाँ वे हैं। ऐसा लगता है कि उनके पास एक ही निष्पादन स्तर है ( asInvoker
जो कि सबसे कम उपयोगकर्ता स्तर है)।
ऊपरी एक है bar.exe
और निचला एक है foo.exe
। (मुझे पता है, चारों ओर गलत तरीका: डी)
अद्यतन 4:psexec
उन्नत कमांड प्रॉम्प्ट से भी होने की पुष्टि :
psexec -l -i bar.exe
एक त्रुटि मिलती है,
psexec -l -i cmd /C start "" "bar.exe"
काम करता है।
requestedExecutionLevel
टैग मान पर सेट है। इसके अतिरिक्त आप परीक्षण कर सकते हैं कि क्या आप प्रोग्राम द्वारा सीमित उपयोगकर्ता के रूप में इस मुद्दे को पुन: उत्पन्न कर सकते हैं psexec
।
runas
?