WUA API学习笔记.docVIP

  • 4
  • 0
  • 约1.05万字
  • 约 10页
  • 2017-05-26 发布于河南
  • 举报
WUA API学习笔记

WUA API学习笔记 2009-07-25 10:48 1082人阅读 评论(0) 收藏 举报 Widnows补丁检测最基本的方法还是通过微软自己提供的相关接口来实现比较好。这里用到得也就是Windows Update Agent API了,Windows Update Agent API其实属于COM接口,不过可以通过VB,VC,.net等来调用,这里我选择用C调用。当然是用VB比较简单微软也给出了范例,也就几十行代码就搞定的事情。不过c++实现的范例国内的资料基本没有, 以下只是我参考MSDN的一些学习笔记,当然对于这个你们也可以自己参考MSDN的得到,不足之处还请指出。并附上一段简单的调用代码。 1 WUA API中各类直接的关系。 ? WUA API中存在以下接口: ? 要使用IUpdateSearcher、IUpdateDownloader、IUpdateInstaller、WebProxy等类必须先建立 ? IUpdateSession对象。这里所有类的属性基本上都有Get操作,部分是Put操作。 ? 而IUpdateSession则必须通过com来产生一个实例。 2 要想获得补丁的信息先得通过IUpdateSearcher接口进行查询。 ?2.1 IUpdateSearcher接口的使用方法。 ???? 主要调用IUpdateSearcher.Search方法,进行同步查询。 ??? HRESULT Search( ? ??? [in]?? BSTR criteria, ? ??? [out]? ISearchResult **retval ??? ); ???? 其中BSTR criteria是我们的查询条件字符串,其格式和SQL语句的条件类似, ???? 支持And或Or等逻辑运算,以及=、!=等运算。 ???? 通常我们关心的criteria查询条件有:Type、IsInstalled、IsHidden等,其他的条件可以参考: ???? /en-us/library/aa386526(VS.85).aspx。 ???? Type 是String类型,指查询更新的类型,如Driver和Software。 ???? IsInstalled 是int类型,指查询更新的补丁是否已经安装。 ???? criteria = Type = Software and IsInstalled = 0; ???? 查询的返回结果是ISearchResult类型,下面我们再来看ISearchResult接口。 ?2.2 ISearchResult接口的使用方法。 ???? ISearchResult接口有四个属性,ResultCode、RootCategories、Updates、Warnings,这里我们关心的是 ???? Updates这个属性。 ???? Updates属性包含了我们查询更新后的结果的接口集。 ???? ISearchResult::Updates ???? Updates有get_Updates这个方法,来进一步返回数据。 ???? HRESULT get_Updates( ???? ?[out]? IUpdateCollection **retval ??? ); ???? ISearchResult::Updates.get_Updates(); ???? 这其中使用到了IUpdateCollection类来存放结果,下面我们在来看IUpdateCollection接口的使用。 ?2.3 IUpdateCollection接口的使用方法。 ???? IUpdateCollection有5个方法,Add,Clear,Copy,Insert,RemoveAt。不过这些方法不是我们现在关心的。 ???? 我们关心的是它的另外四个属性,_NewEnum、Count、Item、ReadOnly。 ???? 其中Count指的是返回的满足我们的跟新查询条件的结果的记录个数。 ???? Item则是进一步的存放了我们需要的信息。 ???? Item属性有有两个对应的操作,put和get,可以用来修改或取得信息。 ??? HRESULT put_Item( ? ??? [in]?? long index, ? ??? [in]?? IUpdate *value ??? ); ??? HRESULT get_Item( ? ??? ?[in]?? long index, ???? ?[out]? IUpdate **retval ??? ); ???? IUpdateCollection::Item.get_Item();方法可以取出查询结果记录中第i条记录的值,当然了这里的值又是 ???? 以IUpdate类的

文档评论(0)

1亿VIP精品文档

相关文档