【发布时间】:2008-08-29 08:36:36
【问题描述】:
我正在尝试以其他用户身份从我的网络应用程序运行批处理文件。由于某种原因,批处理文件挂起!我可以在任务管理器中看到“cmd.exe”正在运行,但它只是永远坐在那里,无法被杀死,并且批处理文件没有运行。这是我的代码:
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);
如果您没有猜到,这个批处理文件会构建我的应用程序(与执行此命令的应用程序不同的应用程序)。
过程.开始(psi); line 应该立即返回,但批处理文件似乎挂起,没有执行。有什么想法吗?
编辑:有关批处理文件的内容,请参阅下面的答案。
- 永远不会创建 output.txt。
我添加了这些行:
psi.RedirectStandardOutput = true;
Process p = Process.Start(psi);
String outp = p.StandardOutput.ReadLine();
并在调试模式下逐步完成它们。代码挂在ReadLine() 上。我被难住了!
【问题讨论】:
-
您能否发布您的批处理文件的代码,您是否尝试过从您的批处理文件中发出回显以便您可以看到它正在启动?