2013-07-14 74 views
2

我正在嘗試執行一些「netsh」命令,但不管我做了什麼,我總是收到相同的錯誤「未找到以下命令netsh」。未找到以下命令netsh

我可以驗證路徑「C:\ Windows \ System32 \ netsh.exe」是否有效,並且當我通過命令提示符使用同一組參數運行相同的命令時;一切正常。

這是我正在使用的代碼示例。

ProcessStartInfo procInfo = new ProcessStartInfo 
      { 
       WorkingDirectory = System.IO.Path.GetPathRoot(System.Environment.SystemDirectory), 
       FileName = @"netsh.exe", 
       RedirectStandardOutput = true, 
       RedirectStandardError = true, 
       UseShellExecute = false, 
       CreateNoWindow = true, 
       Arguments = String.Format(@"{0}\{1} {2}", System.Environment.SystemDirectory, @"netsh.exe", "wlan start hostednetwork"), 
       WindowStyle = ProcessWindowStyle.Hidden 
      }; 

      Process proc = Process.Start(procInfo); 
      proc.WaitForExit(); 

回答

3

您目前正在傳入參數的完整路徑,當我懷疑你想它傳遞的。例如:

FileName = Path.Combine(Environment.SystemDirectory, "netsh.exe"), 
Arguments = "wlan start hostednetwork" 

例如,這個簡短但完整的程序不會引發任何異常 - 我不知道是否你想要做什麼,但它並沒有失敗,您所描述的異常:

using System; 
using System.Diagnostics; 
using System.IO; 

class Test 
{  
    static void Main() 
    { 
     ProcessStartInfo procInfo = new ProcessStartInfo 
     { 
      WorkingDirectory = Path.GetPathRoot(Environment.SystemDirectory), 
      FileName = Path.Combine(Environment.SystemDirectory, "netsh.exe"), 
      Arguments = "wlan start hostednetwork", 
      RedirectStandardOutput = true, 
      RedirectStandardError = true, 
      UseShellExecute = false, 
      CreateNoWindow = true, 
      WindowStyle = ProcessWindowStyle.Hidden 
     }; 

     Process proc = Process.Start(procInfo); 
     proc.WaitForExit(); 
    } 
} 

(請注意,當你把using指令的優勢,而不是使用完全合格的名字,順便的代碼是如何變得更簡潔。)

+0

這工作正常,謝謝。 –

+0

不幸的是,它不能在這裏工作(Win7)。它仍然會顯示「找不到以下命令」,但是當它顯示「command」時,它指向文件名netsh.exe之後的參數..出於某種奇怪的原因。 – markj

+0

@markj:這聽起來像是一個問題你給netsh的命令。你想做什麼? –