我正在尝试执行一些“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();
答案 0 :(得分:3)
您当前正在传递参数中的完整路径名,当我怀疑您要将其作为 filename 传递时。例如:
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
指令而不是使用完全限定名称时,代码如何变得不那么混乱。)