SunK

无聊,竟也无聊的苍白
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

网上常见C#调用cmd等程序的一点小问题

Posted on 2007-04-10 19:44  SunK  阅读(1751)  评论(0编辑  收藏  举报
        上网搜到了一段资料,是C#调用CMD执行ping命令的,给出的代码断如下:
Process p = new Process();
p.StartInfo.FileName 
= "cmd.exe";
p.StartInfo.UseShellExecute 
= false;
p.StartInfo.RedirectStandardInput 
= true;
p.StartInfo.RedirectStandardOutput 
= true;
p.StartInfo.RedirectStandardError 
= true;
p.StartInfo.CreateNoWindow 
= true;
p.Start(); 
p.StandardInput.WriteLine(
"ping " + ip);
p.StandardInput.WriteLine(
"exit");
p.StandardOutput.ReadToEnd();
p.Close();

        很简单的,把他加进我的程序,编译通过.但在执行的时候出问题了,ping命令好像没执行到,反而又打开了我的程序
,调试的时候发现并没有什么问题,简简单单地用IceSword看了一下进程创建情况,发现的确是调用了ping.exe,这个时候,我也突然明白了,我的小程序也叫ping.exe,他到底是执行那个呢?...所以,在程序里最好还是把路径也一起写出来,免得出错,就修改了一句话,修改后如下:
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.Start(); 
p.StandardInput.WriteLine("%systemroot%\\system32\\ping " + ip);
p.StandardInput.WriteLine("exit");
p.StandardOutput.ReadToEnd();
p.Close();
        这样,那个问题就解决了,但你的程序名字是cmd.exe的话还是出问题,给p.StartInfo.FileName="cmd.exe";换成绝对路径根本不行,不知道有什么好办法么?