AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Thread.Execute - Registry auslesen - Problem
Thema durchsuchen
Ansicht
Themen-Optionen

Thread.Execute - Registry auslesen - Problem

Ein Thema von Susanne · begonnen am 17. Jan 2005 · letzter Beitrag vom 17. Jan 2005
Antwort Antwort
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#1

Thread.Execute - Registry auslesen - Problem

  Alt 17. Jan 2005, 13:24
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:
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;
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.

Woran kann das liegen? Irgendwer eine Ahnung?
Susanne
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Thread.Execute - Registry auslesen - Problem

  Alt 17. Jan 2005, 14:32
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?
  ....
Andreas
  Mit Zitat antworten Zitat
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Thread.Execute - Registry auslesen - Problem

  Alt 17. Jan 2005, 14:38
wenn ich aber administrator bin, habe ich doch lese und schreib -Rechte

weil später an anderer Stelle schreibe ich in den Key
Susanne
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Thread.Execute - Registry auslesen - Problem

  Alt 17. Jan 2005, 14:42
Und unter welchem Account läuft der Dienst? Doch wohl unter dem System-Konto oder wann wird der Dienst wie gestartet?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#5

Re: Thread.Execute - Registry auslesen - Problem

  Alt 17. Jan 2005, 14:56
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?
Susanne
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Thread.Execute - Registry auslesen - Problem

  Alt 17. Jan 2005, 15:03
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz