本帖最后由 newuser 于 2010-9-28 10:18 编辑
回复 22# 3mile
加了个if判断,作用这么大!!!没想到!!!!!!
另外,请帮忙看以下代码,找的数据没有老大给的代码找的全.#cs
新增对分支HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates的枚举,以下都是该分支下的分支(注意有 XP和WinServer2003):
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows XP\SP0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows XP\SP2
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows XP\SP3
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows XP\SP4
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows Server 2003\SP10
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows Server 2003\SP2
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows Server 2003\SP3
问题1:2003下的SP10有1个KB文件,SP2有1个,SP3 下有150,可实际只枚举出148个?SP2下的那个KB文件一直没有枚举出来?
分析:与 3mile对比,它的更准,我的这个总少枚举了!
#ce
#include <File.au3>
#include <array.au3>
Dim $i,$Array,$j
Dim $CommonReg,$EnumResult
If FileExists(@ScriptDir&"\EnumList.ini") Or FileExists(@ScriptDir&"\FixedPatchsList2.ini") Then
FileDelete(@ScriptDir&"\EnumList.ini")
FileDelete(@ScriptDir&"\FixedPatchsList2.ini")
EndIf
If @OSVersion="WIN_XP" Then
IniWrite(@ScriptDir&"\EnumList.ini","枚举注册表路径","HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows XP\SP0","1")
IniWrite(@ScriptDir&"\EnumList.ini","枚举注册表路径","HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows XP\SP2","1")
IniWrite(@ScriptDir&"\EnumList.ini","枚举注册表路径","HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows XP\SP3","1")
IniWrite(@ScriptDir&"\EnumList.ini","枚举注册表路径","HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows XP\SP4","1")
ElseIf @OSVersion="WIN_2003" Then
IniWrite(@ScriptDir&"\EnumList.ini","枚举注册表路径","HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows Server 2003\SP10","1")
IniWrite(@ScriptDir&"\EnumList.ini","枚举注册表路径","HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows Server 2003\SP2","1")
IniWrite(@ScriptDir&"\EnumList.ini","枚举注册表路径","HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows Server 2003\SP3","1")
Else
MsgBox(0,"","抱歉,目前你的系统还不被支持!")
EndIf
$Array=IniReadSection(@ScriptDir&"\EnumList.ini","枚举注册表路径")
If @error Then
Else
For $i=0 To UBound($Array)-1
$CommonReg=$Array[$i][0]
While 1
$j +=1
$EnumResult=RegEnumKey($CommonReg,$j)
If @error <> 0 Then ExitLoop
;$KBString = StringRegExpReplace($EnumResult, '.*?(KB\d+)[^\d]*?.*', '$1')
;If @extended > 0 Then IniWrite(@ScriptDir&"\FixedPatchsList2.ini","已安装补丁列表",$KBString,"1")
IniWrite(@ScriptDir&"\FixedPatchsList2.ini","已安装补丁列表",$EnumResult,"1")
WEnd
Next
EndIf
MsgBox(0,'',_FileCountLines(@ScriptDir&"\FixedPatchsList2.ini"))
|