| |
|
|
|
Beschreibung:
RegEnumValue listet alle Werte eines geöffneten Registryschlüssels auf.
Deklaration:
Def @RegEnumValue(8) !ADVAPI32,RegEnumValueA
Parameter:
1.Parameter: Handle eines geöffneten Keys (dessen Unterschlüssel man listen möchte) als LongInt oder folgende Werte => ·HKEY_CLASSES_ROOT = $80000000 ·HKEY_CURRENT_USER = $80000001 ·HKEY_LOCAL_MACHINE = $80000002 ·HKEY_USERS = $80000003 2.Parameter: Position des gesuchten Unterschlüssels in der Registry als LongInt. 3.Parameter: Bereichsvariable, die den Namen des Wertes empfängt. 4.Parameter: 4 Byte Bereichsvariable, deren Wert die Größe von Parameter 3 in Bytes angibt. Kehrt die Funktion zurück, steht hier die Anzahl der kopierten Bytes. 5.Parameter: Reserviert, muß 0 sein. 6.Parameter: 4 Byte Bereichsvariable, die Art des zurückgegebenen Wertes empfängt. => ·$3 = (REG_BINARY) Binärer Schlüssel (Bytefolge unterschiedlicher Größe). ·$4 = 4 Byte oder LongIntwert. Oft werden nur die zwei oberen Bytes des Wertes berücksichtigt (REG_DWORD / REG_DWORD_LITTLE_ENDIAN). ·$5 = 4 Byte oder LongIntwert. Die unteren 2 Byte des Wertes werden berücksichtigt (REG_DWORD_BIG_ENDIAN). ·$2 = String mit abschließendem Nullbyte. Kann Umgebungsvariablen enthalten (REG_EXPAND_SZ). ·$6 = Ein symbolischer Link im Unicode Format (REG_LINK). ·$7 = Ein Array nullterminierter Strings (REG_MULTI_SZ). ·$0 = Nicht definierter Datentyp (REG_NONE). ·$8 = Treiber Resourcenliste (REG_RESOURCE_LIST). ·$1 = String mit abschließendem Nullbyte ohne Umgebungsvariablen (REG_SZ). 7.Parameter: Bereichsvariable, die den Wert empfängt. Diese Variable kann Null sein, wenn nur der Namen des Wertes benötigt wird. 8.Parameter: 4 Byte Bereichsvariable, deren Wert die Größe von Parameter 3 in Bytes angibt. Kehrt die Funktion zurück, steht hier die Anzahl der kopierten Bytes. Diese Variable kann Null sein, wenn nur der Namen des Wertes benötigt wird und Parameter 7 NUll ist.
Rückgabewert:
0 bei Erfolg, bei Fehler ein Wert <>0 (Fehlercode).
Beispiele:
KompilierenMarkierenSeparierenDef @RegOpenKeyEx(5) !"ADVAPI32","RegOpenKeyExA"
Def @RegEnumValue(8) !"ADVAPI32","RegEnumValueA"
Def @RegCloseKey(1) !"ADVAPI32","RegCloseKey"
Windowstyle 31
Windowtitle "Registry Unterschlüssel und Werte listen"
Window 0,0-640,440
declare ergebnis#,Error&,Handle&,Key$,Zähler&
Declare VALUESIZE#,Typ#,Wert#,Buffersize#
DIM TYP#,4
DIM Wert#,261
DIM Buffersize#,4
DIM VALUESIZE#,4
dim Ergebnis#,261--Länge des zu erwartenden Namens
LET Key$="SoftwareMicrosoftWindowsCurrentVersionExplorerShell Folders"
$80000001=HKEY_CURRENT_USER $F003F = KEY_ALL_ACCESS
Error&=@RegOpenKeyEx($80000001,addr(Key$),0,$F003F,@addr(Handle&))
PRINT "OpenKey (0=OK) : ",Error&
Let Zähler&=0
whilenot Error&
LONG BUFFERSIZE#,0=261
LONG VALUESIZE#,0=261
Clear Ergebnis#,TYP#,Wert#
Error&=@RegEnumValue(Handle&,Zähler&,Ergebnis#,VALUESIZE#,0,TYP#,Wert#,Buffersize#)
IF Error&=0
IF @or(@LONG(TYP#,0)=$4,@LONG(TYP#,0)=$5)
ADDSTRING @string$(Ergebnis#,0)+"="+@STR$(@LONG(Wert#,0))
ELSEIF @LONG(TYP#,0)=$2
ADDSTRING @string$(Ergebnis#,0)+"="+@string$(Wert#,0)
ELSEIF @LONG(TYP#,0)=$1
ADDSTRING @string$(Ergebnis#,0)+"="+@string$(Wert#,0)
ELSE
ADDSTRING @string$(Ergebnis#,0)+"=..."+@STR$(@LONG(TYP#,0))
endif
endif
LET Zähler&=Zähler&+1
endwhile
@RegCloseKey(Handle&)
dispose Ergebnis#
Dispose TYP#
Dispose Wert#
Dispose Buffersize#
Dispose VALUESIZE#
@Listbox$("Unterschlüssel und Werte von Shell Folders",1)
[keywords:67e9a66aa2] Werte Registry auflisten Namen erfahren Liste Schlüssel Key Registrykey [/keywords:67e9a66aa2] |
|
|
| |
|
|