no creo que es posible elevar el proceso actualmente en ejecución. Está integrado en Windows Vista que los privilegios de administrador se otorgan a un proceso al inicio, según tengo entendido. Si observa varios programas que utilizan UAC, debería ver que en realidad lanzan un proceso por separado cada vez que se necesita realizar una acción administrativa (el Administrador de tareas es uno, Paint.NET es otro, el último es una aplicación .NET de hecho)
La solución típica a este problema es especificar argumentos de línea de comandos cuando se inicia un proceso elevado (la sugerencia de abatishchev es una forma de hacerlo), de modo que el proceso iniciado solo sabe mostrar un cuadro de diálogo determinado y luego salir esta acción ha sido completada Por lo tanto, apenas debe ser notorio para el usuario que un nuevo proceso ha sido lanzado y luego salido, y más bien parecería como si se hubiera abierto un nuevo cuadro de diálogo dentro de la misma aplicación (especialmente si usted tiene hackers para hacer la ventana principal del proceso elevado un hijo del proceso principal). Si no necesita UI para el acceso elevado, aún mejor.
Para una discusión completa de UAC en Vista, le recomiendo que vea this very through article sobre el tema (los ejemplos de código están en C++, pero sospecho que necesitará usar WinAPI y P/Invoke para hacer la mayoría de las cosas en C# de todos modos). Esperemos que ahora, al menos, ve el enfoque correcto a tomar, aunque el diseño de un programa compatible con UAC está lejos de ser trivial ...
¿Hay algún cambio con Windows 7 o la respuesta "no, usa proceso nuevo" mantiene? Gracias ... –
Sin cambios con Windows 7 Me temo, lo siento. (Hasta donde yo sé, y soy un usuario/desarrollador regular en Win7.) – Noldorin
Así es exactamente como lo hace el administrador de tareas. Cuando hace clic en el botón para mostrar tareas para todos los usuarios, existe el administrador de tareas actual y luego invoca otro administrador de tareas con derechos de administrador. –