通过WMI获取CPUID和硬盘序列号

0014.jpg


以下代码在Delphi2010中编译通过。说明:此程序并非对所有硬盘有效,获取到的硬盘序列号可能为错,但是如果用来做硬件加密,则无需太在意。


uses ActiveX,ComObj;
Function GetWMIProperty(WMIType, WMIProperty:AnsiString):String;
var
  Wmi, Objs, Obj:OleVariant;
  Enum:IEnumVariant;
  C:Cardinal;
begin
  try
    Wmi:= CreateOleObject(AnsiString('WbemScripting.SWbemLocator'));
    Objs := Wmi.ConnectServer(AnsiString('.'),AnsiString('root\cimv2')).ExecQuery(AnsiString('Select * from Win32_'+WMIType));
    Enum:=IEnumVariant(IUnknown(Objs._NewEnum));
    Enum.Reset;
    Enum.Next(1,Obj,C);
    Obj:=Obj.Properties_.Item(WMIProperty,0).Value;
    if VarIsArray(Obj) then
    begin
        Result:=Obj[0];
    end
    else
    begin
        Result:=Obj;
    end;
  except
    Result:='error';
  end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
  showmessage(GetWMIProperty('Processor','ProcessorId')); //获取CPU序列号
  showmessage(GetWMIProperty('DiskDrive','SerialNumber')); //获取硬盘序列号
end;
标签:DelphiWindows

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://evelee.net/blog/?id=12