No creo que sea posible elevar el proceso que se está ejecutando actualmente. Según tengo entendido, está integrado en Windows Vista que se otorgan privilegios de administrador a un proceso al inicio. Si observa varios programas que utilizan UAC, debería ver que en realidad inician un proceso separado cada vez que se debe realizar una acción administrativa (el Administrador de tareas es uno, Paint.NET es otro, siendo este último una aplicación .NET de hecho ).
La solución típica a este problema es especificar los argumentos de la línea de comandos al iniciar un proceso elevado (la sugerencia de abatishchev es una forma de hacerlo), de modo que el proceso iniciado solo sepa mostrar un determinado cuadro de diálogo y luego salir después de que se haya realizado esta acción. terminado. Por lo tanto, el usuario apenas debería notar que se ha iniciado y luego cerrado un nuevo proceso, y más bien debería aparecer como si se hubiera abierto un nuevo cuadro de diálogo dentro de la misma aplicación (especialmente si ha realizado algún pirateo para crear la ventana principal de la aplicación). proceso elevado hijo del proceso padre). Si no necesita la interfaz de usuario para el acceso elevado, aún mejor.
Para una discusión completa de UAC en Vista, le recomiendo que vea este artículo detallado 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 todas formas). Con suerte, ahora al menos ve el enfoque correcto a seguir, aunque diseñar un programa compatible con UAC está lejos de ser trivial ...