【问题标题】:the following command was not found netsh未找到以下命令 netsh
【发布时间】:2013-07-14 18:29:47
【问题描述】:

我正在尝试执行几个“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();

【问题讨论】:

    标签: c# netsh


    【解决方案1】:

    当我怀疑您想将其作为 文件名 传递时,您当前正在传递 参数 中的完整路径名。例如:

    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 指令而不是使用完全限定名称时,请注意代码如何变得不那么混乱。)

    【讨论】:

    • 不幸的是,它在这里不起作用(Win7)。它仍然说“找不到以下命令”,但是当它说“命令”时,它指的是文件名 netsh.exe 之后的参数..出于某种奇怪的原因..
    • @markj:听起来你给 netsh 的命令有问题。你想做什么?
    • @JonSkeet:我尝试了以下命令:netsh mbn connect interface="Mobile Broadband" connmode=name name="TDC Mobil" 目的是连接移动宽带连接。我已经知道引号是这里的罪魁祸首——以某种奇怪的方式。我终于通过创建一个批处理文件,让 AutoHotkey 脚本运行批处理文件,然后让我的主应用程序运行这个脚本(编译成一个 exe 文件)来让它工作。一种真正的解决方法,但稳定且功能正常:)
    • 是的,我尝试以 3-4 种不同的方式转义引号。直接从我的主应用程序作为进程运行批处理文件也返回了相同的错误。
    • 或者实际上,我不能百分百确定引号是问题所在。我可能遗漏了其他东西——某处明显的东西..
    猜你喜欢
    • 2011-12-21
    • 2013-04-21
    • 2021-12-16
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多