Проблемы с производительностью 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 минут обрабатывать.

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

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

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]