;======================================================================================== ; Function Name: _GetRegSubKeys($HKEY) ; Description: Ermittelt die Unterschlüssel für den übergebenen Schlüssel ; Parameter(s): $HKEY der Registryschlüssel ; Return Value(s): Erfolg Array mit den Unterschlüsseln ; Fehler Leerstring (keine Unterschlüssel vorhanden oder Schlüssel existiert nicht) ; Author(s): BugFix (bugfix@autoit.de) ;======================================================================================== Func _GetRegSubKeys($HKEY) If StringInStr($HKEY, '\') Then If StringRight($HKEY, 1) = '\' Then $HKEY = StringTrimRight($HKEY, 1) Local $strKeyPath = '' Else Local $strKeyPath = StringRight($HKEY, StringLen($HKEY)-StringInStr($HKEY, '\') ) $HKEY = StringLeft($HKEY, StringInStr($HKEY, '\')-1) EndIf Else Local $strKeyPath = '' EndIf Select Case $HKEY = "HKEY_LOCAL_MACHINE" Or $HKEY = "HKLM" $HKEY = 0x80000002 Case $HKEY = "HKEY_USERS" Or $HKEY = "HKU" $HKEY = 0x80000003 Case $HKEY = "HKEY_CURRENT_USER" Or $HKEY = "HKCU" $HKEY = 0x80000001 Case $HKEY = "HKEY_CLASSES_ROOT" Or $HKEY = "HKCR" $HKEY = 0x80000000 Case $HKEY = "HKEY_CURRENT_CONFIG" Or $HKEY = "HKCC" $HKEY = 0x80000005 EndSelect Local $arrSubKeys = '', $subkey Local $oReg = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") $oReg.EnumKey ($HKEY, $strKeyPath, $arrSubKeys) Return $arrSubKeys EndFunc ;==>_GetRegSubKeys ;======================================================================================== ; Function Name: _GetRegRights($HKEY) ; Description: Ermittelt die Rechte des Abfragenden für den übergebenen Schlüssel ; Parameter(s): $HKEY der zu prüfende Registryschlüssel ; Return Value(s): String mit Auflistung der Rechte: ; Q Key Query Value ; S Key Set Value ; C Key Create Sub Key ; D Delete ; Author(s): BugFix (bugfix@autoit.de) ;======================================================================================== Func _GetRegRights($HKEY) Local $bHasAccessRight, $sRights = '' If StringInStr($HKEY, '\') Then If StringRight($HKEY, 1) = '\' Then $HKEY = StringTrimRight($HKEY, 1) Local $strKeyPath = '' Else Local $strKeyPath = StringRight($HKEY, StringLen($HKEY)-StringInStr($HKEY, '\') ) $HKEY = StringLeft($HKEY, StringInStr($HKEY, '\')-1) EndIf Else Local $strKeyPath = '' EndIf Select Case $HKEY = "HKEY_LOCAL_MACHINE" Or $HKEY = "HKLM" $HKEY = 0x80000002 Case $HKEY = "HKEY_USERS" Or $HKEY = "HKU" $HKEY = 0x80000003 Case $HKEY = "HKEY_CURRENT_USER" Or $HKEY = "HKCU" $HKEY = 0x80000001 Case $HKEY = "HKEY_CLASSES_ROOT" Or $HKEY = "HKCR" $HKEY = 0x80000000 Case $HKEY = "HKEY_CURRENT_CONFIG" Or $HKEY = "HKCC" $HKEY = 0x80000005 EndSelect Local $oReg = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") $oReg.CheckAccess($HKEY, $strKeyPath, 0x0001, $bHasAccessRight) If $bHasAccessRight = True Then $sRights &= 'Q' $oReg.CheckAccess($HKEY, $strKeyPath, 0x0002, $bHasAccessRight) If $bHasAccessRight = True Then $sRights &= 'S' $oReg.CheckAccess($HKEY, $strKeyPath, 0x0004, $bHasAccessRight) If $bHasAccessRight = True Then $sRights &= 'C' $oReg.CheckAccess($HKEY, $strKeyPath, 0x00010000, $bHasAccessRight) If $bHasAccessRight = True Then $sRights &= 'D' Return $sRights EndFunc ;==>_GetRegRights ;======================================================================================== ; Function Name: _GetRegValues($HKEY) ; Description: Ermittelt alle Namen, Typen und Werte in einem gegebenen Schlüssel ; Parameter(s): $HKEY der Registryschlüssel ; Return Value(s): Erfolg Array[i][0] = Name ; Array[i][1] = Typ ; Array[i][2] = Wert ; Fehler Leerstring (Schlüssel existiert nicht oder ist ohne Einträge) ; Author(s): BugFix (bugfix@autoit.de) ;======================================================================================== Func _GetRegValues($HKEY) Local $oMyError = ObjEvent("AutoIt.Error","MyErrFunc") If StringInStr($HKEY, '\') Then If StringRight($HKEY, 1) = '\' Then $HKEY = StringTrimRight($HKEY, 1) Local $strKeyPath = '' Else Local $strKeyPath = StringRight($HKEY, StringLen($HKEY)-StringInStr($HKEY, '\') ) $HKEY = StringLeft($HKEY, StringInStr($HKEY, '\')-1) EndIf Else Local $strKeyPath = '' EndIf Select Case $HKEY = "HKEY_LOCAL_MACHINE" Or $HKEY = "HKLM" $HKEY = 0x80000002 Case $HKEY = "HKEY_USERS" Or $HKEY = "HKU" $HKEY = 0x80000003 Case $HKEY = "HKEY_CURRENT_USER" Or $HKEY = "HKCU" $HKEY = 0x80000001 Case $HKEY = "HKEY_CLASSES_ROOT" Or $HKEY = "HKCR" $HKEY = 0x80000000 Case $HKEY = "HKEY_CURRENT_CONFIG" Or $HKEY = "HKCC" $HKEY = 0x80000005 EndSelect Local $oReg = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") Local $arrValueNames, $arrValueTypes, $strValue $oReg.EnumValues($HKEY, $strKeyPath, $arrValueNames, $arrValueTypes) $OEvent = ObjEvent($oReg, "EnumValues") If Not IsArray($arrValueNames) Then Return '' Local $arOut[UBound($arrValueNames)][3] For $i = 0 To UBound($arrValueNames) -1 $arOut[$i][0] = $arrValueNames[$i] Switch $arrValueTypes[$i] Case 1 $arOut[$i][1] = 'REG_SZ' $oReg.GetStringValue($HKEY, $strKeyPath, $arrValueNames[$i], $strValue) Case 2 $arOut[$i][1] = 'REG_EXPAND_SZ' $oReg.GetExpandedStringValue($HKEY, $strKeyPath, $arrValueNames[$i], $strValue) Case 3 $arOut[$i][1] = 'REG_BINARY' $oReg.GetBinaryValue($HKEY, $strKeyPath, $arrValueNames[$i], $strValue) Case 4 $arOut[$i][1] = 'REG_DWORD' $oReg.GetStringValue($HKEY, $strKeyPath, $arrValueNames[$i], $strValue) Case 7 $arOut[$i][1] = 'REG_MULTI_SZ' $oReg.GetMultiStringValue($HKEY, $strKeyPath, $arrValueNames[$i], $strValue) EndSwitch $arOut[$i][2] = $strValue Next Return $arOut EndFunc ;==>_GetRegValues Func MyErrFunc() Return Endfunc