WUApiLib.iupdate VB.net 检索属性错误

WUApiLib.iupdate VB.net retrieving properties error

我有以下代码来检查 windows 更新

Function CheckWinUpdates() As Integer
    CheckWinUpdates = 0
    Dim WUSession As UpdateSession
    Dim WUSearcher As UpdateSearcher
    Dim WUSearchResults As ISearchResult
    Try
        WUSession = New UpdateSession
        WUSearcher = WUSession.CreateUpdateSearcher()
        WUSearchResults = WUSearcher.Search("IsInstalled=0 and Type='Software'")
        CheckWinUpdates = WUSearchResults.Updates.Count
    Catch ex As Exception
        CheckWinUpdates = -1
    End Try

    If CheckWinUpdates > 0 Then
        Try
            'Dim Update As IUpdate
            Dim i As Integer = 0
            For i = 0 To WUSearchResults.Updates.Count - 1
                'Update = WUSearchResults.Updates.Item(i)
                EventLog.WriteEntry("Item is type: " & WUSearchResults.Updates.Item(i).ToString, EventLogEntryType.Information, 85)
                EventLog.WriteEntry("Deadline: " & WUSearchResults.Updates.Item(i).Deadline.ToString, EventLogEntryType.Information, 85)
                EventLog.WriteEntry("Type: " & WUSearchResults.Updates.Item(i).Type.ToString, EventLogEntryType.Information, 85)
                EventLog.WriteEntry("Released on: " & WUSearchResults.Updates.Item(i).LastDeploymentChangeTime, EventLogEntryType.Information, 85)
                EventLog.WriteEntry("This windows update is required: " & WUSearchResults.Updates.Item(i).Title, EventLogEntryType.Information, 85)
                'EventLog.WriteEntry("This windows update is required: " & Update.Title & vbCrLf & "Released on: " &
                '                    Update.LastDeploymentChangeTime & vbCrLf & "Type: " & Update.Type.ToString & vbCrLf &
                '                    "Deadline: " & Update.Deadline.ToString & vbCrLf & vbCrLf & "Item is type: " & Update.ToString, EventLogEntryType.Information, 85)
            Next
        Catch ex As Exception
            EventLog.WriteEntry("Error while attempting to log required updates:" & vbCrLf & ex.Message, EventLogEntryType.Error, 86)
        End Try
    End If

    WUSearchResults = Nothing
    WUSearcher = Nothing
    WUSession = Nothing
End Function

我这样做的目的是 a) 获取适用的 windows 更新的数量,以及 b) 查看还有哪些其他属性可用,更具体地说,查看有多少超过一周或 2.

我知道 UpdateSearcher 不允许按日期搜索,所以我希望遍历每个项目,然后再报告每个项目。

目前我的函数很高兴 return updtes 的数量,但是当我尝试获取任何属性时,我得到 "Object reference not set to an instance of an object".

有什么地方出错了吗?

我得到了这个工作,但它不喜欢截止日期 属性,我不知道它会在 "object reference not set" 出现,但对于我需要的东西来说这无关紧要.