ProcessStartInfo с олицетворением вызывает ошибку kernal32.dll - PullRequest
0 голосов
/ 03 июня 2011

Я запускаю приложение, используя класс 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, но я действительно хочуИзбегайте этого любой ценой.

Если я не использую олицетворение, он нормально запускается в СЕТЕВОМ СЕРВИСЕ.Я что-то делаю неправильно или что-то не так? Что-то не так?

...