F
Mit dem Beispiel-Code von -King-, auf den ich dich schon mehrfach verwiesen hatte, solltest du eigentlich in der Lage sein, die gewünschten Werte auszulesen:
-King- schrieb:
// wbemuuid.lib nicht vergessen!
#include <windows.h>
#include <tchar.h>
#include <wbemdisp.h>
VOID ProcessorId(ISWbemObject* pObject)
{
ISWbemPropertySet* pPropSet = NULL;
if(SUCCEEDED(pObject->get_Properties_(&pPropSet)))
{
ISWbemProperty* pProp = NULL;
BSTR bstrName = SysAllocString(L"ProcessorId");
if(SUCCEEDED(pPropSet->Item(bstrName, 0, &pProp)))
{
VARIANT varValue;
VariantInit(&varValue);
if(SUCCEEDED(pProp->get_Value(&varValue)))
{
if(SUCCEEDED(VariantChangeType(&varValue, &varValue, 0, VT_BSTR)))
{
MessageBoxW(NULL, V_BSTR(&varValue), L"ProcessorId", MB_OK);
}
}
VariantClear(&varValue);
pProp->Release();
}
SysFreeString(bstrName);
pPropSet->Release();
}
return;
}
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
ISWbemObjectSet* pObjectSet = NULL;
ISWbemServices* pServices = NULL;
ISWbemObject* pObject = NULL;
IEnumVARIANT* pEnumObj = NULL;
IUnknown* pUnk = NULL;
VARIANT varItem;
HRESULT hr;
BSTR bstrClass, bstrName;
CoInitialize(NULL);
if(SUCCEEDED(CoGetObject(OLESTR("winmgmts:"), NULL, IID_ISWbemServices, (void**)&pServices)))
{
bstrClass = SysAllocString(OLESTR("Win32_Processor"));
if(SUCCEEDED(pServices->InstancesOf(bstrClass, 0, NULL, &pObjectSet)))
{
if(SUCCEEDED(pObjectSet->get__NewEnum(&pUnk)))
{
if(SUCCEEDED(pUnk->QueryInterface(IID_IEnumVARIANT, (void**)&pEnumObj)))
{
while(S_OK == pEnumObj->Next(1, &varItem, NULL))
{
if(FAILED(VariantChangeType(&varItem, &varItem, 0, VT_UNKNOWN)))
{
VariantClear(&varItem);
continue;
}
pObject = NULL;
hr = V_UNKNOWN(&varItem)->QueryInterface(IID_ISWbemObject, (void**)&pObject);
VariantClear(&varItem);
ProcessorId(pObject);
if(FAILED(hr))
continue;
bstrName = NULL;
pObject->GetObjectText_(0, &bstrName);
MessageBoxW(NULL, bstrName, L"Processor Info", MB_OK);
SysFreeString(bstrName);
pObject->Release();
}
pEnumObj->Release();
}
pUnk->Release();
}
pObjectSet->Release();
}
SysFreeString(bstrClass);
pServices->Release();
}
CoUninitialize();
return(0);
}
Wichtig ist auch der Kommentar in der ersten Zeile - WbemUuid.Lib mitlinken (bei mir funktionierte das Ganze aber nur im Release-Modus)