与Process.Start()一起使用时,NET VIEW的行为会有所不同

时间:2014-02-07 09:06:24

标签: c# cmd

我在程序中使用net.exe来查看工作组中的所有计算机。

代码如下:

   var net = new Process();

   net.StartInfo.FileName = "net.exe";
   net.StartInfo.CreateNoWindow = true;
   net.StartInfo.Arguments = @"VIEW /DOMAIN:my-workgroup";
   net.StartInfo.RedirectStandardOutput = true;
   net.StartInfo.UseShellExecute = false;
   net.StartInfo.RedirectStandardError = true;
   net.Start();

当我在shell中执行时,该命令工作正常,但是当我使用显示的代码时,该命令返回the device is not connected

我也尝试过以管理员身份运行程序,这没什么区别。

指定的域名实际上是工作组

对于在shell中运行的net.exe,指定工作组可以正常工作。

此外,当我为不同的域尝试net view时,代码也有效。因此,当我从shell或Process.Start()运行命令时,环境必定存在一些差异。

命令在shell中与Process.Start()表现不同的原因是什么?

1 个答案:

答案 0 :(得分:0)

我不知道它是否能解决你所寻找的问题,但这对我有用;

您需要挂钩捕获输出以将其带到控制台

class Program
{
    static void Main(string[] args)
    {
        var net = new Process()
        {
            StartInfo = new ProcessStartInfo("net.exe", @"view /domain:domain")
            {
                RedirectStandardOutput =  true,
                UseShellExecute = false,
            },


        };
        net.OutputDataReceived += WriteToConsole;
        net.ErrorDataReceived += WriteToConsole;
        net.Start();
        net.BeginOutputReadLine();

        net.WaitForExit();
        Console.ReadLine();
    }

    private static void WriteToConsole(object sender, DataReceivedEventArgs e)
    {
        Console.WriteLine(e.Data);
    }
}