У меня есть процесс, который должен выполняться под административными привилегиями. Мне нужен средний joe для запуска процесса, но я не хочу предоставлять каждому доступ ... поэтому я создал простой класс, который будет запускать эту ОДНУ задачу в качестве администратора, используя олицетворение.Почему олицетворение процесса возвращает «Недопустимое имя каталога»?
Код VERY striaght-forward, но я не могу понять, почему это сбой. ПОМОГИТЕ??!!
Я запускаю это через пакетный файл, и я даже скопировал файл, который нужно выполнить на локальном жестком диске, считая, что это может быть проблема разрешения для запуска приложения по сети.
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) и с сообщением об ошибке «имя каталога недопустимо».
Вы уверены, что имя exe, которое вы предоставили, является правильным? Вы можете распечатать его перед началом процесса и двойной проверки? – Grzenio