0

我有一个 vb 脚本,它检查是否有待处理的更新。有时 Windows 搜索会返回错误(例如 503)并生成错误弹出窗口。由于我不熟悉vbs,我不知道从哪里开始寻找解决方案。


        Set updateSession = CreateObject("Microsoft.Update.Session")
        Set updateSearcher = updateSession.CreateupdateSearcher()
        Set searchResult = updateSearcher.Search("IsInstalled=0 and Type='Software'")

问题出现在第 3 行。它说:

脚本:C:\path-to-my-script\my-script.vbs
线路:3
字符:1
错误:0x80244022
代码:80244022
来源:(空)

如何防止生成弹出窗口或获取它的句柄并立即关闭它?

4

1 回答 1

2

错误 0x80244022 意味着更新服务器 HTTP 服务暂时不可用(无论出于何种原因)。有关与连接相关的错误代码列表,请参阅此 MSKB 文章

要处理此错误,请将其放在 anOn Error Resume NextOn Error Goto 0语句之间:

Set updateSession = CreateObject("Microsoft.Update.Session")
Set updateSearcher = updateSession.CreateupdateSearcher()

On Error Resume Next
Set searchResult = updateSearcher.Search("IsInstalled=0 and Type='Software'")
If Err Then
  'add logging routine here
  WScript.Quit 1
End If
On Error Goto 0

'more code here

请注意,上述方法将在调用该Search方法时发生任何错误时不加选择地终止脚本。如果你想以不同的方式处理不同的错误,你可以例如Select在条件中放置一条语句:

If Err Then
  Select Case Err.Number
    Case &h80244022
      'quit immediately
      WScript.Quit 1
    Case &h8009033F
      'wait some time and retry
      WScript.Sleep 900000
      Set searchResult = updateSearcher.Search(...)
    Case &h...
      'just log a message and continue
      ...
  End Select
End If
于 2013-10-09T17:23:14.060 回答