简单的CMD问题【100分!!!】

T2DK45447 2007-02-28 01:40:04
System.Diagnostics.Process pro =new System.Diagnostics.Process();
pro.StartInfo.FileName= "CMD.EXE";
pro.StartInfo.Arguments = @"C:\TEST.BAT";
pro.StartInfo.RedirectStandardError = true;
pro.StartInfo.RedirectStandardInput = true;
pro.StartInfo.RedirectStandardOutput= true;
pro.StartInfo.ErrorDialog = true;
pro.StartInfo.CreateNoWindow = false;
pro.StartInfo.UseShellExecute= false;
pro.Start();


同样的程序在别的机器上就可以运行 在某些机器上就不能运行
不能运行的机器可以正常运行System.Diagnostics.Process.Start(strFilePath)这样的方法
很奇怪了 错误的现象是出现CMD的窗口,窗口里没有任何字符而任务管理器里也没有cmd.exe这个进程
...全文
305 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
Nara 2007-02-28
  • 打赏
  • 举报
回复
打开eventvwr看看有什么线索,不行的话再看看DotNetFramework的版本是否相同
withcsharp 2007-02-28
  • 打赏
  • 举报
回复
public static void CreateProcess(string fn, string Arguments, MsgCallback Callback)
{
ProcessStartInfo pi = new ProcessStartInfo();
pi.FileName = fn;
pi.Arguments = Arguments;
pi.UseShellExecute = false;
pi.CreateNoWindow = true;
pi.WindowStyle = ProcessWindowStyle.Hidden;
pi.RedirectStandardOutput = true;
pi.RedirectStandardError = true;

System.Diagnostics.Process p = new Process();


p.StartInfo = pi;
p.Start();

while (!p.HasExited)
{
System.Windows.Forms.Application.DoEvents();

if (Callback != null)
{
string s;
while ((s = p.StandardOutput.ReadLine()) != null)
{
Callback(s);
}
}
p.WaitForExit(100);
}

}



CreateProcess(dllPath + @"hhc.exe", @" """ + tmpPath + @"\hhp.hhp""", new MsgCallback(OutputHandler));

估计是 路径的问题
T2DK45447 2007-02-28
  • 打赏
  • 举报
回复
谢谢 hertcloud(·£孙子兵法£·)
还是不行 当pro.Start();以后任务管理器里面根本就没有CMD.EXE
手动执行这个批处理文件运行的时间应该很长 在管理器里面应该可以查看到的
所以这个进程并没有被打开。。。。
为什么打不开呢......
周公 2007-02-28
  • 打赏
  • 举报
回复
关注一下,请大家帮忙看看这个100分的问题,网址:
http://community.csdn.net/Expert/topic/5366/5366610.xml?temp=.5854761
hertcloud 2007-02-28
  • 打赏
  • 举报
回复
System.Diagnostics.Process pro =new System.Diagnostics.Process();
pro.StartInfo.FileName= "CMD.EXE";
pro.StartInfo.Arguments = @"C:\TEST.BAT";
pro.StartInfo.RedirectStandardError = true;
pro.StartInfo.RedirectStandardInput = true;
pro.StartInfo.RedirectStandardOutput= true;
pro.StartInfo.ErrorDialog = true;
pro.StartInfo.CreateNoWindow = false;
pro.StartInfo.UseShellExecute= false;
pro.Start();
pro.WaitForExit() ;//等待执行
pro.Close();
//这样呢.
T2DK45447 2007-02-28
  • 打赏
  • 举报
回复
我是楼主
程序在winform中 应该没有问题吧
lovehongyun 2007-02-28
  • 打赏
  • 举报
回复
关注..
hertcloud 2007-02-28
  • 打赏
  • 举报
回复
你是在winform中还是在asp.net中
在asp.net要 设置相应的用户权限.
Raya 2007-02-28
  • 打赏
  • 举报
回复
和系统权限有没有关系?
Qim 2007-02-28
  • 打赏
  • 举报
回复
mark
T2DK45447 2007-02-28
  • 打赏
  • 举报
回复
我是楼主
谢谢几位

我把C:\windows\system32\CMD.EXE 这个完整路径都写进去了 问题依旧 "/c" 加不加都一样
公司的机器都是一样的系统 一样的补丁啊 没有什么不一样的地方
直接运行批处理文件是绝对没问题的
奇怪了。。。。。
greennetboy 2007-02-28
  • 打赏
  • 举报
回复
测试在中文winxp,2000,2003均可以运行,桌面上的程序也可以启动
greennetboy 2007-02-28
  • 打赏
  • 举报
回复
下面是我写的用于调用其它进程的通用函数
--------------------------------------------------------
public static void Excute(string cmdText)
{
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("\""+cmdText+"\"");
p.StandardInput.WriteLine("exit");
while(!p.HasExited)
{
p.WaitForExit();
}
p.Close();
}
best8625 2007-02-28
  • 打赏
  • 举报
回复
pro.StartInfo.FileName= "CMD.EXE";
Change to
pro.StartInfo.FileName= "C:\windwos\system32\CMD.EXE";

Try
syeerzy 2007-02-28
  • 打赏
  • 举报
回复
会不会是系统环境变量的问题? 检查一下环境变量. 试试把cmd.exe的全文件路径一起下去试试.如果可以,那么就是环境变量的问题了.如果还不行的话,检查正常的机器跟不正常的机器在操作系统等各个方面有什么不同,以及补丁情况.
csShooter 2007-02-28
  • 打赏
  • 举报
回复
确保TEST.BAT文件一起发布
hertcloud 2007-02-28
  • 打赏
  • 举报
回复
改成下面试下
pro.StartInfo.Arguments = "/c " + @"C:\TEST.BAT";

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧