AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Registry - KeyExists liefert immer false
Thema durchsuchen
Ansicht
Themen-Optionen

Registry - KeyExists liefert immer false

Ein Thema von Neuni · begonnen am 24. Mai 2009 · letzter Beitrag vom 24. Mai 2009
Antwort Antwort
Neuni

Registriert seit: 25. Feb 2004
815 Beiträge
 
Delphi 7 Personal
 
#1

Registry - KeyExists liefert immer false

  Alt 24. Mai 2009, 20:25
Hallo,

ich verzweifle gerade an der Registry.
Ich benutze folgenden Code, um auszulegen, ob ein Eintrag existiert:
Delphi-Quellcode:
      reg := TRegistry.Create;

      try

        reg.RootKey:=HKEY_LOCAL_MACHINE;

        reg.OpenKey('Software\Microsoft\Windows NT\CurrentVersion\Winlogon', true);

          reg.WriteString('testen','jo');

          if reg.KeyExists('testen') then begin
            Edit1.Text := 'Gibts';
          end else begin
            Edit1.Text := 'Gibts nicht';
          end;


      finally
        reg.free;
      end;
Das Teil liefert aber immer false (bzw. als Ausgabe "Gibts nicht"). Ich habe jetzt mal einen WriteString mit reingebaut und es ist immernoch so.
Wenn ich per Regedit schaue wird der Key aber erstellt und existiert dann auch.

Ich finde den Fehler ehrlich gesagt nicht...vllt. könnt ihr mir ja weiterhelfen.

PS: Nutze Delphi 7 PE
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Registry - KeyExists liefert immer false

  Alt 24. Mai 2009, 20:28
Existiert der Schlüssel denn dann? Schreiben tust du einen Wert, das wäre dann ValueExists.

Warum wirfst du das Ergebnis von OpenKey einfach weg?
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Neuni

Registriert seit: 25. Feb 2004
815 Beiträge
 
Delphi 7 Personal
 
#3

Re: Registry - KeyExists liefert immer false

  Alt 24. Mai 2009, 20:33
Autsch! Alles klar...KeyExists und ValueExists verwechselt

Bin schon ruhig
Danke!
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Registry - KeyExists liefert immer false

  Alt 24. Mai 2009, 20:36
Wie gesagt solltest du aber auch den Wert von OpenKey verwenden:
Delphi-Quellcode:
if OpenKey(...) then
begin

end
else
  ShowMessage('Schlüssel konnte nicht geöffnet werden!');
So in der Art.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

Re: Registry - KeyExists liefert immer false

  Alt 24. Mai 2009, 20:42
Zitat:
Delphi-Quellcode:
reg.WriteString('testen','jo');

if reg.KeyExists('testen') then begin
du schreibst einen Value und prüfst einen Key

[add]
@jaenicke: ups, den entsprechende Satzteil hab ich ganz übersehn
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Registry - KeyExists liefert immer false

  Alt 24. Mai 2009, 20:43
Zitat von himitsu:
du schreibst einen Value und prüfst einen Key
Soweit ist doch schon alles klar, das habe ich doch gleich im ersten Post geschrieben und ist doch auch schon beantwortet.

Jetzt bin ich ja nur noch einmal auf den Rückgabewert von OpenKey eingegangen.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Neuni

Registriert seit: 25. Feb 2004
815 Beiträge
 
Delphi 7 Personal
 
#7

Re: Registry - KeyExists liefert immer false

  Alt 24. Mai 2009, 21:53
Die Rückgabe vom OpenKey ist mir recht egal, denn sollte der Key nicht existieren, ist das Windows hinne
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Registry - KeyExists liefert immer false

  Alt 24. Mai 2009, 21:56
Dass du den Schlüssel erstellst, wenn er nicht existiert, ist klar, das hast du ja so programmiert.

Du forderst für dein Programm also immer Administratorrechte an?
Weil nur dann kannst du einigermaßen sicher sein, dass du Zugriff auf den Schlüssel hast.
Sebastian Jänicke
AppCentral
  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 04:37 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