2015-07-27 36 views
5

के रूप में चलने वाली प्रक्रिया से उपयोगकर्ता के रूप में एक प्रक्रिया प्रारंभ करें, मैं एक और प्रोग्राम शुरू करना चाहता हूं जो व्यवस्थापक के रूप में चल रहे प्रोग्राम से उपयोगकर्ता के रूप में चलता है।व्यवस्थापक को

समस्या यह है कि दूसरे प्रोग्राम को दृष्टिकोण का उपयोग करने की आवश्यकता है, यदि प्रोग्राम व्यवस्थापक के रूप में चलता है तो यह संभव नहीं है। मुख्य कार्यक्रम व्यवस्थापक के रूप में चलाने की जरूरत है।

मैं पहले से ही इस दो समाधान के साथ आया था:

Process.Start("cmd.exe", @"/C runas.exe /savecred /user:" + Environment.UserDomainName + "\\" + Environment.UserName + " " + "\"SomeProgram.exe" + "\""); 

या

Process.Start("explorer.exe", "SomeProgram.exe"); 

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

तो मुझे पता है कि कोई अन्य समाधान है, जहां उपयोगकर्ता को अपना पासवर्ड दर्ज करने की आवश्यकता नहीं है?

यह मेरे लिए काम करने के लिए लगता है:

Process.Start("cmd.exe", @"/C runas.exe /TrustLevel:0x20000 " + "\"SomeProgram.exe" + "\""); 
+1

रेमंड चेन में इस का वर्णन करने का एक अच्छा काम किया है [मैं अपने ऊपर उठाया प्रक्रिया से एक unelevated प्रक्रिया का शुभारंभ और इसके विपरीत कर सकते हैं कैसे?] (Http://blogs.msdn.com/b/oldnewthing/archive/ 2013/11/18/10468726.aspx) (जिसमें सभी प्रकार के विवरण भी शामिल हैं जैसे कि जब ऊंचाई ने शेष सत्र के लिए उपयोग किए जाने वाले लोगों के लिए अलग-अलग खाता प्रमाण-पत्रों का उपयोग किया) –

+0

लेकिन यह उपयोग करने का एक और तरीका नहीं है नौकरी करने के लिए exploer.exe? वैसे भी मुझे एक और समाधान मिला, मैंने इसे मूल पोस्ट में जोड़ा। – FKorni

+0

क्या आपका समाधान ऐलिस के व्यवस्थापक खाते से बॉब के उपयोगकर्ता खाते (रेमंड्स लिंक से उदाहरणों का उपयोग करके) को डी-एलिवेट करने के साथ सही तरीके से सौदा करता है? –

उत्तर

1

Process वर्ग StartInfo संपत्ति ProcessStartInfo वर्ग का एक उदाहरण है कि है। यह वर्ग UserName, Domain और Password सदस्यों को उस उपयोगकर्ता को निर्दिष्ट करने के लिए खुलासा करता है जिसे आप प्रक्रिया को चलाने के लिए चाहते हैं।

Process myProcess = new Process(); 
myProcess.StartInfo.FileName = fileName; 
myProcess.StartInfo.UserName = userName; 
myProcess.StartInfo.Domain = domain; 
myProcess.StartInfo.Password = password; 
myProcess.Start(); 
+0

इसका मतलब यह होगा कि मुझे उपयोगकर्ता पासवर्ड पता होना चाहिए, जो मामला नहीं है। कार्यक्रम का प्रयोग कई अलग-अलग उपयोगकर्ताओं द्वारा किया जाता है, इसलिए यह मेरे लिए एक विकल्प नहीं है। – FKorni

+0

@FKorni मुझे नहीं लगता कि आप किसी भी उपयोगकर्ता को क्रेडेंशियल –

+0

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

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