Por que a representação de um processo retorna “O nome do diretório é inválido”?
Tenho um processo que precisa ser executado sob privilégios administrativos. Eu preciso do joe comum para executar o processo, mas não quero dar acesso a todos ... por isso criei uma classe simples que executará essa tarefa como administrador, usando a representação.
O código é MUITO estressante, mas não consigo entender por que isso está falhando. SOCORRO??!
Estou executando isso por meio de um arquivo em lotes e até copiei o arquivo que precisa ser executado no disco rígido local, pensando que isso pode ser um problema de permissão para executar um aplicativo pela rede.
<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;
}
</code></pre>
No código acima, nunca chego a "iniciado". Ele gera um erro no Process.Start (psi) e com uma mensagem de erro "o nome do diretório é inválido".