用程序取硬盘序号,CPUID,MAC,这三种东东,如果取不来分别会是什么呢?
也就是说有的服务器没硬盘序号,那我取硬盘号的程序返回的一般会是空串还是一个固定的
(所有这种硬盘都这个号)号
CPUID呢??没安网卡取MAC取来的是空串么?

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var rebx,recx,redx:dword;
        str1:string;
    begin
    asm
      mov eax,0
      db 0fh,0a2h // cpuid
      mov rebx,ebx
      mov recx,ecx
      mov redx,edx
    end;
    str1:=chr(rebx mod $100)+chr((rebx div $100) mod $100)+chr((rebx div
    $10000) mod $100)+chr((rebx div $1000000) mod $100);
    str1:=str1+chr(redx mod $100)+chr((redx div $100) mod $100)+chr((redx div
    $10000) mod $100)+chr((redx div $1000000) mod $100);
    str1:=str1+chr(recx mod $100)+chr((recx div $100) mod $100)+chr((recx div
    $10000) mod $100)+chr((recx div $1000000) mod $100);edit1.text:=str1; 
    end;end.
    eax, ebx都是比较重要的寄存器,建议你用它们之前先将其入栈(最好将所有寄存器入
    栈比较保险),在用完后弹出栈。
      

  2.   

    加入进入栈后的语句
    asm
      push eax
      push ebx
      mov eax,0
      db 0fh,0a2h // cpuid
      mov rebx,ebx
      mov recx,ecx
      mov redx,edx
      pop ebx
      pop eax
    end;
      

  3.   

    CPUID呢??没安网卡取MAC取来的是空串么?
      

  4.   

    怀疑楼主有没有认真看别人的回贴。Stiven_PFan(爱卿儿) 回的不就是获取CPUID的代码吗?
      

  5.   

    CPU只有PIII才有序列号,其它CPU只能获得型号,各个同型的CPU取得的号是一样的