我想從我的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