我想从我的web应用程序运行批处理文件,作为另一个用户。由于某些原因,批处理文件挂起!我可以看到“cmd.exe”在任务管理器中运行,但它只是永远坐在那里,无法被杀死,并且批处理文件没有运行。这里是我的代码:C#.Net:为什么我的Process.Start()挂起?
SecureString password = new SecureString();
foreach (char c in "mypassword".ToCharArray())
password.AppendChar(c);
ProcessStartInfo psi = new ProcessStartInfo();
psi.WorkingDirectory = @"c:\build";
psi.FileName = Environment.SystemDirectory + @"\cmd.exe";
psi.Arguments = "/q /c build.cmd";
psi.UseShellExecute = false;
psi.UserName = "builder";
psi.Password = password;
Process.Start(psi);
如果没猜错,这个批处理文件建立我的应用程序(不同的应用程序比正在执行此命令的一个)。
Process.Start(psi);行立即返回,因为它应该,但批处理文件似乎挂起,而不执行。有任何想法吗?
编辑:见我的回答如下的批处理文件的内容。
- output.txt永远不会被创建。
我添加这些行:
psi.RedirectStandardOutput = true;
Process p = Process.Start(psi);
String outp = p.StandardOutput.ReadLine();
,并通过他们在调试模式下阶梯。代码挂在ReadLine()
上。我很难过!
你可以发布你的批处理文件的代码,并且你是否尝试从你的批处理文件发出回声,以便你可以看到它正在启动? – 2008-08-29 08:40:03