【发布时间】:2012-01-10 23:35:45
【问题描述】:
我有以下正在运行的代码。我的回调方法是在程序生成时使用程序的输出调用的。
var proc = new System.Diagnostics.Process();
//proc.StartInfo.Domain = DOMAIN;
//proc.StartInfo.UserName = USERNAME;
//proc.StartInfo.Password = BuildPasswordString();
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.FileName = EXEC_PATH;
proc.StartInfo.Arguments = EXEC_ARGS;
proc.StartInfo.RedirectStandardOutput = true;
proc.Start();
proc.OutputDataReceived += proc_OutputDataReceived;
proc.BeginOutputReadLine();
proc.WaitForExit();
但是,一旦我取消注释有关用户凭据的这三行,一切都会停止工作。代码执行没有错误,但进程没有运行,并且我的回调方法中没有收到任何输出。
如何执行单独的进程,在生成时异步收集其输出,同时使用与执行进程不匹配的特定用户凭据?
更新:
根据@Dos095-russ 的回答,我使用控制台应用程序而不是 ASP.NET 测试了相同的代码。它确实有效。所以是 ASP.NET 环境中的某些东西导致了失败。
【问题讨论】:
-
对我来说真的不像是重复的。这个问题有不同的代码和不同的症状......
标签: .net process impersonation