Я использую 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 жесткий диск.
Пожалуйста, порекомендуйте.
Ох, ребята, я думаю, после некоторых исследований я обнаружил, что код также пытается получить серийный номер всех съемных устройств, а не только жесткого диска!
Может кто-нибудь сказать мне, как указать медиатип только для фиксированного жесткого диска! ?