一下代码为什么什么也没显示??(我是故意net use 一个无法登陆的电脑的),直接在CMD下使用会显示错误,而C#调用为什么没有显示,我应该如何判断有没有登陆成功
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;namespace ConsoleApplication10
{
    class Program
    {
        static void Main(string[] args)
        {
            CMD cmd = new CMD();
            string command = @"net use \\172.113.113.113 ""1234"" /user:""administrator""";
            Console.WriteLine("CMD命令:"+command);
            string result = cmd.CMDRun(command);
            Console.WriteLine(result);
            Console.ReadKey();
        }
    }
    class CMD
    {
        public string CMDRun(string command)
        {
            Process p = new Process();
            p.StartInfo.Arguments = "/c" + command;
            p.StartInfo.CreateNoWindow = false;
            p.StartInfo.FileName = "cmd.exe";
            p.StartInfo.RedirectStandardError = true;
            p.StartInfo.RedirectStandardInput = true;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.UseShellExecute = false;
            p.Start();            string result = p.StandardOutput.ReadToEnd();
            return result;
        }
    }
}

解决方案 »

  1.   

    http://www.cnblogs.com/h2appy/articles/1204277.html
      

  2.   

    既然是错误,那就应该获取错误流,把p.StandardOutput.ReadToEnd();换成这个p.StandardError.ReadToEnd();就可以了,要想两个都保留的话,可以换成这样string result = p.StandardOutput.ReadToEnd();
    if (result == "")
    {
        return p.StandardError.ReadToEnd();
    }
    return result;
      

  3.   

    既然设置了重定向
    p.StartInfo.RedirectStandardOutput = true;
    那么可以使用
    process.StandardOutput.ReadToEnd();