Почему олицетворение процесса возвращает «Неверное имя каталога»? - PullRequest
4 голосов
/ 22 апреля 2009

У меня есть процесс, который должен запускаться с правами администратора. Мне нужен средний joe для запуска процесса, но я не хочу давать всем доступ ... поэтому я создал простой класс, который будет запускать эту ОДНУ задачу как администратор, используя олицетворение.

Код ОЧЕНЬ трудоемок, но я не могу понять, почему это происходит сбой. HELP ?? !!

Я запускаю это через командный файл, и я даже скопировал файл, который должен быть выполнен, на локальный жесткий диск, полагая, что это может быть проблемой с разрешением для запуска приложения по сети.

</p> <pre><code> public static Process ImpersonateProcess(string exe, string args, string Username, string Password) { ProcessStartInfo psi = new ProcessStartInfo(exe); psi.Arguments = args; psi.UseShellExecute = false; psi.UserName = Username; psi.Password = new SecureString(); foreach (char c in Password.ToCharArray()) { psi.Password.AppendChar(c); } Process proc = null; Console.WriteLine("starting..."); proc = Process.Start(psi); Console.WriteLine("started"); return proc; }

В приведенном выше коде я никогда не добираюсь до «начала». Выдает ошибку в Process.Start (psi) и с сообщением об ошибке «имя каталога недопустимо».

1 Ответ

16 голосов
/ 22 апреля 2009

Это может быть связано с тем, что вы не устанавливаете свойство WorkingDirectory . Согласно документы:

Важное примечание:

Свойство WorkingDirectory должно быть установлено, если указаны имя пользователя и пароль. Если свойство не установлено, рабочим каталогом по умолчанию является% SYSTEMROOT% \ system32.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...