Zitat von
xaromz:
Rechte gelten immer für den gesamten Prozess. Du hast also zwei Möglichkeiten: Das Programm mit Admin-Rechten neu starten
Um das zu tun, gibt es seit Vista die neue Restart & Recovery
API.
Du kannst also z.B. in einem Programm abprüfen, ob es Admin-Rechte hat. Wenn nicht, dann nimmst Du einen Button und packst da mittels der
API dieses Security-Schild drauf.
Du kannst den Status der Anwendung dann speichern (z.B. alle aktuellen Änderungen speichern und die aktuellen nicht Speicherbaren Änderungen irgendwie in ein File schreiben). Dann benutzt Du die Restart & Recovery
API, um Deinen Prozess mit Adminrechten neu zu starten. Bestätigt der User die
UAC-Abfrage, wird Deine Anwendung neu gestartet und bekommt einen Kommandozeilenschalter mit, dass sie von R&R neu gestartet wurde (den kannst Du festlegen). Dann lädt deine neu gestartete Anwendung den alten Status aus dem File, führt die Änderungen durch und gut ist. Dein alter Prozess wird beendet.
Verneint der User die Bestätigung wird der neue Prozess nicht gestartet und Dein alter läuft eben ohne Admin-Rechte weiter.