硬盘
uses
    SysUtils, Windows;function Get_DiskSerialNo(DriveID : char) : string;
var
   VolumeSerialNumber : DWORD;
   MaximumComponentLength : DWORD;
   FileSystemFlags : DWORD;
begin
     result := '';
     try
        GetVolumeInformation(PChar(DriveID + ':\'),
                             nil, 0, @VolumeSerialNumber,
                             MaximumComponentLength, FileSystemFlags,
                             nil, 0);
        result := IntToHex(HiWord(VolumeSerialNumber), 4) +
                  '-' + IntToHex(LoWord(VolumeSerialNumber), 4);
     except
     end;
end;

解决方案 »

  1.   

    cpu
    type*TCPUID*= array[1..4] of Longint;*TVendor*= array [0..11] of char;function GetCPUID : TCPUID; assembler; register;asm
      PUSH    EBX         {Save affected register}
      PUSH    EDI
      MOV     EDI,EAX     {@Result}
      MOV     EAX,1
      POP     EBX
    end;
      

  2.   

    另外对于主板,只需要读取它的Bios信息就行了
    你试一试下面的,我是凭记忆写的,手边没有delphi
    procedure TForm1.Button1Click(Sender:TObject);
    begin
      memo1.lines.add('MainBoardBiosSerialNo':'+^I+String(Pchar(ptr($fec71)));
    end;
      

  3.   

    以上读取CPU和主板的代码都不能完成,地址错误!!!
      

  4.   

    获得Intel CPU的信息
    用法:
    GetCpuFeatures(memo1.Lines);
    支持的特性
    CPU Family 6
    CPU Model 7
    CPU Stepping 3
    On-Chip FPU
    VirtualMode Extensions
    Debugging Extensions
    Page Size Extensions
    Time Stamp Counter
    Model Specific Registers
    Physical Address Extensions
    Machine Check Extensions
    CMPXCHG8B Instruction
    Fast System Call
    Memory Type Range Registers
    Page Global Enable
    Machine Check Architecture
    Conditional Move Instruction
    Page Attribute Table
    32 Bit Page Size Extension
    Intel MMX Technology
    Fast Floating Point Save and Restore
    Streaming SIMD Extensionsunit Unit2;
    interface
    uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms;type
      TForm2 = class(TForm)
      private
      { Private declarations }
      public
      { Public declarations }   end;  TCpuFeature = (cpuNoCPUID,cpuNonIntel,cpuOnChipFPU,
      cpuVirtualModeExtensions,cpuDebuggingExtensions,
      cpuPageSizeExtensions,cpuTimeStampCounter,
      cpuModelSpecificRegisters,cpuPhysicalAddressExtensions,
      cpuMachineCheckExtensions,cpuCMPXCHG8B,cpuOnChipAPIC,
      cpuFastSystemCall,cpuMemoryRangeRegisters,cpuPageGlobalEnable,
      cpuMachineCheckArchitecture,cpuConditionalMoveInstruction,
      cpuPageAttributeTable,cpu32bitPageSzExtension,
      cpuProcessorSerialNum,cpuMMXTechnology,cpuFastFloatingPoint,
      cpuSIMDExtensions);  TCpuFeatures = set of TCpuFeature;  function GetCpuFeatures(FeatureList : TStrings = nil) : TCpuFeatures;var Form2: TForm2;
    implementation
    {$R *.DFM}function GetCpuFeatures(FeatureList : TStrings = nil) : TCpuFeatures;
    const
      FPU_FLAG = $0001;
      VME_FLAG = $0002;
      DE_FLAG = $0004;
      PSE_FLAG = $0008;
      TSC_FLAG = $0010;
      MSR_FLAG = $0020;
      PAE_FLAG = $0040;
      MCE_FLAG = $0080;
      CX8_FLAG = $0100;
      APIC_FLAG = $0200;
      SEP_FLAG = $0800;
      MTRR_FLAG = $1000;
      PGE_FLAG = $2000;
      MCA_FLAG = $4000;
      CMOV_FLAG = $8000;
      PAT_FLAG = $10000;
      PSE36_FLAG = $20000;
      PSNUM_FLAG = $40000;
      MMX_FLAG = $800000;
      FXSR_FLAG = $1000000;
      SIMD_FLAG = $2000000;var IsIntel : boolean;
      VendorID : array [0..12] of char;
      IntelID : array [0..12] of char;
      FeaturesFlag,CpuSignature : DWord;
      Temp : DWord;
      RetVar : TCpuFeatures;
      CpuType : byte;  procedure CheckFeature(FeatureFlag : DWord;
      const Item : string;
      cpuFeatureType : TCpuFeature);
      begin
      if FeaturesFlag and FeatureFlag = FeatureFlag then begin
      if FeatureList <> nil then FeatureList.Add(Item);
      include(RetVar,cpuFeatureType);
      end;
      end;begin
      RetVar := [];
      if FeatureList <> nil then FeatureList.Clear;
      IsIntel := false;
      IntelId := 'GenuineIntel'#0;
      VendorID := '------------'#0;  try
      asm  //确认是否支持Intel CPUID调用
      push ebx
      push esi
      push edi
      mov eax,0 // Set up for CPUID instruction
      db 00fh // CPUID - Get Vendor and check INTEL
      db 0a2h
      mov dword ptr VendorId,ebx
      mov dword ptr VendorId[+4],edx
      mov dword ptr VendorId[+8],ecx
      cmp dword ptr IntelId,ebx //检查是否是Intel CPU
      jne @@EndCPUID
      cmp dword ptr IntelId[+4],edx
      jne @@EndCPUID
      cmp dword ptr IntelId[+8],ecx
      jne @@EndCPUID // 非Intel CPU  mov byte ptr IsIntel,1 // Set IsIntel to true
      cmp eax,1 // Ensure 1 is valid input for CPUID
      jl @@EndCPUID // Else jump to end  mov eax,1
      db 00fh // CPUID - Get features,family etc.
      db 0a2h
      mov CpuSignature,eax
      mov FeaturesFlag,edx
      shr eax,8 // Isolate family
      and eax,0fh
      mov byte ptr CpuType,al // Set cputype with family  @@EndCPUID :  pop edi // 恢复寄存器
      pop esi
      pop ebx
      end;  // 检查特性掩码
      if IsIntel then begin
      if FeatureList <> nil then begin
      FeatureList.Add('CPU Family ' + IntToStr(CpuType));
      Temp := (CpuSignature shr 4) and $0f;
      FeatureList.Add('CPU Model ' + IntToStr(Temp));
      Temp := CpuSignature and $0f;
      FeatureList.Add('CPU Stepping ' + IntToStr(Temp));
      end;  CheckFeature(FPU_FLAG,'On-Chip FPU',cpuOnChipFPU);
      CheckFeature(VME_FLAG,
      'VirtualMode Extensions',cpuVirtualModeExtensions);
      CheckFeature(DE_FLAG,'Debugging Extensions',cpuDebuggingExtensions);
      CheckFeature(PSE_FLAG,'Page Size Extensions',cpuPageSizeExtensions);
      CheckFeature(TSC_FLAG,'Time Stamp Counter',cpuTimeStampCounter);
      CheckFeature(MSR_FLAG,
      'Model Specific Registers',cpuModelSpecificRegisters);
      CheckFeature(PAE_FLAG,
      'Physical Address Extensions',
      cpuPhysicalAddressExtensions);
      CheckFeature(MCE_FLAG,
      'Machine Check Extensions',cpuMachineCheckExtensions);
      CheckFeature(CX8_FLAG,'CMPXCHG8B Instruction',cpuCMPXCHG8B);
      CheckFeature(APIC_FLAG,'On Chip APIC',cpuOnChipAPIC);
      CheckFeature(SEP_FLAG,'Fast System Call',cpuFastSystemCall);
      CheckFeature(MTRR_FLAG,
      'Memory Type Range Registers',cpuMemoryRangeRegisters);
      CheckFeature(PGE_FLAG,'Page Global Enable',cpuPageGlobalEnable);
      CheckFeature(MCA_FLAG,
      'Machine Check Architecture',cpuMachineCheckArchitecture);
      CheckFeature(CMOV_FLAG,
      'Conditional Move Instruction',
      cpuConditionalMoveInstruction);
      CheckFeature(PAT_FLAG,'Page Attribute Table',cpuPageAttributeTable);
      CheckFeature(PSE36_FLAG,
      '32 Bit Page Size Extension',cpu32BitPageSzExtension);
      CheckFeature(PSNUM_FLAG,
      'Processor Serial Number',cpuProcessorSerialNum);
      CheckFeature(MMX_FLAG,'Intel MMX Technology',cpuMMXTechnology);
      CheckFeature(FXSR_FLAG,
      'Fast Floating Point Save and Restore',
      cpuFastFloatingPoint);
      CheckFeature(SIMD_FLAG,'Streaming SIMD Extensions',cpuSIMDExtensions);
      end
      else begin
      if FeatureList <> nil then
      FeatureList.Add('Non-Intel or >486 Chip - Features Unknown');
      include(RetVar,cpuNonIntel);
      end;
      except
      if FeatureList <> nil then FeatureList.Add('No CPUID Support');
      include(RetVar,cpuNoCPUID);
      end;  Result := RetVar;
    end;end.
      

  5.   

    获得Intel CPU的信息
    用法:
    GetCpuFeatures(memo1.Lines);
    支持的特性
    CPU Family 6
    CPU Model 7
    CPU Stepping 3
    On-Chip FPU
    VirtualMode Extensions
    Debugging Extensions
    Page Size Extensions
    Time Stamp Counter
    Model Specific Registers
    Physical Address Extensions
    Machine Check Extensions
    CMPXCHG8B Instruction
    Fast System Call
    Memory Type Range Registers
    Page Global Enable
    Machine Check Architecture
    Conditional Move Instruction
    Page Attribute Table
    32 Bit Page Size Extension
    Intel MMX Technology
    Fast Floating Point Save and Restore
    Streaming SIMD Extensionsunit Unit2;
    interface
    uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms;type
      TForm2 = class(TForm)
      private
      { Private declarations }
      public
      { Public declarations }   end;  TCpuFeature = (cpuNoCPUID,cpuNonIntel,cpuOnChipFPU,
      cpuVirtualModeExtensions,cpuDebuggingExtensions,
      cpuPageSizeExtensions,cpuTimeStampCounter,
      cpuModelSpecificRegisters,cpuPhysicalAddressExtensions,
      cpuMachineCheckExtensions,cpuCMPXCHG8B,cpuOnChipAPIC,
      cpuFastSystemCall,cpuMemoryRangeRegisters,cpuPageGlobalEnable,
      cpuMachineCheckArchitecture,cpuConditionalMoveInstruction,
      cpuPageAttributeTable,cpu32bitPageSzExtension,
      cpuProcessorSerialNum,cpuMMXTechnology,cpuFastFloatingPoint,
      cpuSIMDExtensions);  TCpuFeatures = set of TCpuFeature;  function GetCpuFeatures(FeatureList : TStrings = nil) : TCpuFeatures;var Form2: TForm2;
    implementation
    {$R *.DFM}function GetCpuFeatures(FeatureList : TStrings = nil) : TCpuFeatures;
    const
      FPU_FLAG = $0001;
      VME_FLAG = $0002;
      DE_FLAG = $0004;
      PSE_FLAG = $0008;
      TSC_FLAG = $0010;
      MSR_FLAG = $0020;
      PAE_FLAG = $0040;
      MCE_FLAG = $0080;
      CX8_FLAG = $0100;
      APIC_FLAG = $0200;
      SEP_FLAG = $0800;
      MTRR_FLAG = $1000;
      PGE_FLAG = $2000;
      MCA_FLAG = $4000;
      CMOV_FLAG = $8000;
      PAT_FLAG = $10000;
      PSE36_FLAG = $20000;
      PSNUM_FLAG = $40000;
      MMX_FLAG = $800000;
      FXSR_FLAG = $1000000;
      SIMD_FLAG = $2000000;var IsIntel : boolean;
      VendorID : array [0..12] of char;
      IntelID : array [0..12] of char;
      FeaturesFlag,CpuSignature : DWord;
      Temp : DWord;
      RetVar : TCpuFeatures;
      CpuType : byte;  procedure CheckFeature(FeatureFlag : DWord;
      const Item : string;
      cpuFeatureType : TCpuFeature);
      begin
      if FeaturesFlag and FeatureFlag = FeatureFlag then begin
      if FeatureList <> nil then FeatureList.Add(Item);
      include(RetVar,cpuFeatureType);
      end;
      end;begin
      RetVar := [];
      if FeatureList <> nil then FeatureList.Clear;
      IsIntel := false;
      IntelId := 'GenuineIntel'#0;
      VendorID := '------------'#0;  try
      asm  //确认是否支持Intel CPUID调用
      push ebx
      push esi
      push edi
      mov eax,0 // Set up for CPUID instruction
      db 00fh // CPUID - Get Vendor and check INTEL
      db 0a2h
      mov dword ptr VendorId,ebx
      mov dword ptr VendorId[+4],edx
      mov dword ptr VendorId[+8],ecx
      cmp dword ptr IntelId,ebx //检查是否是Intel CPU
      jne @@EndCPUID
      cmp dword ptr IntelId[+4],edx
      jne @@EndCPUID
      cmp dword ptr IntelId[+8],ecx
      jne @@EndCPUID // 非Intel CPU  mov byte ptr IsIntel,1 // Set IsIntel to true
      cmp eax,1 // Ensure 1 is valid input for CPUID
      jl @@EndCPUID // Else jump to end  mov eax,1
      db 00fh // CPUID - Get features,family etc.
      db 0a2h
      mov CpuSignature,eax
      mov FeaturesFlag,edx
      shr eax,8 // Isolate family
      and eax,0fh
      mov byte ptr CpuType,al // Set cputype with family  @@EndCPUID :  pop edi // 恢复寄存器
      pop esi
      pop ebx
      end;  // 检查特性掩码
      if IsIntel then begin
      if FeatureList <> nil then begin
      FeatureList.Add('CPU Family ' + IntToStr(CpuType));
      Temp := (CpuSignature shr 4) and $0f;
      FeatureList.Add('CPU Model ' + IntToStr(Temp));
      Temp := CpuSignature and $0f;
      FeatureList.Add('CPU Stepping ' + IntToStr(Temp));
      end;  CheckFeature(FPU_FLAG,'On-Chip FPU',cpuOnChipFPU);
      CheckFeature(VME_FLAG,
      'VirtualMode Extensions',cpuVirtualModeExtensions);
      CheckFeature(DE_FLAG,'Debugging Extensions',cpuDebuggingExtensions);
      CheckFeature(PSE_FLAG,'Page Size Extensions',cpuPageSizeExtensions);
      CheckFeature(TSC_FLAG,'Time Stamp Counter',cpuTimeStampCounter);
      CheckFeature(MSR_FLAG,
      'Model Specific Registers',cpuModelSpecificRegisters);
      CheckFeature(PAE_FLAG,
      'Physical Address Extensions',
      cpuPhysicalAddressExtensions);
      CheckFeature(MCE_FLAG,
      'Machine Check Extensions',cpuMachineCheckExtensions);
      CheckFeature(CX8_FLAG,'CMPXCHG8B Instruction',cpuCMPXCHG8B);
      CheckFeature(APIC_FLAG,'On Chip APIC',cpuOnChipAPIC);
      CheckFeature(SEP_FLAG,'Fast System Call',cpuFastSystemCall);
      CheckFeature(MTRR_FLAG,
      'Memory Type Range Registers',cpuMemoryRangeRegisters);
      CheckFeature(PGE_FLAG,'Page Global Enable',cpuPageGlobalEnable);
      CheckFeature(MCA_FLAG,
      'Machine Check Architecture',cpuMachineCheckArchitecture);
      CheckFeature(CMOV_FLAG,
      'Conditional Move Instruction',
      cpuConditionalMoveInstruction);
      CheckFeature(PAT_FLAG,'Page Attribute Table',cpuPageAttributeTable);
      CheckFeature(PSE36_FLAG,
      '32 Bit Page Size Extension',cpu32BitPageSzExtension);
      CheckFeature(PSNUM_FLAG,
      'Processor Serial Number',cpuProcessorSerialNum);
      CheckFeature(MMX_FLAG,'Intel MMX Technology',cpuMMXTechnology);
      CheckFeature(FXSR_FLAG,
      'Fast Floating Point Save and Restore',
      cpuFastFloatingPoint);
      CheckFeature(SIMD_FLAG,'Streaming SIMD Extensions',cpuSIMDExtensions);
      end
      else begin
      if FeatureList <> nil then
      FeatureList.Add('Non-Intel or >486 Chip - Features Unknown');
      include(RetVar,cpuNonIntel);
      end;
      except
      if FeatureList <> nil then FeatureList.Add('No CPUID Support');
      include(RetVar,cpuNoCPUID);
      end;  Result := RetVar;
    end;end.