使用c#运行wmic.exe始终会生成错误消息“系统找不到指定的文件”。当它在命令提示符下工作时

时间:2014-04-15 16:35:01

标签: c# wmic

使用c#运行wmic.exe始终会生成错误消息"系统找不到指定的文件。"当它在命令提示符下工作时。

C#程序集是用"任何CPU"以.NET Framework 4为目标。

string fileName = Path.Combine(Environment.SystemDirectory, "wbem", "wmic.exe");
string arguments = @"/NAMESPACE:\\root\Microsoft\SqlServer\ComputerManagement10 PATH ServerNetworkProtocol";

Process process = new Process
{
    StartInfo =
    {
        FileName = fileName,
        Arguments = arguments,
        UseShellExecute = false,
        CreateNoWindow = true,
        RedirectStandardOutput = true,
        RedirectStandardError = true
    }
};

process.Start();

StreamReader output = process.StandardOutput;
StreamReader error = process.StandardError;

Console.WriteLine(output.ReadToEnd());
Console.WriteLine(error.ReadToEnd());

process.WaitForExit();
int exitCode = process.ExitCode;
process.Close();
Assert.AreEqual(0, exitCode);

错误讯息:

Assert.AreEqual failed. Expected:<0>. Actual:<-2147024894>.

标准控制台输出:

Node - MyComputerName
ERROR:
Description = The system cannot find the file specified.

我也尝试过使用:

string fileName = Environment.ExpandEnvironmentVariables("%comspec%");
string arguments = string.Format(
    @"/C {0} /NAMESPACE:\\root\Microsoft\SqlServer\ComputerManagement10 PATH ServerNetworkProtocol",
    Path.Combine(Environment.SystemDirectory, "wbem", "wmic.exe"));

但我遇到了同样的问题。

在命令提示符下运行时,它会生成预期的输出并返回退出代码零:

c:\windows\system32\wbem\wmic.exe /NAMESPACE:\\root\Microsoft\SqlServer\ComputerManagement10 PATH ServerNetworkProtocol && echo %errorlevel%
Enabled  InstanceName  MultiIpConfigurationSupport  ProtocolDisplayName  ProtocolName
TRUE     SQLEXPRESS    FALSE                        Shared Memory        Sm
FALSE    SQLEXPRESS    FALSE                        Named Pipes          Np
FALSE    SQLEXPRESS    TRUE                         TCP/IP               Tcp
FALSE    SQLEXPRESS    FALSE                        VIA                  Via
0

我还在MSDN论坛上发布了here

2 个答案:

答案 0 :(得分:0)

@"C:\Windows\System32\wbem\WMIC.exe" 这条路对我有用。

有关更多信息,请参阅: https://www.computerhope.com/wmic.htm#:~:text=Wmic%20is%20an%20external%20command,%5Cwbem%5CWMIC.exe

答案 1 :(得分:0)

问题与执行代码的测试过程有关。

要解决此问题,我必须选择:在 Visual Studio > 测试 > 适用于 AnyCPU 项目的处理器架构 > x64。

选择“自动”或“x86”会导致上述错误。