获取主机的硬件信息,CPU的ID,MAC,以及硬盘的ID
2012-02-17 17:31
681 查看
前段时间给公司的软件加密,需要获取主机的一些硬件信息,从网上搜集得来的资料,忘记来源网址了,现在整理了记录以下:
一。获取CPU的ID
三。获取硬盘的ID
一。获取CPU的ID
CString GetCpuId() { CString CPUID; unsigned long s1,s2; unsigned char vendor_id[]="------------"; char sel; sel='1'; CString VernderID; CString MyCpuID,CPUID1,CPUID2; switch(sel) { case '1': __asm{ xor eax,eax //eax=0:取Vendor信息 cpuid //取cpu id指令,可在Ring3级使用 mov dword ptr vendor_id,ebx mov dword ptr vendor_id[+4],edx mov dword ptr vendor_id[+8],ecx } VernderID.Format(_T("%s-"),vendor_id); __asm{ mov eax,01h //eax=1:取CPU序列号 xor edx,edx cpuid mov s1,edx mov s2,eax } CPUID1.Format(_T("%08X-%08X"),s1,s2); __asm{ mov eax,03h xor ecx,ecx xor edx,edx cpuid mov s1,edx mov s2,ecx } CPUID2.Format(_T("-%08X-%08X"),s1,s2); break; case '2': { __asm{ mov ecx,119h rdmsr or eax,00200000h wrmsr } } AfxMessageBox(_T("CPU id is disabled.")); break; } MyCpuID = VernderID+CPUID1+CPUID2; CPUID = MyCpuID; return CPUID; }
二。获取MAC
BOOL GetMacAddress(CString& strMacAddress) { BYTE szSystemInfo[4096]; // 在程序执行完毕后,此处存储取得的系统特征码 UINT uSystemInfoLen = 0; UINT uErrorCode=0; IP_ADAPTER_INFO iai; ULONG uSize = 0; DWORD dwResult = GetAdaptersInfo( &iai, &uSize ); CString MacAddress; if( dwResult == ERROR_BUFFER_OVERFLOW ) { IP_ADAPTER_INFO* piai=( IP_ADAPTER_INFO* )HeapAlloc( GetProcessHeap( ), 0, uSize ); if( piai != NULL ) { dwResult = GetAdaptersInfo( piai, &uSize ); if( ERROR_SUCCESS == dwResult ) { IP_ADAPTER_INFO* piai2 = piai; CopyMemory(szSystemInfo+uSystemInfoLen,piai2->Address, piai2->AddressLength ); uSystemInfoLen += piai2->AddressLength; for(int i = 0; i < uSystemInfoLen; i++) { MacAddress.Format("%02X", szSystemInfo[i]); strMacAddress += MacAddress; } } else { uErrorCode = 0xF0000000U + dwResult; } assert( HeapFree( GetProcessHeap( ), 0, piai ) ); } else { return FALSE; } } else { uErrorCode = 0xE0000000U + dwResult; } if( uErrorCode != 0U ) { return FALSE; } return TRUE; }
三。获取硬盘的ID
CString GetDiskSeriesNumber() { CString str; DWORD Serial; DWORD Length; GetVolumeInformation(_T("C:\\"),NULL,MAX_PATH,&Serial,&Length,NULL,NULL,MAX_PATH); str.Format("%X",Serial); return str; }另外,要使以上函数能编译,必须#include <Iphlpapi.h>;
相关文章推荐
- VC++获取串口设备信息,CPU ID,硬盘ID,网卡MAC等机器硬件信息,用于加密
- 计算机硬件通用功能类:硬件信息控制器(主机名,cpu编号,网卡地址,MAC地址,主硬盘编号,ip地址,获取最大线程数,验证服务IP)
- 获取网卡、硬盘、CPU硬件信息 的类
- 获取CPU序列号,硬盘ID,网卡MAC地址
- 通过mssql数据库来获取主机的硬件相关信息,网卡,硬盘,主板等
- ASP获取客户端硬件信息(CPU、硬盘、主板、mac地址等)
- c#中获取cpu序列号,硬盘id,网卡mac地址
- 获取cpu序列号,硬盘ID,网卡MAC地址
- .net 获取硬件信息(CPU),(硬盘)。。。。
- ASP获取客户端硬件信息(CPU、硬盘、主板、mac地址等)
- C#应用:获取cpu序列号,硬盘ID,网卡MAC地址
- c#(asp.net)获取机器信息(IP)(MAC)(机器名)(CPU编号)(主硬盘编号)
- .net 获取硬件信息(CPU),(硬盘)。。。。
- 获取cpu序列号,硬盘ID,网卡MAC地址
- 超强获取计算机信息类(可获取cpu序列号,网卡地址,ip地址,硬盘id,登录系统用户,计算机名等等)
- Windows下获取硬件信息的编程(CPU、硬盘、内存和启动时间等)
- C#应用:获取cpu序列号,硬盘ID,网卡MAC地址
- 获取系统特征码(网卡MAC、硬盘序列号、CPU ID、BIOS编号)
- C#获取cpu序列号 硬盘ID 网卡硬地址以及操作注册表 .
- Winform获取机器信息IP、MAC、机器名、CPU编号、主硬盘编号