gpt4 book ai didi

C#.Net : Why is my Process. Start() 挂起?

转载 作者:可可西里 更新时间:2023-11-01 08:09:56 24 4
gpt4 key购买 nike

我正在尝试以另一个用户的身份从我的网络应用程序运行批处理文件。由于某种原因,批处理文件挂起!我可以在任务管理器中看到“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);行立即返回,因为它应该,但批处理文件似乎挂起,没有执行。有什么想法吗?

编辑:有关批处理文件的内容,请参阅下面的回答。

  • 永远不会创建 output.txt。

我添加了这些行:

psi.RedirectStandardOutput = true;
Process p = Process.Start(psi);
String outp = p.StandardOutput.ReadLine();

并在 Debug模式下逐步执行它们。代码卡在 ReadLine() 上。我很难过!

最佳答案

我相信我已经找到了答案。似乎 Microsoft 以其无限的智慧阻止了 Windows Server 2003 中的 IIS 执行批处理文件。Brenden Tompkins 在这里有一个解决方法:

http://codebetter.com/blogs/brendan.tompkins/archive/2004/05/13/13484.aspx

这对我不起作用,因为我的批处理文件使用 IF 和 GOTO,但它肯定适用于简单的批处理文件。

关于C#.Net : Why is my Process. Start() 挂起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34183/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com