tôi chạy một chương trình bên ngoài từ ASP.NET:NET 4: Process.Start bằng các thông tin trả về đầu ra sản phẩm nào
var process = new Process();
var startInfo = process.StartInfo;
startInfo.FileName = filePath;
startInfo.Arguments = arguments;
startInfo.UseShellExecute = false;
startInfo.RedirectStandardOutput = true;
//startInfo.RedirectStandardError = true;
process.Start();
process.WaitForExit();
Console.Write("Output: {0}", process.StandardOutput.ReadToEnd());
//Console.Write("Error Output: {0}", process.StandardError.ReadToEnd());
Tất cả mọi thứ hoạt động tốt với mã này: các chương trình bên ngoài được thực hiện và quá trình. StandardOutput.ReadToEnd() trả về kết quả chính xác.
Nhưng sau khi tôi thêm hai dòng sau trước khi Process.Start() (để chạy các chương trình trong bối cảnh của một tài khoản người dùng):
startInfo.UserName = userName;
startInfo.Password = securePassword;
Chương trình không được thực hiện và quá trình. StandardOutput.ReadToEnd() trả về một chuỗi rỗng. Không có ngoại lệ nào được ném ra.
userName và securePassword là chính xác (trong trường hợp thông tin không chính xác một ngoại lệ được ném).
Cách chạy chương trình trong ngữ cảnh của tài khoản người dùng khác?
Môi trường: NET 4, Windows Server 2008 32bit
UPD:
Ứng dụng này hoạt động tốt dưới ASP.NET máy chủ phát triển + Windows 7, nhưng không thành công trên IIS 7 + Windows Server 2008 Web Edition.
UPD2:
Các mặt hàng này trong nhật ký sự kiện:
Faulting cryptcp.exe ứng dụng, phiên bản 3.33.0.0, thời gian tem 0x4be18460, đứt gãy module kernel32.dll, phiên bản 6.0.6002.18005, thời gian tem 0x49e03821, mã ngoại lệ 0xc0000142, lỗi offset 0x00009eed, quá trình id 0xbf4, thời gian bắt đầu ứng dụng 0x01caf1b91f5b851a.
cryptcp.exe là tên của ứng dụng bên ngoài.
Mặt khác, câu hỏi này http://stackoverflow.com/questions/2345620/alternative-to-allow-service-to-interact-with-desktop, được tìm thấy bằng cách tìm kiếm cùng một lỗi bù đắp và kernel32.dll có thể chỉ ra rằng đó là một vấn đề không thể khắc phục khi bạn đang chạy dưới IIS - cryptcp.exe phải tương tác với máy tính để bàn theo một cách nào đó (theo cách đọc của tôi) –