![]() |
Registry wird nur teilweise ausgelesen
Hallo,
folgender Fall unter Windows XP(auf anderen noch nicht getestet): Dienst startet Programm.exe vor Login des Benutzers, aber mit dessen Benutzdaten. Programm.exe soll die vorhandenen Netzlaufwerke wiederherstellen um eine Datei dort abzulegen. Um die Netzlaufwerke wiederherzustellen lese ich die aus HKEY_CURRENT_USER\Network aus. Ist der Benutzer eingeloggt funzt dies auch ohne Probleme. Aber wenn der Benutzer nicht eingeloggt ist, kann Network nicht gefunden/gelesen werden. Wenn ich mir die Liste der Keys von HKEY_CURRENT_USER dann ausgebe, werden Network SessionInformation Volatile Environment nicht ausgegeben. An was kann das liegen? An der Art wie ich das Programm aus dem Dienst starte?(Dienst läuft als Localsystem) Das Programm wird per CreateProcessAsUser gestartet und wie gesagt, wenn der Benutzer sich einloggt funktioniert es auf einmal wunderprächtig. Oder lese ich die Laufwerke an der falschen Stelle aus? |
Re: Registry wird nur teilweise ausgelesen
In welchem Kontext läuft Programm.exe?
|
Re: Registry wird nur teilweise ausgelesen
wie meinst Kontext?
Es läuft als der Benutzer der sich sonst auch angemeldet und unter dem das Netzlaufwerk existiert. Die LogonUser sieht so aus:
Delphi-Quellcode:
anstatt LOGON32_LOGON_NETWORK hatte ich auch schon LOGON32_LOGON_INTERACTIVE hat aber beides keinen Effekt.
LogonUser(PAnsiChar(LUser),PAnsiChar(LDomain),PAnsiChar(LPassword),LOGON32_LOGON_NETWORK,LOGON32_PROVIDER_DEFAULT,ltoken)
Edit: Wenn ich mich nach einloggen wo es funktioniert und alles gelesen werden kann wieder auslogge, geht es wieder nicht. Edit2: Was spricht dagegen die Netzlaufwerke per Eintrag in die Registry einfach selbst zu erzeugen und nicht mit den WNetAddConnection2 Methoden? |
Re: Registry wird nur teilweise ausgelesen
So nach genauerer Analyse scheint es so abzulaufen, dass in dem Network-schlüssel nur die aktuell vorhandenen Netzlaufwerke abgelegt sind, die werden nach Logout auch wieder gelöscht.
Bleibt für mich natürlich die Frage: Wie kann ich die Netzlaufwerke aus nem Programm verwenden, welches als Benutzer aus nem Dienst heraus gestartet wird, bevor sich ein Benutzer selbst anmeldet? Edith fragt wer hier die Seite so breit macht das horizontale Scrollbalken kommen? Der LogonUser-Code? dann pls en leerzeichen reineditieren, ich darf da nixmehr machen :duck: |
Re: Registry wird nur teilweise ausgelesen
So mal die Hilfe bissl durchforstet(unter D2005, so verzweifelt bin ich schon :pale: )
Ich starte den prozess der die Registry auslesen soll mit CreateProcessAsUser. Damit das Profil geladen wird wird vorher noch LoadUserProfile aufgerufen. In der Hilfe steht dazu: Zitat:
Aber wie benutze ich denn das Handle anstatt dem HKEY_CURRENT_USER? Ich könnte dann nämlich vermutlich die Netzlaufwerke im Dienst wiederherstellen anstatt im Programm, oder? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz