在Windows Update Search超时时禁止vbs中的弹出窗口

时间:2013-10-09 12:14:56

标签: vbscript windows-update

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


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

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

Script: C:\path-to-my-script\my-script.vbs
Line:   3
Char:   1
Error:  0x80244022
Code:   80244022
Source: (null)

如何阻止生成弹出窗口或获取弹出窗口并立即关闭它?

1 个答案:

答案 0 :(得分:2)

错误0x80244022表示更新服务器HTTP服务暂时不可用(无论出于何种原因)。请参阅this MSKB article以获取与连接相关的错误代码列表。

要处理此错误,请将其置于On 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