2009-03-20 98 views
6

Tengo un proyecto de implementación e instalación de estudio visual. Agregué un script .cmd en él. El script necesitaría privilegios de administrador para ejecutarse. Cuando el usuario hace clic en setup.exe, UAC solicita al usuario los permisos de Administrador. Así que asumí que todos los procesos creados y llamados dentro de setup.exe se ejecutarán en la capacidad de administración. Así que hice la llamada a la configuración de mi aplicación de consola que contiene el siguiente código.ejecutar programáticamente cmd.exe como administrador en vista, C#

ProcessStartInfo p1 = new ProcessStartInfo(); 
p1.UseShellExecute = true; 
p1.Verb = "runas"; 
p1.FileName = "cmd.exe"; 
Process.Start(p1); 

Así que debería haber funcionado como se ejecuta en el espacio de administrador.

Quiero ejecutar cmd.exe a través de la clase de proceso C# como administrador. Estoy ejecutando Windows Vista.

intenté no funcionó! ¡Que puedo hacer!

Respuesta

10

intente ejecutar el comando runas:

... 

using System.Diagnostics; 

... 

string UserName = "user name goes here"; 
ProcessStartInfo p1 = new ProcessStartInfo(); 
    p1.FileName = "runas"; 
    p1.Arguments = String.Format("/env /u:{0} cmd", UserName); 
Process.Start(p1); 

... 

(Y yo no creo que se necesita un UseShellExecute explícita)

+0

quiero para suplantar al adminstrator. Como sucede en setup.exe automáticamente. ¡Este pide contraseña! –

+4

¿Esperaba un resultado diferente cuando intenta hacerse pasar por un administrador? De lo contrario, cualquier persona que ejecute código puede ser un administrador sin conocer la contraseña. ¿No te parece eso un gran riesgo de seguridad? –

+0

voy a reformular la pregunta. por favor, eche un vistazo y coméntelo. –

6

Intenta esto, Esto funcionó para mí.

... 

using System.Diagnostics; 

... 

ProcessStartInfo startInfo = new ProcessStartInfo(); 
    startInfo.UseShellExecute = true;    
    startInfo.Verb = "runas"; 
    startInfo.Arguments = "/env /user:" + "Administrator" + " cmd"; 
Process.Start(startInfo); 

... 

Ashutosh

+0

funciona para mí ... gracias mucho ... :) –

Cuestiones relacionadas