c++ - IUpdateSearcher 性能问题

我正在使用 IUpdateSessionIUpdateSearcher 来尝试获取 Windows 系统的可用更新列表。

hr = CoCreateInstance(CLSID_UpdateSession, NULL, CLSCTX_INPROC_SERVER,  IID_IUpdateSession, (void**)&pUpdateSession);
if (FAILED(hr) || pUpdateSession == NULL)
{
    return;
}

hr = pUpdateSession->CreateUpdateSearcher(&pUpdateSearcher);
if (FAILED(hr) || pUpdateSearcher == NULL)
{
    return;
}

pUpdateSearcher->put_Online(VARIANT_FALSE);
pUpdateSearcher->put_CanAutomaticallyUpgradeService(VARIANT_FALSE);
pUpdateSearcher->put_IncludePotentiallySupersededUpdates(VARIANT_FALSE);


hr = pUpdateSearcher->Search(BSTR(L"IsInstalled=0 AND IsHidden=0"), &type);
if (FAILED(hr) || type == NULL)
{
    return;
}
else
{
    ... Print results etc. etc.
}

当您有单个(或少量)更新时,这非常有用。在有 109 个可用更新的新机器上进行测试时,->Search() 调用需要超过 10 分钟 来处理。

这是正常行为,还是可以采取一些措施来提高性能?

在此先感谢您的帮助。 也欢迎其他实现可用更新列表的解决方案。

最佳答案

这是正常行为,我认为您可能正在新的 Windows 7 VM 上搜索更新。

https://stackoverflow.com/questions/34071904/

相关文章:

javascript - 如何使 containsNode() 在 IE 中工作?

sql - 带 Where 子句的 OFFSET SQL 查询

python - 使用 python 3.5 用希伯来语和英语解析 json 文件

Java 插件 - SonarQube 添加自定义规则

jenkins - 在 Windows(64 位)的 jenkins 中安装 gitlab hook

java - 在运行时检查 Java 字节码是否包含调试符号

python - 使用请求模块在 header 中获取 Set-Cookie

android - 带有 Snackbar 和透明导航栏的 FloatingActionButton

java - @Override,在接口(interface)中使用默认方法

java - 为什么 Dagger 注入(inject)具体类?