Я хочу знать, есть ли способ НЕ ждать процесса при использовании олицетворения. Перегрузок нет, поэтому я не уверен, как это сделать.
// always waits for exit to continue
Impersonation.RunProcess(someProcessPath);
Причина, по которой я хочу это сделать, заключается в том, что у меня есть долго выполняющееся приложение, которое обрабатывает большие файлы, но я хочу доставить клиенту ответ об успешном завершении процесса, прежде чем перенаправить их на страницу состояния. Я не могу запустить процесс с обычным process.Start (), потому что IUSER должен олицетворять учетную запись пользователя с повышенными правами.
Я даже пытался использовать process.StartInfo после Impersonation.Login () и указывать un / pass, но я думаю, что статус «залогинен» является частью только статического класса Impersonation.
if (Impersonation.Logon(LoginCredentials.UserName, LoginCredentials.Password))
{
// this fails with an invalid privileges exit code
process.StartInfo.FileName = path;
process.StartInfo.UseShellExecute = false;
process.StartInfo.UserName = "Administrator";
SecureString secString = new SecureString();
foreach( char c in "mypassword" )
secString.AppendChar( c );
process.StartInfo.Password = secString;
process.StartInfo.Verb = "runas";
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.Start();
}
Я нашел миллионы сообщений о том, как дождаться завершения нормально вызванного процесса, прежде чем продолжать использовать Process.WaitForExit (). Я также успешно проигнорировал выход, используя process.start () сам по себе в консольных приложениях (уже прошедших проверку подлинности).