Ich glaube nicht, dass es möglich ist, den aktuell laufenden Prozess zu verbessern. In Windows Vista ist integriert, dass einem Prozess nach meinem Verständnis Administratorrechte beim Start erteilt werden. Wenn Sie sich verschiedene Programme ansehen, die die Benutzerkontensteuerung verwenden, sollten Sie feststellen, dass sie jedes Mal, wenn eine Verwaltungsaktion ausgeführt werden muss, einen separaten Prozess starten (Task-Manager ist eines, Paint.NET ist ein anderes, letzteres ist tatsächlich eine .NET-Anwendung ).
Die typische Lösung für dieses Problem besteht darin, beim Starten eines Prozesses mit erhöhten Rechten Befehlszeilenargumente anzugeben (der Vorschlag von abatishchev ist eine Möglichkeit, dies zu tun), damit der gestartete Prozess nur ein bestimmtes Dialogfeld anzeigen und nach Abschluss dieser Aktion beenden kann abgeschlossen. Daher sollte es für den Benutzer kaum wahrnehmbar sein, dass ein neuer Prozess gestartet und dann beendet wurde, und es würde eher so aussehen, als ob ein neues Dialogfeld innerhalb derselben App geöffnet wurde (insbesondere, wenn Sie etwas Hackerei betreiben, um das Hauptfenster des zu erstellen erhöhter Prozess ein Kind des übergeordneten Prozesses). Wenn Sie keine Benutzeroberfläche für den erhöhten Zugriff benötigen, ist dies sogar noch besser.
Für eine vollständige Diskussion der Benutzerkontensteuerung unter Vista empfehle ich, dass Sie diesen Artikel zu diesem Thema lesen (Codebeispiele sind in C ++ enthalten, aber ich vermute, dass Sie WinAPI und P / Invoke verwenden müssen, um die meisten Aufgaben in C # auszuführen wie auch immer). Hoffentlich sehen Sie jetzt zumindest den richtigen Ansatz, obwohl das Entwerfen eines UAC-kompatiblen Programms alles andere als trivial ist ...