Com 下载Microsoft修补程序的URL

Com 下载Microsoft修补程序的URL,com,wuapi,Com,Wuapi,我正在制作自己的项目,我将搜索Microsoft更新,但不会使用WUA API下载/安装。我将使用wuaapi仅用于检测和获取各个补丁的属性 为了使上述场景正常工作,我可以通过ISearchResult获得更新界面。因此,有一个属性DownloadContent将为我提供IUpdateDownloadContentCollection接口,通过该接口我将获得IUpdateDownloadContent接口,最后我可以获得指定补丁的下载URL 最初,IUpdateDownloadContent的D

我正在制作自己的项目,我将搜索Microsoft更新,但不会使用
WUA API
下载/安装。我将使用
wuaapi
仅用于检测和获取各个补丁的属性

为了使上述场景正常工作,我可以通过
ISearchResult
获得更新界面。因此,有一个属性
DownloadContent
将为我提供
IUpdateDownloadContentCollection
接口,通过该接口我将获得
IUpdateDownloadContent
接口,最后我可以获得指定补丁的下载URL

最初,
IUpdateDownloadContent
DownloadUrl
属性无法提供任何url。后来我发现
downloadUrl
仅适用于
type='Driver'
的补丁,而不适用于“Software type”

我在网上搜索,但没找到运气

我不想使用COM API进行下载和安装的原因是,我看到每当我们使用
WUA API
进行下载或安装时,“trustedinstaller.exe”进程就会开始运行,并占用大部分系统资源,速度会减慢


有人能告诉我为什么我不能收到类型为“软件”的补丁/更新的
DownloadUrl

在做了这么多研究之后,我终于得到了答案。
要获得
Type=Software
DownloadUrl
,我们必须使用
Iupdate
接口的
bundleUpdates
属性,该属性将指向
IupdateClassification
,该属性反过来将为我们提供
Iupdate
接口,我们可以从
DownloadCont>获得
DownloadUrl
ent

此伪代码显示如何获取所搜索更新的所有URL

SearchResult = UpdateSearcher.Search("Type='Software'")

FOR EACH (SearchResult.Updates AS Update) {
  FOR EACH (Update.BundledUpdates AS BundledUpdate) {
    FOR EACH (BundledUpdate.DownloadContents AS DownloadContent) {
      
      DISPLAY DownloadContent.DownloadUrl

    }
  }
}

这并不是那么简单,因为对于每个更新,
bundleUpdates
是一个可能包含多个捆绑更新的集合,
bundleUpdates
中的每个捆绑更新,
DownloadContent
也是一个包含多个文件的集合,这些文件具有不同的
DownloadUrl
。因此,您需要添加逻辑来确定是什么捆绑并下载您需要的内容。@ajit,@antonio集合名称是
DownloadContents
,而不是
DownloadContent