Пожалуйста, обратите внимание, что пользователь заблокирован
C:
#include <wbemidl.h>
#include <comutil.h>
#pragma comment(lib, "wbemuuid.lib")
#pragma comment(lib, "comsuppw.lib")
HRESULT GetInstalledAvName(LPSTR installedAv)
{
HRESULT hr = S_OK;
hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
if (FAILED(hr))
{
return hr;
}
hr = CoInitializeSecurity(NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_DEFAULT, RPC_C_IMP_LEVEL_IMPERSONATE,
NULL, EOAC_NONE, NULL);
if (FAILED(hr))
{
CoUninitialize();
return hr;
}
IWbemLocator* pWbemLocator = NULL;
hr = CoCreateInstance(CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID*)&pWbemLocator);
if (FAILED(hr))
{
CoUninitialize();
return hr;
}
IWbemServices* pWbemServices = NULL;
//в вин версиях ниже 7, вместо "root\\SecurityCenter2" - "\root\SecurityCenter", не проебитесь.
//как получить версию винды смотрите в соседней теме
hr = pWbemLocator->ConnectServer(_bstr_t(L"root\\SecurityCenter2"), NULL, NULL, 0, NULL, 0, NULL, &pWbemServices);
if (FAILED(hr))
{
pWbemLocator->Release();
CoUninitialize();
return hr;
}
IEnumWbemClassObject* pEnum;
hr = pWbemServices->ExecQuery(bstr_t("WQL"), bstr_t("Select * From AntivirusProduct"), WBEM_FLAG_FORWARD_ONLY, NULL, &pEnum);
if (FAILED(hr))
{
pWbemLocator->Release();
pWbemServices->Release();
CoUninitialize();
return hr;
}
ULONG uObjectCount = 0;
IWbemClassObject* pWmiObject;
hr = pEnum->Next(WBEM_INFINITE, 1, &pWmiObject, &uObjectCount);
if (FAILED(hr))
{
pWbemLocator->Release();
pWbemServices->Release();
pEnum->Release();
return hr;
}
VARIANT vtProp;
hr = pWmiObject->Get(L"displayName", 0, &vtProp, 0, 0);
if (FAILED(hr))
{
pWbemLocator->Release();
pWbemServices->Release();
pEnum->Release();
pWmiObject->Release();
return hr;
}
lstrcatA(installedAv, _com_util::ConvertBSTRToString(vtProp.bstrVal));
return TRUE;
}
Использование:
C:
int main()
{
static char installedAv[100];
HRESULT hr = S_OK;
hr = GetInstalledAvName(installedAv);
if (FAILED(hr))
{
printf("Getting installedAv error\n");
}
printf("installedAv = %s\n", installedAv);
return 0;
}