Eigentlich ist dieses Skript aus Wut entstanden..
Ich wollte die Ermittlung des KeyTyps über StringSplit(..) machen:
Das liefert auch perfekt ein Array für die vorhandenen Indizes..
Da aber niemand genau sagen kann, wer welche Keys mit welchen (geheimen) Typen in die Registry geschrieben hat,
sollte also statt eines Leerstrings eine Meldung erscheinen.
Das ist aber mit der o.g. Methode nicht möglich
Also habe ich aus der Not eine Tugend gemacht und eine leicht zu wartenden Function geschrieben:
Spoiler anzeigen
;<AutoItScript>
#NoTrayIcon
AutoItSetOption("MustDeclareVars", 1)
;+----------------------------------------------------------------------------+
;| Header: Bestimmen der Übergabeparameter |
;| ( Alles Strings(!!!), bis auf ArgC ) |
;| FontAnzeigeCheck: |Il1 sind Alt-0124, Großes i, Kleines L, Eins |
Const $Author="_strKeyType.au3 ©2006 by ytwinky, MD"; |
;| EMail: [EMAIL]PIII1kSystem-AutoIt3Forum@yahoo.de[/EMAIL] |
;| (Tastenkombination: keine) |
;| AutoIt3-Version: 3.1.1.114(beta) |
;| Zweck : Anzeigen der in AutoIt3 bekannten Registry-Keytypen |
;| Tab auf 2 setzen wg. Lesbarkeit |
;+----------------------------------------------------------------------------+
Const $RegKey="HKEY_CLASSES_ROOT\.TestIt"
Dim $s=RegRead($RegKey, ""), $Wert, $Fehler, $i=0
If @Error=0 Then
Do
$i+=1
$Wert=RegEnumVal($RegKey, $i)
$Fehler=@Error
If $Fehler=0 Then
$s&=$Wert &": " &_strKeyType(@Extended) &@CrLf &" " &RegRead($RegKey, $Wert) &@CrLf
EndIf
Until $Fehler<>0
Else
$s="$RegKey nicht gefunden:" &@CrLf &$RegKey
EndIf
MsgBox(4096, "Registry-Info", $s)
;<Unterprogramme>
Func _strKeyType($Which)
Switch $Which
Case 1
Return "REG_SZ"
Case 2
Return "REG_EXPAND_SZ"
Case 3
Return "REG_BINARY"
Case 4
Return "REG_DWORD"
Case 7
Return "REG_MULTI_SZ"
Case Else
Return "noch nicht eingebaut"
EndSwitch
EndFunc
;</AutoItScript>
Alles anzeigen
So läßt sich die Länge eines REG_BINARY-Typs berechnen:
$BinKeyLen=Ceiling(Len(ReadReg($RegKey, $Wert))/2)
Die erforderlichen Testwerte möge sich der geneigte Leser selbst erstellen.
HKEY_CLASSES_ROOT\.TestIt ist ein 'ungefährlicher' Bereich in der Registry,
weil hier die Extensions stehen und .TestIt AFAIK nicht von Windows benutzt wird.
Kann sein, daß ich das Rad neu erfunden habe, aber auf alle Fälle weiß ich jetzt:
-wie RegEnumVal funktioniert
-welche Nummern die RegistryKey-Typen in AutoIt haben
Freut euch mit mir
Gruß
ytwinky