Zitat von
onlinekater:
Dieser User ist nicht in der Lage, Deinen User-Bereich auszulesen.
Falsch. Aber er ist in disem Kontext nicht als
HKCU verlinkt!
Es ist sogar noch besser. Als Teil der TCB hat man sogar Backup/Restore-Rechte und kann damit Registry-Hives mounten. Damit kann man also die NTUSER.DAT eines beliebigen Benutzers einbinden. Aber gehen wir mal davon aus, daß der Benutzer dessen Registrywerte den Service interessieren im Moment eingeloggt ist und damit sein Profil (NTUSER.DAT) geladen ist. In diesem Fall hole man sich die SID des Benutzers (notfalls auch den
vollen Namen) und lese den entsprechenden Wert unter HKEY_USERS aus.
Beispiel. Insofern "Administrator" gerade eingeloggt ist und es sich um das eingebauten Adminkonto handelt, wird der Schlüssel
HKEY_USERS\S-1-5-21-??????????-??????????-??????????-500
das gleiche enthalten wie
HKEY_CURRENT_USER
im Kontext dieses Benutzers. Probiert es einfach aus.
Zitat von
Luckie:
Ich frage mich, ob man in einem Service überhaupt einen Timer benutzen kann, denn an welches Fenster soll er denn seine WM_TIMER Nachricht schicken?
Bekanntermaßen kann ein Timer auch eine Callback-Funktion benutzen und damit vollkommen unabhängig von einem Fenster agieren.
Zitat:
[in]
Handle to the window to be associated with the timer. This window must be owned by the calling thread. If this parameter is NULL, no window is associated with the timer and the nIDEvent parameter is ignored.
Übrigens gibt es für die Registry genau wie für Verzeichnisse/Dateien Benachrichtigungsfunktionen, womit man sich den Timer spart und es elegant und vor allem zeitgemäß löst. Timer sind nicht gerade ressourcenschonend