vc获取CPU ID

最近要用CPU序列号,MAC地址和硬盘ID来为软件加密,在网上找了下高手写的,有很多版本,但很多不能正常运行或者达不到预期效果,这里整理下自

己采用并测试通过的

CPU序列号并不是全球唯一的,以Intel为例,其不同型号的CPU序列号肯定不同,但不保证同型号的CPU序列号也各不相同,但据说P3后都是全球唯一的

CString CGetCpuIDDlg::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("%s-",vendor_id);

  __asm{

    mov eax,01h//eax=1:取CPU序列号

    xor edx,edx

    cpuid

    mov s1,edx

    mov s2,eax

  }

  CPUID1.Format("%08X%08X",s1,s2);

  __asm{

    mov eax,03h

    xor ecx,ecx

    xor edx,edx

    cpuid

    mov s1,edx

    mov s2,ecx

  }

  CPUID2.Format("%08X%08X",s1,s2);

  break;

case '2':

  {

    __asm{

      mov ecx,119h

      rdmsr

      or eax,00200000h

      wrmsr

    }

  }

  AfxMessageBox("CPU id is disabled.");

  break;

}

MyCpuID = CPUID1+CPUID2;

CPUID = MyCpuID;

return CPUID;

}

 

感谢http://blog.163.com/baansss0624@126/blog/static/55578661200972603848259/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值