Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Dirk Diggler
например, из реестра... не понял насчет версий, как вариант - найти соотв. CAT-файл и восстановить его дату
Код: Выделить весь код
#include <Array.au3>

$file = "C:\HotFixes.txt"
$aList = _GetHotFixes ()

$f = FileOpen ($file, 2)
For $i=1 To $aList[0][0]
    FileWrite ($file, $aList[$i][0] & @CRLF & $aList[$i][1] & @CRLF & $aList[$i][2] & @CRLF & @CRLF)
Next
FileClose ($f)

Func _GetHotFixes ()
    Local $i, $j, $k, $iKey, $jKey, $kKey
    Local Const $root1 = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix"
    Local Const $root2 = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates"
    Local $arrList[1] = [0], $arrHFix[1][3] = [[0,0,0]]
    $i=1
    While True
        $iKey = RegEnumKey ($root1, $i)
        If @error Then  ExitLoop
        $arrList[0]+=1
        ReDim $arrList[$arrList[0]+1]
        $arrList[$arrList[0]] = $iKey
        $i+=1
    Wend
    $i=1
    While True
        $iKey = RegEnumKey ($root2, $i)
        If @error Then  ExitLoop
        $j=1
        While True
            $jKey = RegEnumKey ($root2 & '\' & $iKey, $j)
            If @error Then  ExitLoop
            If _ArraySearch ($arrList, $jKey, 1) > 0 Then
                $arrHFix[0][0] +=1
                ReDim $arrHFix[$arrHFix[0][0]+1][3]
                $arrHFix[$arrHFix[0][0]][0]=$jKey
                $arrHFix[$arrHFix[0][0]][1]=$iKey
                $arrHFix[$arrHFix[0][0]][2]=RegRead ($root2 & '\' & $iKey & '\' & $jKey, 'Description')
                If @error Then $arrHFix[$arrHFix[0][0]][2]=RegRead ($root2 & '\' & $iKey & '\' & $jKey, 'PackageName')
            ElseIf StringRegExp ($jKey, '^SP[1-9]$') Then
                $k=1
                While True
                    $kKey = RegEnumKey ($root2 & '\' & $iKey & '\' & $jKey, $k)
                    If @error Then  ExitLoop
                    If _ArraySearch ($arrList, $kKey, 1) > 0 Then
                        $arrHFix[0][0] +=1
                        ReDim $arrHFix[$arrHFix[0][0]+1][3]
                        $arrHFix[$arrHFix[0][0]][0]=$kKey
                        $arrHFix[$arrHFix[0][0]][1]=$iKey
                        $arrHFix[$arrHFix[0][0]][2]=RegRead ($root2 & '\' & $iKey & '\' & $jKey & '\' & $kKey, 'Description')
                        If @error Then $arrHFix[$arrHFix[0][0]][2]=RegRead ($root2 & '\' & $iKey & '\' & $jKey, 'PackageName')
                    EndIf
                    $k+=1
                Wend
            EndIf
            $j+=1
        Wend
        $i+=1
    Wend
    Return $arrHFix
EndFunc

Последний раз редактировалось amel27, 28-04-2007 в 11:32.


Отправлено: 09:44, 24-04-2007 | #319