Seite 2 von 2

Verfasst: 07.10.2006 17:55
von sharkpeter
Ja, dann kann ich dir auch nicht helfen, da gibt es den Key wohl nicht.
Kannst du ja mal mit dem Editor nachsehen.

Verfasst: 07.10.2006 18:01
von a14xerus
ja hab ich ja um auf den installedversion zu kommen.. weil mit binär udn so kann ich das auslesen (sioehe vorherige posts)

Verfasst: 07.10.2006 18:06
von sharkpeter
Habe es vorhin noch mal editiert. Binary gibt eine Adresse zurück und nicht
den Inhalt. Wie das dann geht, am besten Beispiel ansehen, ist bei der Lib
dabei. In meinem System (was ich im Moment laufen habe) gibt es den Eintrag
InstalledVersion nicht (ME). Wohl aber bei XP und da ist es richtig mit Binary.

Gruß Jens

Verfasst: 08.10.2006 11:23
von sharkpeter
Hier mal ein Code, der unterschiedliche Arten der Binärrückgabe zeigt:

Code: Alles auswählen

; Testprogramm für Binary

testkey.s="TestBinary"
testbin.s="EinBinary"

; Font wird für das Fenster unten benötigt
#Font=0
LoadFont(#Font,"Arial",10)

; den Subkey erstellen
Debug JHRegCreateKey(#HKEY_CURRENT_USER,testkey)

; das Value erstellen und mit Werten belegen
Length.l = 32
Restore BinaryTest      ; Data
*MID = AllocateMemory(Length)
For a=0 To 31
  Read b
  PokeB(*MID+a,b)
Next a
If *MID; wenn ein gültiger Speicher festliegt
  Debug JHRegSetBinary(#HKEY_CURRENT_USER,testkey,testbin,Str(*MID),#False)
  FreeMemory(*MID)
EndIf

; Das binäre Value auslesen auf unterschiedliche Weise

; gibt einen HEX!!! String zurück mit dem Inhalt
Debug JHRegGetValue(#HKEY_CURRENT_USER,testkey,testbin)

; gibt die Adresse eines Speichers zurück, wo der Inhalt abgelegt wurde
; nachfolgende Verarbeitung wie man es braucht
*MID=JHRegGetBinary(#HKEY_CURRENT_USER,testkey,testbin)
If *MID
  For I = 0 To MemorySize(*MID)-1
    Debug PeekB(*MID + I) & $FF ; wegen signierter Variable!
  Next
  FreeMemory(*MID)
EndIf

; gibt ein Fenster aus, wo der Inhalt in Form eines Dump aufgelistet wird
; kann man benutzen wenn man nur sehen will was drin steht, nicht geeignet
; zu Weiterverarbeitung
JHRegGetBinaryDump(#HKEY_CURRENT_USER,testkey,testbin,#Font)

; den SubKey wieder entfernen
Debug JHRegDeleteKey(#HKEY_CURRENT_USER,testkey)

End

; Binary Test
DataSection
  BinaryTest:
  Data.l 77, 65, 68, 69,  0, 73, 78,  0
  Data.l 83, 65, 88, 79, 78, 89,  0,  0
  Data.l 67, 72, 69, 77, 78, 73, 84, 90
  Data.l  0,  0,  0,  0,  0,  0,  0,  0
EndDataSection
Noch ein Wort als Nachsatz:

1. es existiert eine chm Hilfe zur Lib (Cursor auf die Funktion und F1)
2. es gibt ein Beispielprogramm welches im Downloadpaket enthalten ist
3. an einer Stelle in der Hilfe steht anstelle <*MID> <MemAdr> und das noch ohne Pointer.
Das ist aber nur ein Test, ob es gemerkt wird :mrgreen: (nee, im Ernst ich habe mich verschrieben).
4. Das Leseverfahren gilt auch für bereits exisiterende Value, also auch
für InstalledVersion
5. man muß die Schreibweise einhalten wenn man ein Value lesen will,
auch Groß-/Kleinschreibung
6. Binary beinhalten nicht eine Klartextangabe, also 0 ist CHR( 0 ) = NUL
und nicht CHR( 48 ) = "0"
7. AllocateMemory() reserviert immer mindestes 12 Byte, warum das so ist
Fred fragen, mich stört es nicht

Gruß Jens