2009-03-20 6 views
6

मेरे पास एक दृश्य स्टूडियो सेटअप और परिनियोजन प्रोजेक्ट है। मैंने इसमें एक .cmd स्क्रिप्ट जोड़ दी है। स्क्रिप्ट को चलाने के लिए व्यवस्थापक निजीकरण की आवश्यकता होगी। जब उपयोगकर्ता setup.exe पर क्लिक करता है, तो यूएसी उपयोगकर्ता को व्यवस्थापक अनुमतियों के लिए संकेत देता है। इसलिए मैंने माना कि setup.exe के भीतर बनाई गई और कॉल की गई सभी प्रक्रियाएं व्यवस्थापक क्षमता में चलेंगी। इसलिए मैंने सेटअप को अपने कंसोल एप्लिकेशन को कॉल किया जिसमें निम्न कोड शामिल है।विस्टा में प्रशासक के रूप में cmd.exe प्रोग्रामेटिक रूप से चलाएं, सी #

ProcessStartInfo p1 = new ProcessStartInfo(); 
p1.UseShellExecute = true; 
p1.Verb = "runas"; 
p1.FileName = "cmd.exe"; 
Process.Start(p1); 

तो इसे व्यवस्थापक स्थान के तहत चलाने के रूप में काम करना चाहिए था।

मैं सी # प्रक्रिया वर्ग के माध्यम से cmd.exe को व्यवस्थापक के रूप में चलाने के लिए चाहता हूं। मैं विंडोज विस्टा चला रहा हूं।

मैंने कोशिश की काम नहीं किया! मैं क्या कर सकता हूँ!

उत्तर

10

runasआदेश को क्रियान्वित करने का प्रयास करें:

... 

using System.Diagnostics; 

... 

string UserName = "user name goes here"; 
ProcessStartInfo p1 = new ProcessStartInfo(); 
    p1.FileName = "runas"; 
    p1.Arguments = String.Format("/env /u:{0} cmd", UserName); 
Process.Start(p1); 

... 

(और मैं तुम्हें एक स्पष्ट UseShellExecute की जरूरत नहीं लगता है)

+0

मैं व्यवस्थापक का रूप धारण करना चाहते हैं। जैसे यह setup.exe स्वचालित रूप से होता है। यह पासवर्ड मांगता है! –

+4

जब आप किसी व्यवस्थापक का प्रतिरूपण करने का प्रयास करते हैं तो क्या आप एक अलग परिणाम की उम्मीद करते थे? अन्यथा कोड निष्पादित करने वाले किसी भी व्यक्ति को पासवर्ड जानने के बिना व्यवस्थापक हो सकता है। क्या यह आपको एक महत्वपूर्ण सुरक्षा जोखिम के रूप में नहीं रोकता है? –

+0

मैं सवाल दोबारा दोहराता हूं। कृपया इस पर एक नज़र डालें और टिप्पणी करें। –

6

बस इस प्रयास करें, यह मेरे लिए काम किया।

... 

using System.Diagnostics; 

... 

ProcessStartInfo startInfo = new ProcessStartInfo(); 
    startInfo.UseShellExecute = true;    
    startInfo.Verb = "runas"; 
    startInfo.Arguments = "/env /user:" + "Administrator" + " cmd"; 
Process.Start(startInfo); 

... 

आशुतोष

+0

मेरे लिए काम करता है .. thanx बहुत .. :) –

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