回复 10# newuser
第11行的问题。
#include <Array.au3>
#include <WinAPIEx.au3>
Local $hKey, $Count, $Num = 0
Local $Vkey = 'SOFTWARE\Microsoft\Updates\Windows Server 2003';第一好要枚举的父键
Local $aKey
$array=EnumKey($Vkey);首先定义了枚举的变量后在用函数枚举
_ArrayDisplay($array);显示返回的数组
If UBound($array) > 0 Then;如果返回的数组维度大于0
For $i = 0 To UBound($array) - 1;从0 到 2
$Wkey = $Vkey & '\' & $array[$i]
;第1个$Wkey是:SOFTWARE\Microsoft\Updates\Windows Server 2003\SP10
;可是 第1个再EnumKey()后,后续的$i=1和$i=2没进行?
$keyArray=EnumKey($Wkey)
MsgBox(0,"第"&$i&"的UBound($keyArray)维度是",UBound($keyArray))
_ArrayDisplay($keyArray)
If UBound($keyArray)>0 Then
For $n=0 To UBound($keyArray)-1
IniWrite("hotfixed.ini","hotfixed",$keyArray[$n],"1")
Next
EndIf
Next
EndIf
Func EnumKey($Key)
$hKey = _WinAPI_RegOpenKey($HKEY_LOCAL_MACHINE, $key)
;MsgBox(0,'$hKey',$hKey)
;打开指定的键的子键,父键:$HKEY_LOCAL_MACHINE,子键:$Key,它实际接受变量$Vkey的值
$Count = _WinAPI_RegQueryInfoKey($hKey) ;检索指定键的相关信息,理解为$key下有多少项或其相关信息
;MsgBox(0,'$Count',$Count[0]&" "&$Count[1]&" "&$Count[2]&" "&$Count[3] )
Dim $aKey[$Count[0]];第一一个一维数组,有三个元素
;MsgBox(0,'UBound($aKey)',UBound($aKey))
For $i = 0 To UBound($aKey) - 1;$aKey数组的维度是3,数组下标确是从0 到 2
$aKey[$i] = _WinAPI_RegEnumKey($hKey, $i);枚举指定打开键下的子键
MsgBox(0,"第"&$i&"个枚举信息",$aKey[$i])
Next
_WinAPI_RegCloseKey($hKey);关闭打开的键
If Not IsArray($aKey) Then
Return -1;如果$aKey不是数组,返回值 -1
Else
Return $aKey;返回指定的数组
EndIf
EndFunc ;==>EnumKey
|