斑竹用VC编写的DLL,可以获得硬盘的型号、序列号以及计算机 ID,带Delphi的源程序,在Win2K下通过,但是没有在Win9X下试过,感兴趣的朋友可以在Win9X 下试一下,或者编写一个VB的范例。
函数以及定义:
function ReadPhysicalDrive(driveID:integer;buffer:Pointer;bufLen:integer):integer; stdcall; external 'DiskID.dll' name 'ReadPhysicalDriveInNT';
获得WinNT下的硬盘型号以及序列号。参数driveID为硬盘的位置,IDE1上的主盘为0,类推到IDE2上的从盘的driveID为3。
function ReadPhysicalDrive9X(driveID:integer;buffer:Pointer;bufLen:integer):integer; stdcall; external 'DiskID.dll' name 'ReadDrivePortsInWin9X'; 
获得Win9X下的硬盘型号以及序列号。参数同上
function getHardDriveComputerID:int64; stdcall; external 'DiskID.dll' name 'getHardDriveComputerID';
获得计算机的ID :http://www.applevb.com/lib/diskio.rar

解决方案 »

  1.   

    不必用window api,下面是测试cpu的信息,硬盘的信息同样的道理
    Private Sub Command1_Click()WQL = "Select * From Win32_Processor"
    Set objinst = GetObject("winmgmts:").ExecQuery(WQL)    For Each obj In objinst
            List1.Clear
            List1.AddItem "以下是CPU的各类信息"
            List1.AddItem "Name:" & obj.Name
            List1.AddItem "DeviceID:" & obj.DeviceID
            List1.AddItem "Description:" & obj.Description
            List1.AddItem "Level:" & obj.Level
            List1.AddItem "Version:" & obj.version
            List1.AddItem "Architecture:" & obj.Architecture
            List1.AddItem "SystemName:" & obj.SystemName
            List1.AddItem "CpuStatus :" & obj.CpuStatus
            List1.AddItem "CreationClassName:" & obj.CreationClassName
        Next
    End Sub
    你可以去http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_processor.asp
    得到你所希望得到的所有硬件信息
    给分吧
      

  2.   

    winmgmts库不是所有的系统都安装了的,如果可以使用winmgmts库的话:
    http://www.applevb.com/sourcecode/wmi.rar
    这个是一个利用微软提供的WMI实现获取系统信息的代码集合,包括获得系统信息、主板信息、BIOS信息等10个单独的源程序