WMI win32_physicalmedia или win32_diskdrive результат поиска

Я использую Visual C ++ 2010.

Я пытаюсь получить серийный номер жесткого диска, используя win32_physicalmedia или win32_diskdrive, и он работает нормально, но на многих ПК он отображает серийный номер более одного раза, а иногда и с символами и символами.

Код, который я использую, выглядит следующим образом:

pSvc->ExecQuery(
bstr_t("WQL"),
bstr_t("SELECT SerialNumber FROM Win32_PhysicalMedia"), // or Win32_DiskDrive
WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
NULL,
&pEnumerator);

IWbemClassObject *pclsObj;
ULONG uReturn = 0;

while (pEnumerator)
{
HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1,
&pclsObj, &uReturn);

if(0 == uReturn)
{
break;
}

VARIANT vtProp;

hr = pclsObj->Get(L"SerialNumber", 0, &vtProp, 0, 0);
wcout << " Physical Drive SN : " << vtProp.bstrVal << endl;
VariantClear(&vtProp);

pclsObj->Release();
}

Результат иногда такой:
Физический диск SN: 325a323565222565226500
Физический диск SN: 325a323565222565226500
Физический диск SN: 3
Физический диск SN: 3
Физический диск SN: 3
Физический диск SN: ♥
Физический диск SN: ♥

Как вы видите, серийный номер правильный, но он повторяется дважды во 2-й строке, а другие строки показывают символы, зная, что у меня только 1 жесткий диск.

Пожалуйста, порекомендуйте.

-1

Решение

Ох, ребята, я думаю, после некоторых исследований я обнаружил, что код также пытается получить серийный номер всех съемных устройств, а не только жесткого диска!

Может кто-нибудь сказать мне, как указать медиатип только для фиксированного жесткого диска! ?

0

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


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