Tôi đang cố gắng chạy một lệnh thông qua dấu nhắc lệnh từ một ứng dụng web ASP.Net. Tôi có thể thấy quá trình bắt đầu trong trình quản lý tác vụ trên máy chủ web, tuy nhiên quá trình này chỉ nằm ở đó và không bao giờ thoát cũng như không chạy các lệnh mà tôi đã chỉ định.Tại sao sẽ không "cmd.exe/C lệnh" kết thúc khi được gọi thông qua Process.Start()?
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/C " +command;
startInfo.UserName = "myuser";
startInfo.UseShellExecute = false;
startInfo.RedirectStandardOutput = true;
startInfo.Domain = "mydomain";
startInfo.CreateNoWindow = true;
String pass = "mypass";
System.Security.SecureString secPass = new System.Security.SecureString();
foreach (char c in pass.ToCharArray())
{
secPass.AppendChar(c);
}
secPass.MakeReadOnly();
startInfo.Password = secPass;
process.StartInfo = startInfo;
process.Start();
//output = process.StandardOutput.ReadToEnd();
process.WaitForExit();
process.Close();
Tôi đã thử cả hai có và không đọc đầu ra tiêu chuẩn.
Ứng dụng sẽ treo trên process.WaitForExit();
cho đến khi tôi giết quá trình thông qua trình quản lý tác vụ.
Nếu bạn thử đọc đầu ra tiêu chuẩn, bạn đã xem đầu ra chuẩn là gì chưa? Hãy thử đọc lỗi tiêu chuẩn là tốt; bạn có thể nhận được một số loại thông báo lỗi, có thể là một trong đó thậm chí nói "Đẩy bất kỳ chìa khóa để tiếp tục ..." hoặc một cái gì đó để có hiệu lực đó. – GWLlosa
@GWLlosa, cả hai đầu ra tiêu chuẩn và lỗi chuẩn đều trống. Tôi nghĩ về điều đó "Đẩy bất kỳ chìa khóa ..." vì vậy tôi đã cố gắng viết một ký tự cho đầu vào tiêu chuẩn, nhưng vẫn không có gì. –
Tại sao chạy nó thông qua cmd? Tại sao không chỉ chạy nó trực tiếp? –