Проблемы с производительностью IUpdateSearcher

Я использую IUpdateSession а также IUpdateSearcher в попытке получить список доступных обновлений для системы 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 минут.

Это нормальное поведение или что-то можно сделать для улучшения производительности?

Заранее благодарю за любую помощь. Другие решения для получения списка доступных обновлений также приветствуются.

1 ответ

Это нормальное поведение, и я думаю, что вы, возможно, ищете обновления для новой виртуальной машины Windows 7.

Другие вопросы по тегам