Я запускаю приложение, используя класс ProcessStartInfo
.В качестве примера предположим, что я пытаюсь запустить cmd.exe
, и мне нужно запустить его как определенный пользователь, поэтому я использую следующий код:
ProcessStartInfo psi = new ProcessStartInfo(path_to_app);
System.Security.SecureString ssPassword = new System.Security.SecureString();
foreach (char c in password)
{
ssPassword.AppendChar(c);
}
psi.Domain = domain;
psi.UserName = username;
psi.Password = ssPassword;
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
psi.WindowStyle = ProcessWindowStyle.Hidden;
p = Process.Start(psi);
Если я наблюдаю процессы вДиспетчер задач. Я вижу, что приложение запускается нужным пользователем, но сразу после запуска оно закрывается.
В программе просмотра событий появляется следующая ошибка:
Неисправное приложение cmd.exe, версия 1.0.0.0, неисправный модуль kernel32.dll, версия 5.2.3790.4480, адрес ошибки 0x0000bef7.
Я видел методы олицетворения с использованием P / Invoke, но я действительно хочуИзбегайте этого любой ценой.
Если я не использую олицетворение, он нормально запускается в СЕТЕВОМ СЕРВИСЕ.Я что-то делаю неправильно или что-то не так? Что-то не так?