我從ASP.NET運行外部程序:.NET 4:使用的Process.Start憑證返回空輸出
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());
一切工作正常使用此代碼:外部程序執行和過程。 StandardOutput.ReadToEnd()返回正確的輸出。
但是在我以前的Process.Start()(運行在另一個用戶帳戶的上下文中,程序)添加以下兩行:
startInfo.UserName = userName;
startInfo.Password = securePassword;
未執行的程序和過程。 StandardOutput.ReadToEnd()返回一個空字符串。沒有例外被拋出。
的userName和securePassword是正確的(在不正確的憑據的情況下拋出一個異常)。
如何在另一個用戶帳戶的上下文中運行程序?
環境: .NET 4,Windows Server 2008的32位
UPD:
應用程序工作在ASP.NET開發服務器+ Windows 7的罰款,但沒有對IIS 7 +的Windows Server 2008 Web Edition。
UPD2:
錯誤的應用程序cryptcp.exe,版本3.33.0.0,時間戳0x4be18460,錯誤模塊KERNEL32.DLL,版本6.0.6002.18005,時間:
在事件日誌中找到此郵戳0x49e03821,異常代碼0xc0000142,故障偏移量0x00009eed,進程ID 0xbf4,應用程序啓動時間0x01caf1b91f5b851a。
cryptcp.exe是外部應用程序的名稱。
另一方面,這個問題http://stackoverflow.com/questions/2345620/alternative-to-allow-service-to-interact-with-desktop,通過搜索相同的故障偏移量和kernel32.dll一旦你在IIS下運行,這可能表明它是一個不可逾越的問題 - cryptcp.exe必須以某種方式(通過我的閱讀)與桌面交互 – 2010-05-13 12:23:58