Агент обновления Windows чистые API Win32

Я разрабатываю пример кода для получения информации о мониторинге обновлений Windows.
Я столкнулся с API-интерфейсами агента обновления Windows. ссылка на сайт: http://msdn.microsoft.com/en-us/library/windows/desktop/aa387099(v=vs.85).aspx

Но я не могу найти API для Win32. Я нахожу только C # /. NET интерфейсы.
Есть ли соответствующие win32 API?

В частности, я хочу узнать «дату выпуска» обновления / патча Windows.
С нетерпением ждем любых предложений и указаний.

  • Srivathsa

2

Решение

API АВП включает в себя набор интерфейсов COM, которые можно использовать в приложениях C ++, поэтому попробуйте IUpdateSearcher, IUpdateSession а также IUpdate.

Проверьте этот пример приложения C ++, которое получает обновления и дату выпуска.

#include "stdafx.h"#include <wuapi.h>
#include <iostream>
#include <ATLComTime.h>
#include <wuerror.h>

using namespace std;int _tmain(int argc, _TCHAR* argv[])
{
HRESULT hr;
hr = CoInitialize(NULL);

IUpdateSession* iUpdate;
IUpdateSearcher* searcher;
ISearchResult* results;
BSTR criteria = SysAllocString(L"IsInstalled=1 or IsHidden=1 or IsPresent=1");

hr = CoCreateInstance(CLSID_UpdateSession, NULL, CLSCTX_INPROC_SERVER, IID_IUpdateSession, (LPVOID*)&iUpdate);
hr = iUpdate->CreateUpdateSearcher(&searcher);

wcout << L"Searching for updates ..."<<endl;
hr = searcher->Search(criteria, &results);
SysFreeString(criteria);

switch(hr)
{
case S_OK:
wcout<<L"List of applicable items on the machine:"<<endl;
break;
case WU_E_LEGACYSERVER:
wcout<<L"No server selection enabled"<<endl;
return 0;
case WU_E_INVALID_CRITERIA:
wcout<<L"Invalid search criteria"<<endl;
return 0;
}

IUpdateCollection *updateList;
IUpdate *updateItem;
LONG updateSize;
BSTR updateName;
DATE retdate;

results->get_Updates(&updateList);
updateList->get_Count(&updateSize);

if (updateSize == 0)
{
wcout << L"No updates found"<<endl;
}

for (LONG i = 0; i < updateSize; i++)
{
updateList->get_Item(i,&updateItem);
updateItem->get_Title(&updateName);
updateItem->get_LastDeploymentChangeTime(&retdate);
COleDateTime odt;
odt.m_dt=retdate;
wcout<<i+1<<" - "<<updateName<<"  Release Date "<< (LPCTSTR)odt.Format(_T("%A, %B %d, %Y"))<<endl;
}
::CoUninitialize();
wcin.get();
return 0;
}
9

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

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

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