如何用 DELPHI 获取 CPU 的序列号

如何用 DELPHI 获取 CPU 的序列号,第1张

示例代码如下:

procedure TForm1Button1Click(Sender: TObject);

  type

    TCPUID = array[14] of longint;

  function GetCPUID: TCPUID;

  asm

    PUSH    EBX

   PUSH    EDI

   MOV     EDI,EAX    

   MOV     EAX,1

   DW      $A20F      

   STOSD

   MOV     EAX,EBX

   STOSD

   MOV     EAX,ECX

   STOSD

   MOV     EAX,EDX

   STOSD

   POP     EDI

   POP     EBX

  end;

var

  aCpuId: TCpuID;

begin

  aCpuId := GetCPUID;

  ShowMessage('CPU 序列号是: ' + IntToHex(aCpuId[4],8) + IntToHex(aCpuId[1],8));

end;

代码运行截图:

与实际的对比:

获取CPU

序列号

要使用

汇编指令

比较麻烦

static

DWORD

g_eax;

//

存储返回的eax

static

DWORD

g_ebx;

//

存储返回的ebx

static

DWORD

g_ecx;

//

存储返回的ecx

static

DWORD

g_edx;

//

存储返回的edx

void

Executecpuid(DWORD

veax)

{

asm("cpuid"

:"=a"(g_eax),

"=b"(g_ebx),

"=c"(g_ecx),

"=d"(g_edx)

:"a"(g_eax));

}

int

isSupport;

void

GetSerialNumber(WORD

nibble[6])

{

Executecpuid(1);

//

执行cpuid,参数为

eax

=

1

isSupport

=

g_edx

&

(1<<18);

//

edx是否为1代表CPU是否存在序列号

if

(FALSE

==

isSupport)

//

不支持,返回false

{

return

;

}

Executecpuid(3);

//

执行cpuid,参数为

eax

=

3

memcpy(&nibble[4],

&g_eax,

4);

//

eax为最高位的两个WORD

memcpy(&nibble[0],

&g_ecx,

8);

//

ecx

edx为低位的4个WORD

STM32每一个芯片内部都有一个唯一的96位的ID号,可以通关过以下方式进行读取:

由于唯一ID是一个96位的数据,所以你要创建3个32位变量用于存储ID号

static u32 CpuID[3];

接着执行读取函:

void GetLockCode(void)

{

//获取CPU唯一ID

CpuID[0]=(vu32)(0x1ffff7e8);

CpuID[1]=(vu32)(0x1ffff7ec);

CpuID[2]=(vu32)(0x1ffff7f0);

}

数就可以了。

使用ManagementClass("Win32_Processor")获取cpuid失败,代码如下:

ManagementClass mc = new ManagementClass("Win32_Processor");

ManagementObjectCollection moc = mcGetInstances();

foreach (ManagementObject mo in moc)

{

_S_RegsionGUID = moProperties["ProcessorId"]ValueToString();

break;

}

当获取ProcessorId时失败,提示该值为Null,对于有些计算机成功对于有些计算机失败。 查看了一些ManagementClass 相关资料:[NET 框架中的WMI命名空间][WMI介绍及简单应用]解决办法如下:

1、判断出问题出在WMI上;

2、下载WMI管理工具WMIToolsexe,下载地址:>

以上就是关于如何用 DELPHI 获取 CPU 的序列号全部的内容,包括:如何用 DELPHI 获取 CPU 的序列号、VB6如何获取电脑的CPU序号、如何获得stm32 cpu的唯一ID等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9317227.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存