Серийный номер материнской платы
От:
Kolich
Дата: 05.11.03 15:29
Оценка:
Такой вот вопрос:
можно ли всетаки у motherboard серийник определить?
на форумах rsdn и на других вопрос часто подымался, но решения я так и не смог найти.
попытки были по всякому это сделать:
через адресс, через WMI и тд,
но через адрес народ утверждает что это не тот серийник, а через WMI пробовал, возвращает пустую строку.
Есть решение у этой проблемы?
05.11.03 18:34: Перенесено модератором из 'C/C++' — ПК
От:
Kolich
Дата: 05.11.03 19:45
Оценка:
Даже вот так:
в 98 windows для этого подходит следующее:
CString bname, bcopy, bdate, bserial;
bname.Format("%s",(char*)(0xFE061)); // Bios name
bcopy.Format("%s",(char*)(0xFE091)); // Bios copyright
bdate.Format("%s",(char*)(0xFFFF5)); // Bios date
bserial.Format("%s",(char*)(0xFEC71)); // Bios serial number
но в xp такой код не работает, не может по такому аддресу обратится, что сделать?
Re: Серийный номер материнской платы
K>можно ли всетаки у motherboard серийник определить?
Можно.
K>на форумах rsdn и на других вопрос часто подымался, но решения я так и не смог найти.
Решения были приведены. И именно тут.
K>попытки были по всякому это сделать:
K>через адресс, через WMI и тд,
K>но через адрес народ утверждает что это не тот серийник, а через WMI пробовал, возвращает пустую строку.
Ничего подобного. Через WMI все прекрасно работает. Нет WMI — можно через DMI.
K>Есть решение у этой проблемы?
Есть. Искать по гуглю и по форуму. Тут даже примеры кода были.
Успехов.
Re[2]: Серийный номер материнской платы
От:
Kolich
Дата: 06.11.03 09:16
Оценка:
Нет, сериал нумбер через WMI возвращает пустую строку,
Вот такой код:
HRESULT hres;
IWbemLocator *spLocator;
IWbemClassObject *spObject;
ULONG ulCount;
_variant_t val;
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
CoInitializeSecurity(NULL, -1, NULL, NULL,
RPC_C_AUTHN_LEVEL_CONNECT,
RPC_C_IMP_LEVEL_IMPERSONATE,
NULL, EOAC_NONE, 0);
hres = CoCreateInstance(__uuidof(WbemLocator), NULL,
CLSCTX_INPROC_SERVER, __uuidof(IWbemLocator),
(PVOID *)&spLocator);
IWbemServices *spServices;
hres = spLocator->ConnectServer(_bstr_t(L"root\\cimv2"), NULL,
NULL, NULL, 0, NULL, NULL,
&spServices);
IEnumWbemClassObject *spEnum;
hres = spServices->CreateInstanceEnum(_bstr_t(L"Win32_BaseBoard"),
WBEM_FLAG_SHALLOW|WBEM_FLAG_FORWARD_ONLY,
NULL, &spEnum);
spEnum->Next(WBEM_INFINITE, 1, &spObject, &ulCount);
hres = spObject->Get(L"SerialNumber", 0, &val, NULL, NULL);
возвращает пустую строчку.
Ответов конкретных на форуме так и не нашел.
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить