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 Registry-Schlüssel erstellen (https://www.delphipraxis.net/39547-registry-schluessel-erstellen.html)

Sarah 4. Feb 2005 07:51


Registry-Schlüssel erstellen
 
Ich habe ein Problem beim Schreiben eines neuen Schlüssels.
Ich habe mir das Beispiel aus Delphi kopiert und versucht es auszuführen (will ich dann noch anpassen).


Wenn ich dann einen Schlüssel erstellen möchte erhalte ich folgende Exception:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Registry01.exe ist eine Exception der Klasse ERegistryException aufgetreten. Meldung: 'Erzeugung von Schlüssel TestSchluessel misslungen'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------


Der Code dazu sieht so aus:

Code:
procedure TForm1.Button1Click(Sender: TObject);
var
  Reg: TRegIniFile;
begin
  if Length(NameofKey.Text) or Length(ValueforKey.Text) <=0 then
    Showmessage('Either the key name or value is missing.')
  else begin
    Reg:=TRegIniFile.Create('MyApp');
    try
      Reg.RootKey:=HKey_Local_Machine; // Abschnitt in Registrierung
      if not Reg.OpenKey(NameofKey.Text,False) then
        if MessageDlg('The specified key does not exist, create it?'

                 ,Mtinformation,[mbYes,mbNo],0)=mryes then
        begin
          Reg.CreateKey(NameofKey.Text);
          if not Reg.OpenKey(NameofKey.Text,False) then
            ShowMessage('Error in Opening Created Key')
          else
            Reg.WriteString('Main Section','Value1',ValueForKey.Text);
        end
     else
       Reg.WriteString('Main Section','Value1',ValueForKey.Text);
    finally

      Reg.Free;
    end;
  end;
end;


Durch Zufall habe ich herausgefunden, dass er einen Schlüssel anlegt.
Die restlichen Daten fehlen bzw. wird in der Registry einfach "(Standard)" als Name und "(Wert nicht gesetzt)" als Wert angegeben.

Das ganze befindet sich bei HKEY_USERS -> S-1-5-21........ Es sollte aber unter HKEY_LOCAL_MACHINE angelegt werden.


Ich hoffe mir kann jemand weiterhelfen.

Ach ja und bevor die Frage gestellt wird:
Ich habe die Berechtigung um überall in der Registry Schlüssel zu erstellen.

Pseudemys Nelsoni 4. Feb 2005 08:46

Re: Registry-Schlüssel erstellen
 
hi sarah,

ich habe nie mit TRegIniFile gearbeitet, aber kann es nicht auch TRegistry sein?

achja btw das:

Delphi-Quellcode:
if Length(NameofKey.Text) or Length(ValueforKey.Text) <=0 then
müsste so aussehen:

Delphi-Quellcode:
if (Length(NameofKey.Text) = 0) or (Length(ValueforKey.Text) = 0) then
du kannst nicht 2 bedingungen mit mal prüfen, da würde sonst die erste bedingung mit der zweiten verknüpft werden. Ein string kann auch nie kleiner als 0 sein, daher = statt <= 0 :thumb:

das löst zwar das problem nicht, aber wie gesagt, nie damit gearbeitet. Wenn du TRegistry benutzt, helf ich gern =)

btw: Falsche Sparte ;)

Sarah 4. Feb 2005 08:54

Re: Registry-Schlüssel erstellen
 
Hi Mario;

also das mit dem if leuchtet mir ein (ist aber nicht mein Problem)

Da ich noch nie was mit Delphi in der Registry gemacht habe habe ich natürlich in der Hilfe nachgeschaut und da wird nur das mit dem RegIniFile erklärt.
Wenn du mir sagen kannst wie das mit TRegistry funktioniert würde ich es gerne damit versuchen.

Pseudemys Nelsoni 4. Feb 2005 08:59

Re: Registry-Schlüssel erstellen
 
Hallo Sarah,

geb in der OH einfach: TRegistry ein :) dort kannst du dann dessen methoden/eigenschaften usw sehen ;)
TRegistry funktioniert eigentlich (fast?) genauso

gruss

Sarah 4. Feb 2005 09:40

Re: Registry-Schlüssel erstellen
 
Also ich habe es jetzt umgeändert und arbeite nun mit TRegistry, aber jetzt habe ich ein neues Problem:

wenn ich das ganze über eine Abfrage steuere dann springt er nicht rein:
Code:
if Reg.OpenKey(strNeuerPfad, True) then ...(Schluessel erstellen)...
@Mario: ich hoffe du kannst mir hier auch weiter helfen, da ich noch keine Lösung gefunden habe.

Edit:
habe den Fehler schon gefunden:
hatte das falsche edt in den Pfad eingelesen :duck:

Pseudemys Nelsoni 4. Feb 2005 10:15

Re: Registry-Schlüssel erstellen
 
Hallo Sarah :thumb:

Hast das Problem ja schon behoben wie ich sehe :wink:

btw:

Zitat:

then ...(Schluessel erstellen)...
du brauchst den key nicht nach der bedingung selbst zu erstellen, da OpenKey(sofern der zweite parameter true ist) das selbst tut :zwinker:

greetz

MathiasSimmack 4. Feb 2005 10:57

Re: Registry-Schlüssel erstellen
 
Machst du sie noch auf die Rechte in HKLM aufmerksam, wo du schon dabei bist. :)

Pseudemys Nelsoni 4. Feb 2005 11:05

Re: Registry-Schlüssel erstellen
 
da bin ich dann doch überfragt mathias :D, hat man da etwa nur als admin zugriff?


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 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 by Thomas Breitkreuz