Hallo Forum,
ich stoße beim auslesen der Registrie Schlüssel auf massive Probleme.
Schlüsse vom Type REG_DWORD (Hexadezimal) lassen sich nicht auslesen.
Beim der Nachfrage mit: Reg.GetDataType('SystemType') in HKEY_LOCAL_MACHINE ist bei den Erwähnten Schlüsseltypen (REG_DWORD (Hexadezimal)) das Ergebnis "rdUnknown".
Wie kann man solche Schlüssel nennoch lesen?
mfg
hbr
Windows Registry
-
- Beiträge: 321
- Registriert: Mi 20. Feb 2013, 10:30
- OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
- CPU-Target: 32/64,ARM(RPi)
Re: Windows Registry
Hallo, hat hier niemand eine Idee?
Also beim Versuch den Schlüssel 'InstallDate' in HKLM = (Installationsdatum von Windows) auszulesen kommt immer eine Fehlermeldung.
Trotz vorhandenem Schlüssel, er ist da, will aber nicht ausgelesen werden.
An den Rechten licht es auch nicht.
Weiß niemand eine Lösung?
Gruß
hbr
Also beim Versuch den Schlüssel 'InstallDate' in HKLM = (Installationsdatum von Windows) auszulesen kommt immer eine Fehlermeldung.
Trotz vorhandenem Schlüssel, er ist da, will aber nicht ausgelesen werden.
An den Rechten licht es auch nicht.
Weiß niemand eine Lösung?
Gruß
hbr
-
- Lazarusforum e. V.
- Beiträge: 3177
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Windows Registry
Vielleicht ist deine Idee auch zu kurz, als das jemand darauf aufbauen könnte. Ein wenig mehr Quelltext wäre wohl schon sinnvoll. Insbesondere wäre wohl ein vollständiger Registry-Pfad sinnvoll um dein Problem nachvollziehen zu können.hbr hat geschrieben:Hallo, hat hier niemand eine Idee?
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 321
- Registriert: Mi 20. Feb 2013, 10:30
- OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
- CPU-Target: 32/64,ARM(RPi)
Re: Windows Registry
Ok, kein Problem,
habe aber alles erwähnt und versucht mit den Verschiedensten Type auszulesen.
Immer das gleiche.
dennoch hier der Code:
Hier der Inhalt von Schluessel: '\Software\Microsoft\Windows NT\CurrentVersion\'
R_Name ='InstallDate'
Ersucht mit DWord und ReadBinaryData
immer das gleiche, sobat der Reg-Schlüssel DWord HEXADEZIMAL hat gehts nicht.
gruß
habe aber alles erwähnt und versucht mit den Verschiedensten Type auszulesen.
Immer das gleiche.
dennoch hier der Code:
Code: Alles auswählen
Function Reg_Lesen(HKEY,Schluessel,R_Name :String):String;
Var Reg : TRegistry;
begin
Reg := TRegistry.Create(KEY_READ); //(KEY_READ OR $0100);
If HKEY = 'USER' Then reg.RootKey := HKEY_CURRENT_USER;
If HKEY ='MACHINE' Then reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey(Schluessel, false) then
begin
if Reg.ValueExists(R_Name) then
begin
Reg_Lesen := Reg.ReadString(R_Name);
Reg.CloseKey;
end;
End Else Reg_Lesen := '';
reg.free;
end;
R_Name ='InstallDate'
Ersucht mit DWord und ReadBinaryData
immer das gleiche, sobat der Reg-Schlüssel DWord HEXADEZIMAL hat gehts nicht.
gruß
Zuletzt geändert von Lori am Mo 8. Apr 2013, 16:01, insgesamt 1-mal geändert.
Grund: Bitte den richtigen Highlighter verwenden! Danke.
Grund: Bitte den richtigen Highlighter verwenden! Danke.
-
- Beiträge: 9
- Registriert: Fr 13. Jun 2008, 15:23
- OS, Lazarus, FPC: Windows / Linux (FPC 3.2. fixes, Lazarus 3.0 fixes / trunk)
Re: Windows Registry
Unter dem Schlüssel 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion' gibt es keinen Wert 'SystemType'. Die Funktion Reg.DataType könnte also entweder eine Exception werfen oder "rdUnknown" zurückgeben, was es sie auch tut.hbr hat geschrieben:
Beim der Nachfrage mit: Reg.GetDataType('SystemType') in HKEY_LOCAL_MACHINE ist bei den Erwähnten Schlüsseltypen (REG_DWORD (Hexadezimal)) das Ergebnis "rdUnknown".
Reg.GetDatayType(R_Name) gibt "rdInteger" zurück, was bedeutet, dass du den Wert mit Reg.ReadInteger(R_Name) in eine Integer-Variable einlesen kannst. Da deine Funktion einen String zurückgibt, musst du die Integer-Variable z.B. mit IntToStr in einen solchen umwandeln.
Gruß Gerd
-
- Beiträge: 321
- Registriert: Mi 20. Feb 2013, 10:30
- OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
- CPU-Target: 32/64,ARM(RPi)
Re: Windows Registry
Oh Vielen Dank GSA,
Habe jetzt meie Funktion mit 'if GetDataType(R_Name) = rdInteger then'... erweiter.
Und es Funktioniert! Vielen Dank.
Seltsam finde ich nur, dass ich das mit Integer vorher auch schon versucht hatte.
Gruß
hbr
Habe jetzt meie Funktion mit 'if GetDataType(R_Name) = rdInteger then'... erweiter.
Und es Funktioniert! Vielen Dank.
Seltsam finde ich nur, dass ich das mit Integer vorher auch schon versucht hatte.
Gruß
hbr