Als gutgläubiger Mensch könnte man meinen unter HKEY_USERS stünden die
HKCU-Hives aller lokalen Benutzer. Es sind aber nur die eingeloggten. Ist ja auch sinnvoll, das spart Hauptspeicher.
Ich möchte nun in der Registry von mehreren lokalen Nutzern Änderungen vornehmen. Ich habe natürlich Adminrechte.
Ich sehe drei Möglichkeiten. Da ich noch nicht angefangen habe brauche ich keine technische Hilfe, ich möchte nur Rat welche der drei Möglichkeiten man nehmen sollte:
- NTUSER.dat der Nutzer über reg.exe einladen
- User Impersonation, dann LoadUserProfile(..)
- ActiveSetup
1) NTUSER.dat über reg.exe einladen
Über die reg.exe (fester Bestandteil von Windows) ließe sich (
z.B hier beschrieben) die NTUSER.DAT eines anderen Nutzers irgendwo in die aktuelle Registry reinmappen. Ich könnte den Zweig dort bearbeiten und wieder entladen. Und wäre schon fertig.
2) User Impersonation, dann LoadUserProfile(..)
Da ich auch die Passwörter der entsprechenden Accounts hätte würde ich komplett über die
WinAPI:
- Mittels LogOnUser das Token holen
- ImpersonateLoggedOnUser nehmen
- Dann mit LoadUserProfile den Hive einladen
- Meine Änderungen an HKEY_USERS\[SID] vornehmen
- Und später wieder mit UnloadUserProfile entladen
3) ActiveSetup
Dies scheint genau dasd zu sein was ich suche. Allerdings ist das nirgendwo von Microsoft dokumentiert, es gibt nur diesen
halb-offiziellen Blog-Beitrag. Es ist ein Eintrag in
HKLM der bei jedem Benutzer (anscheinend einmalig) nach dem nächsten Login ausgeführt wird. Hier könnte man die Änderung in eine eigene .exe auslagern die dann einmalig ausgeführt wird.
Ich persönlich bin für Lösung zwei, aber vielleicht gibt es ja schlaue Gründe für etwas anderes?