Estoy intentando ejecutar un comando cmd con el siguiente código:Ejecutar proceso de elevado
ProcessStartInfo cmd = new ProcessStartInfo("cmd.exe");
cmd.RedirectStandardInput = true;
cmd.RedirectStandardOutput = true;
cmd.RedirectStandardError = true;
cmd.UseShellExecute = false;
cmd.CreateNoWindow = true;
cmd.WindowStyle = ProcessWindowStyle.Hidden;
Process exec = Process.Start(cmd);
exec.StandardInput.WriteLine("sc create \"BaliService\" binPath= \"{0}\\BaliService.exe\"", Directory.GetCurrentDirectory());
Este comando requiere privelages de administrador, si me quedo cmd como administrador y escriba el comando funciona perfectamente, pero no cuando corro esta aplicación como administrador. He añadido
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
a un archivo de manifiesto la cual UAC cada vez que abro el exe.
He visto varias preguntas al respecto y todas parecen sugerir que cualquier proceso ejecutado bajo una aplicación elevada tendrá los mismos derechos, pero esto no funciona para mí.
He intentado cmd.Verb = "runas";
pero no hay dados.
Intente cambiar '' true' cmd.UseShellExecute' y mantener el verbo 'runas'. – keyboardP
Acabo de probarlo pero obtuve este error 'El objeto Process debe tener la propiedad UseShellExecute establecida en false para redirigir las secuencias IOs.' Gracias. –
Ahí es donde se detiene el dinero, no se puede tener en ambos sentidos. El UAC evita que un proceso no elevado descuelgue las capacidades de uno elevado. La única forma en que puedes redirigir es elevarte primero. –