|
查了一些文档,终于发现了
在coredll.dll里面有个函数GetDeviceUniqueID,可以获取的。。
呵呵.希望其它人有用。。
// 获取设备ID
int GetDeviceId(char *lpszDeviceId)
{
typedef int (WINAPI *GET_DEVICE_UNIQUE_ID)(
char * lpszAppdata, // 应用程序数据,会与真实的设备ID做个加密运算
int nAppdataLen,
int dwDeviceIDVersion,
char * lpszDeviceId, // 加密后的设备ID
int * pnDeviceIdLen);
HINSTANCE hDll = LoadLibrary(L"coredll.dll");
if(hDll == NULL)
{
// LOAD OSDial.dll 失败!
return -1;
}
GET_DEVICE_UNIQUE_ID fun = (GET_DEVICE_UNIQUE_ID)GetProcAddress(hDll, L"GetDeviceUniqueID");
if (fun == NULL)
{
FreeLibrary(hDll);
return -2;
}
char szAppData[] = "CreMedia6.BabyOL";
int nAppDataLen = strlen(szAppData)+1;
char szDeviceID[20] = "";
int nDeviceID = sizeof(szDeviceID);
int nRet = fun(szAppData, nAppDataLen, 1, szDeviceID, &nDeviceID);
if (nRet != 0)
{
FreeLibrary(hDll);
// GetDeviceUniqueID 失败!
return -3;
}
if (nDeviceID != 20)
{
FreeLibrary(hDll);
return -4;
}
strcpy(lpszDeviceId, "");
char szBuf[3] = "";
for (int i=0; i<20; i++)
{
sprintf(szBuf, "%02X", (UCHAR)szDeviceID);
strcat(lpszDeviceId, szBuf);
}
FreeLibrary(hDll);
return 0;
} |
|