2010-04-25 73 views
7

我需要通過C#來傳遞多個命令行參數被稱爲handle.exe過程傳遞多個命令行參數: http://www.google.com.mt/search?sourceid=chrome&ie=UTF-8&q=handle.exe如何通過C#

首先,我需要運行可執行文件通過管理員權限。這個職位已經幫助我實現這一點: programatically run cmd.exe as adminstrator in vista, c#

但隨後談到調用實際行參數,例如下一個問題「-P探索」

如何指定命令行參數一起,也許連續?

當前代碼如下:

 Process p = new Process(); 
     ProcessStartInfo processStartInfo = new ProcessStartInfo("filePath"); 
     processStartInfo.CreateNoWindow = true; 
     processStartInfo.UseShellExecute = false; 
     processStartInfo.RedirectStandardOutput = true; 
     processStartInfo.RedirectStandardInput = true; 
     processStartInfo.Verb = "runas"; 
     processStartInfo.Arguments = "/env /user:" + "Administrator" + " cmd"; 

     p.StartInfo = processStartInfo; 
     p.Start(); 
     string output = p.StandardOutput.ReadToEnd(); 
     p.WaitForExit(); 
     Console.WriteLine(output);  

感謝

+0

主函數通常不會從運行應用程序的文本集合中取出。如果是這樣,你能不能解釋一下? – percent20 2010-04-25 21:59:18

+0

問題是我添加它們,而不是檢索它們 – sfarrugia 2010-04-25 22:07:26

+0

你的代碼有什麼問題? – 2010-04-27 11:43:26

回答

0

如果您嘗試使用提升的權限運行進程,則可能比調用runas更好。

1

我相信你正在尋找的答案是正確的Runas command documentation

runas /user:[email protected] "notepad my_file.txt" 

看來,最後一個參數的RunAs命令是正在使用任何參數一起運行的命令。關鍵是使用引號將實際的命令可執行文件與其參數分組,以便這些值不被視爲runas命令的單獨參數,而是作爲單獨的命令發佈。

因此在您的示例中,您可能需要執行以下操作。

processStartInfo.Arguments = "/env /user:" + "Administrator" + " \"cmd -p explore\""; 
+0

我試過這個,我也嘗試添加cmd參數,如/ k(繼續執行),但仍然沒有任何作用。 – sfarrugia 2010-04-28 01:34:50