Wie liest man REG_BINARY-Werte aus der Registry aus?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
DataMiner
Beiträge: 220
Registriert: 10.10.2004 18:56

Wie liest man REG_BINARY-Werte aus der Registry aus?

Beitrag von DataMiner »

Habe folgendes Problem:
Unter XP gibt es unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mssmbios\Data
den Binärwert SMBiosData. Dort stehen viele schöne Sachen drin, die ich gerne in "Klartext" hätte (Mainboard, Bios-Version).
Nur - wie komme ich mit PB da dran?
:?
Benutzeravatar
bingo
Beiträge: 118
Registriert: 16.09.2004 18:33
Wohnort: thüringen
Kontaktdaten:

Beitrag von bingo »

Code: Alles auswählen

RegOpenKeyEx_(#HKEY_LOCAL_MACHINE, "SYSTEM\CurrentControlSet\Services\mssmbios\Data", 0,#key_read, @hkey)
RegQueryValueEx_(hKey, "SMBiosData", 0, @lType.l, 0, @laenge.l) ;länge ermitteln
*MemoryID = AllocateMemory(laenge)
RegQueryValueEx_(hKey, "SMBiosData", 0, @lType, *MemoryID, @laenge)
RegCloseKey_(hkey)
 
For i= 0 To laenge - 1
Debug PeekB(*MemoryID + i)
Next

FreeMemory(*MemoryID)
:D
1:0>1
Benutzeravatar
DataMiner
Beiträge: 220
Registriert: 10.10.2004 18:56

Beitrag von DataMiner »

JAAA!

Danke!

So geht das also. Jetzt muss ich dat nur noch lesbar machen...

:allright:
JanFredi
Beiträge: 44
Registriert: 25.02.2005 19:49
Wohnort: Dortmund
Kontaktdaten:

Code

Beitrag von JanFredi »

Veröffentliche bitte den Code.
Wenn sie möchten.
:praise: :praise: :praise: :praise: :praise: :praise: :praise: :praise:
Benutzeravatar
DataMiner
Beiträge: 220
Registriert: 10.10.2004 18:56

Beitrag von DataMiner »

Code: Alles auswählen

RegOpenKeyEx_(#HKEY_LOCAL_MACHINE, "SYSTEM\CurrentControlSet\Services\mssmbios\Data", 0,#KEY_READ, @hkey)
RegQueryValueEx_(hkey, "SMBiosData", 0, @lType.l, 0, @laenge.l) ;länge ermitteln
*MemoryID = AllocateMemory(laenge)
RegQueryValueEx_(hkey, "SMBiosData", 0, @lType, *MemoryID, @laenge)
RegCloseKey_(hkey)
 
For i= 0 To laenge - 1
  If  PeekB(*MemoryID + i) > 32
    a$ +  Chr(PeekB(*MemoryID + i) )
  ElseIf PeekB(*MemoryID + i) = 0
    a$+";"
  EndIf
Next

FreeMemory(*MemoryID) 
a$ = ReplaceString(a$, ";;;;;", ";", 1, 1)
a$ = ReplaceString(a$, ";;;;", ";", 1, 1)
a$ = ReplaceString(a$, ";;;", ";", 1, 1)
a$ = ReplaceString(a$, ";;", ";", 1, 1)
Debug a$

So ist es ~halbwegs~ lesbar. Rest ist Stringhandling.

:mrgreen: :mrgreen: :mrgreen:
Antworten