![]() |
Thread.Execute - Registry auslesen - Problem
Ich habe einen Dienst, der in der serviceExecute-Methode einen Thread aufruft. In diesem Thread möchte ich in der Execute-Methode prüfen, ob in der Registry in einem bestimmten Eintrag ein bestimmter Wert steht und wenn ja soll er was machen, ansonsten übergehen. Sieht folgendermassen aus:
Delphi-Quellcode:
Problem ist nun folgendes. Lasse ich den Teil zwischen 1* bis 2* weg, läuft das ganze einwandfrei, nehme ich das ganze aber mit in den Quellcode hinein, kann ich den Dienst starten, aber er lässt sich nicht mehr beenden.
procedure TimeManagerThread.Execute;
var neueinlesen: STring; begin FormCreate; while not Terminated do 1* begin //Registry auslesen reg.RootKey:= HKEY_LOCAL_MACHINE; //Gibt es den benötigten Key in Registry? if reg.KeyExists('Software\TM\7.0\General') then begin reg.OpenKey('Software\TM\7.0\General', false); neueinlesen:= reg.ReadString('again'); reg.CloseKey; if (neueinlesen = '159') then FormCreate; 2* end; TimerTimer(self); end; Timer.Free; ClockTimer.Free; end; Woran kann das liegen? Irgendwer eine Ahnung? |
Re: Thread.Execute - Registry auslesen - Problem
Beim Zugriff auf HKEY_LOCAL_MACHINE sind die Zugriffsrechte meistens auf READ-ONLY beschränkt.
Deshalb:
Delphi-Quellcode:
reg.Access := KEY_READ; // <- wir wollen nur Lesen
//Registry auslesen reg.RootKey:= HKEY_LOCAL_MACHINE; //Gibt es den benötigten Key in Registry? .... |
Re: Thread.Execute - Registry auslesen - Problem
wenn ich aber administrator bin, habe ich doch lese und schreib -Rechte
weil später an anderer Stelle schreibe ich in den Key |
Re: Thread.Execute - Registry auslesen - Problem
Und unter welchem Account läuft der Dienst? Doch wohl unter dem System-Konto oder wann wird der Dienst wie gestartet?
|
Re: Thread.Execute - Registry auslesen - Problem
der Dienst wird unter einem User-Konto gestartet, der auch Rechte zum Lesen und Schreiben auf Local-Machine haben sollte. Funktioniert sonst ja auch, da ich an verschiedenen Stellen schon in Local-machine reinschreibe und es bisher klappt.
Aber wenn ich eben an dieser einen Stelle aus local-machine lesen will, da kann ich den Dienst nicht mehr beenden und das ist das was ich einfach nicht begreife. Wenn ich sonst an jeder Stelle im Thread in den Schlüssel reinschreiben kann und lesen kann, warum nicht an der Stelle? |
Re: Thread.Execute - Registry auslesen - Problem
Die Methode OpenKey von TRegistry ist eine Funktion. Eventuell mal den Rückgabwert prüfen und wenn OpenKey fehlschlägt mal mit GetLastError gucken warum bzw. was nicht geklappt hat.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 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