Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Dienst soll aus Registry lesen - Key existiert nicht (https://www.delphipraxis.net/32819-dienst-soll-aus-registry-lesen-key-existiert-nicht.html)

Susanne 28. Okt 2004 11:09


Dienst soll aus Registry lesen - Key existiert nicht
 
Hallo,

Ich habe einen Dienst, der im Hintergrund laufen soll und dieser benötigt Daten aus der Registry. Bevor ich die Unit in den Dienst aufgenommen habe, hat dies einwandfrei funktioniert, er hat aus der Registry gelesen. Nun hab ich die Unit in meinen Dienst übernommen und auch nichts dran geändert, nun sagt er mir aber, das der Schlüssel nicht existiert.

Wie das?

RootKey ist HKEY_CURRENT_USER oder HKEY_LOCAL_MACHINE darunter dann 'Software\Firma\TMService\7.0'

Warum soll der KEY nicht exitieren, er ist vorhanden!

Luckie 28. Okt 2004 11:18

Re: Dienst soll aus Registry lesen - Key existiert nicht
 
HKCU ist der Registryzweig des angemeldeten Bneutzers. Der Dienst läuft unter dem Systemkonto und hat damit einen eigene HKCU Zweig und in dem muss der Schlüssel nicht existieren.

MathiasSimmack 28. Okt 2004 11:31

Re: Dienst soll aus Registry lesen - Key existiert nicht
 
Na ja, wenn sie schreibt es unter HKCU oder HKLM, dann könnte man vllt. noch auf HKLM ausweichen. Aber wie ist das mit der User-SID? Wenn ich die in einem Dienst ermittle, der im Systemkonto läuft, dann erhalte ich vermutlich die System-SID? Oder? Wenn es die SID des angemeldeten Users wäre, dann hätte ich das vorgeschlagen: SID ermitteln und mal unter HKEY_USERS schauen.

Stevie 28. Okt 2004 11:50

Re: Dienst soll aus Registry lesen - Key existiert nicht
 
Was passiert denn, wenn du den Dienst unter deinem Konto laufen lässt?

Susanne 28. Okt 2004 12:11

Re: Dienst soll aus Registry lesen - Key existiert nicht
 
gut mittlerweile hackt es dann nicht mehr am finden des keys, aber danach bleibt er irgendwie hängen. Wie kann ich denn einen Dienst debuggen, so dass ich mir schritt für schritt ansehen kann, was in den einzelnen Variablen drin steht und so weiter?

Stevie 28. Okt 2004 12:17

Re: Dienst soll aus Registry lesen - Key existiert nicht
 
Hi Susanne,

vielleicht hilft dir das? ;-)
Zitat:

Zitat von Die freundliche Delphi-Hilfe
Das Debugging von Service-Anwendungen kann kompliziert sein, weil es innerhalb von sehr kurzen Zeitintervallen erfolgen muß:

1 Starten Sie zunächst die Anwendung im Debugger. Warten Sie ein paar Sekunden, bis sie fertig geladen ist.
2 Starten Sie schnell den Service von der Systemsteuerung oder von der Befehlszeile aus:

start MyServ

Sie müssen den Service schnell starten (innerhalb von 15 bis 30 Sekunden nach dem Starten der Anwendung), weil die Anwendung beendet wird, wenn kein Service gestartet wird.
Ein anderer Ansatz wäre, während der Ausführung der Service-Anwendung eine Verbindung zu dem Prozess herzustellen. (Das bedeutet, Sie starten zuerst den Service und verbinden ihn dann mit dem Debugger). Um eine Verbindung mit dem Prozess der Service-Anwendung herzustellen, wählen Sie Start / Mit Prozess verbinden und im angezeigten Dialogfeld die Service-Anwendung.

In einigen Fällen schlägt dieser zweite Ansatz aufgrund unzureichender Berechtigungen fehl. Falls das passiert, ermöglichen Sie mit Hilfe des Dienstkontroll-Managers die Ausführung Ihres Service im Debugger:

1 Erzeugen Sie zuerst den Schlüssel Image File Execution Options an der folgenden Position der Systemregistrierung:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

2 Legen Sie einen Unterschlüssel mit demselben Namen wie Ihr Service an (beispielsweise MYSERV.EXE). Diesem Unterschlüssel geben Sie den Wert Debugger vom Typ REG_SZ. Verwenden Sie als String-Wert den vollständigen Pfad zu Delphi32.exe.
3 Wählen Sie im Applet Dienstkontroll-Panel Ihren Service aus, klicken Sie auf Startup und markieren Sie das Kontrollkästchen Allow Service to Interact with Desktop.



Alle Zeitangaben in WEZ +1. Es ist jetzt 21:43 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