2017-08-30 73 views
1

我在以前版本的Visual Studio 2013 Pro - C#Forms應用程序中運行此代碼,它工作得很好。 但是我現在已經下載了Visual Studio 2017社區,並且相同的代碼不再工作。它只是打開命令提示符空白窗口,不執行任何命令。從C#Windows桌面應用程序執行命令提示符查詢

enter image description here

而且,它甚至不要求任何管理權限了。

任何人都可以請建議,我應該如何得到這個社區版的工作。 謝謝。

 Process p1 = new Process(); 
     p1.StartInfo.FileName = "cmd.exe"; 
     p1.StartInfo.Arguments = "java"; 
     p1.StartInfo.UseShellExecute = false; 
     p1.StartInfo.RedirectStandardOutput = true; 
     p1.StartInfo.WindowStyle = ProcessWindowStyle.Normal; 
     p1.StartInfo.CreateNoWindow = false; 
     p1.StartInfo.Verb = "runas"; 
     p1.Start(); 
     p1.StandardOutput.ReadToEnd(); 
+0

無法正常工作:不編譯,在運行時拋出異常,......?請添加更多關於該問題的信息。 – dlatikay

+0

對於模糊的術語感到抱歉。已更新 – Thompson

+0

您正在以「java」作爲參數啓動cmd.exe。當我在Windows 10中執行相同的操作時,運行「cmd.exe java」,會打開一個新的命令窗口,並且沒有其他任何事情發生。你能指望什麼?顯示java命令行幫助? – dlatikay

回答

1

它看起來像你缺少從你的論點

p1.StartInfo.Arguments = 「/ C的Java」/ C;

Process p1 = new Process(); 
     p1.StartInfo.FileName = "cmd"; 
     p1.StartInfo.Arguments = "/c java"; 
     p1.StartInfo.UseShellExecute = false; 
     p1.StartInfo.RedirectStandardOutput = true; 
     p1.StartInfo.RedirectStandardError = true; 
     p1.StartInfo.Verb = "runas"; 

     p1.Start(); 

     StringBuilder sb = new StringBuilder(); 
     while (!(p1.StandardOutput.EndOfStream)) 
      sb.Append($"{ p1.StandardOutput.ReadLine()}"); 


     while (!(p1.StandardError.EndOfStream)) 
      sb.Append($"{ p1.StandardError.ReadLine()}"); 

     p1.WaitForExit(); 
+0

p1.StandardOutput.ReadToEnd();在我的情況下是錯誤的。它顯示過程尚未開始 – Thompson

+0

更新答案以解決指定的問題 –