2011-01-17 35 views
6

Utilicé el archivo de manifiesto de la aplicación como se describe en here para tener una parte de mi aplicación ejecutándose con privilegios elevados (que necesita).
Por lo tanto, cuando sea necesario, el programa principal solo invoca un ensamblaje pequeño usando Process.Start que luego maneja la tarea para la cual se requieren derechos de administrador.Cómo ejecutar otra aplicación como administrador en Windows XP

Sin embargo, ¿cómo puedo hacer lo mismo en Windows XP?
Parece que XP simplemente ignora este manifiesto y ejecuta el ensamblaje pequeño en el contexto de usuario actual.

Respuesta

9

El siguiente código de here hace exactamente lo que necesito:

ProcessStartInfo processStartInfo = new ProcessStartInfo("path", "args"); 
processStartInfo.Verb = "runas"; 

using (Process process = new Process()) 
{ 
    process.StartInfo = processStartInfo; 
    process.Start(); 
    process.WaitForExit(); 
} 

Así que, de hecho, debe configurar "runas" en la ProcessStartInfo.Verb. Con la adjunta manifiesta este código ahora funciona bien en Windows XP, Vista y 7.

Actualización:
Ver también this answer to a similar question. Este es básicamente el mismo código, solo usa argumentos también.

+0

El problema es que el cuadro de diálogo Ejecutar XP SP3 se ejecuta como el usuario actual marcado de manera predeterminada, e incluso marca "proteger mi computadora y datos de la actividad del programa no autorizado", ¡esto realmente reduce los privilegios! – eug

2

Windows XP no tiene UAC.

Debe llamar al Process.Start con las credenciales de inicio de sesión de un usuario con privilegios administrativos.

Cuestiones relacionadas