रूप @mtijn कहा कि तुम एक बहुत है कि आप भी बाद में अधिभावी रहे हो रहा है। आपको यह सुनिश्चित करने की भी आवश्यकता है कि आप चीजों से बच रहे हैं। ,
dir c:\
पहले अगर आप सिर्फ एक खिड़की अभी खुले और बंद पॉप जाएगा क्योंकि खिड़की खुली रखने के लिए कुछ भी नहीं Process.Start()
के माध्यम से इस आदेश को दौड़ा:
मान लें कि आप निम्न आदेश उठाया चलाना चाहते हैं । यह आदेश और निकास को संसाधित करता है। खिड़की खुला रखने के लिए हम अलग कमांड विंडो में आदेश लपेट और /K
स्विच का उपयोग यह चालू रखने के लिए कर सकते हैं:
cmd /K "dir c:\"
कि आदेश ऊंचा हम runas.exe
उपयोग कर सकते हैं बस के रूप में आप सिवाय इसके कि हम से बचने के लिए की जरूरत थे चलाने के लिए चीजें थोड़ा और। सहायता दस्तावेज़ों के अनुसार (runas /?
) हम आदेश में किसी भी उद्धरण को runas
पर बैकस्लैश से बचने की आवश्यकता है। दुर्भाग्यवश उपरोक्त आदेश के साथ ऐसा करने से हमें एक डबल बैकस्लैश मिलता है जो cmd पार्सर को भ्रमित करता है ताकि उसे भी बचने की आवश्यकता हो। अंत में
cmd /K \"dir c:\\\"
, वाक्य रचना कि आपके द्वारा दी हम एक runas
आदेश में सब कुछ लपेट और उद्धरण का एक और सेट में हमारे उपरोक्त आदेश संलग्न कर सकते हैं का उपयोग कर:: तो उपरोक्त आदेश जा रहा है खत्म हो जाएगा
runas /env /user:Administrator "cmd /K \"dir c:\\\""
कमांड प्रॉम्प्ट से उपरोक्त आदेश चलाएं ताकि यह सुनिश्चित किया जा सके कि यह अपेक्षित काम कर रहा है।
को देखते हुए सभी कि अंतिम कोड आसान हो जाता है इकट्ठा करने के लिए:
//Assuming that we want to run the following command:
//dir c:\
//The command that we want to run
string subCommand = @"dir";
//The arguments to the command that we want to run
string subCommandArgs = @"c:\";
//I am wrapping everything in a CMD /K command so that I can see the output and so that it stays up after executing
//Note: arguments in the sub command need to have their backslashes escaped which is taken care of below
string subCommandFinal = @"cmd /K \""" + subCommand.Replace(@"\", @"\\") + " " + subCommandArgs.Replace(@"\", @"\\") + @"\""";
//Run the runas command directly
ProcessStartInfo procStartInfo = new ProcessStartInfo("runas.exe");
procStartInfo.UseShellExecute = true;
procStartInfo.CreateNoWindow = true;
//Create our arguments
string finalArgs = @"/env /user:Administrator """ + subCommandFinal + @"""";
procStartInfo.Arguments = finalArgs;
//command contains the command to be executed in cmd
using (System.Diagnostics.Process proc = new System.Diagnostics.Process())
{
proc.StartInfo = procStartInfo;
proc.Start();
}
स्रोत
2011-09-30 13:56:18
** यह process.standardinput का उपयोग किए बिना आदेश पर अमल करना संभव है? मैं आदेश में निष्पादित आदेश को निष्पादित करने का प्रयास करता हूं लेकिन आदेश निष्पादित नहीं होता है। ** आप वर्तमान में इसका उपयोग नहीं कर रहे हैं, इसलिए यह प्रश्न, बहुत अधिक समझ में नहीं आता है। कृपया अपने उपयोगकर्ता का पक्ष करें और कमांड प्रॉम्प्ट को दृश्यमान होने दें, ताकि वे जान सकें कि क्या हो रहा है। –
आप 'वर्ब' नहीं चाहते हैं। इसका मतलब यह नहीं है कि आप क्या सोचते हैं इसका मतलब है। मुझे लगता है। –
@Ramhound procStartInfo.Arguments = "/ env/user:" + "प्रशासक" + "cmd" + ** कमांड **; – purvang