使用 AI 输出的代码,读主板的 BIOS UUID。以下代码测试通过。
uses WinAPI.ActiveX, System.Win.ComObj;
function GetWMIPropertySafe(WMIType, WMIProperty: AnsiString): string;
var
Wmi, Objs, Obj: oleVariant;
Enum: IEnumVariant;
C: Cardinal;
begin
Result := '';
Wmi := CreateOleObject('WbemScripting.SWbemLocator');
Objs := Wmi.ConnectServer('.', 'root/cimv2').ExecQuery('Select * from Win32_' + WMIType);
Enum := IEnumVariant(IUnknown(Objs._NewEnum));
Enum.Reset;
//检查是否成功取到第一条记录
if Enum.Next(1, Obj, C) = S_OK then
begin
Obj := Obj.Properties_.Item(WMIProperty, 0).Value;
if not VarIsNull(Obj) then
begin
if VarIsArray(Obj) then
Result := Obj[0]
else if VarIsStr(Obj) or VarIsCustom(Obj) or VarIsFloat(Obj) or
VarIsNumeric(Obj) or VarIsOrdinal(Obj) then
Result := Obj;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Log('BIOS序列号: '+ GetWMIPropertySafe('BIOS','SerialNumber'));
Log('BIOS制造商: '+ GetWMIPropertySafe('BIOS','Manufacturer'));
Log('出厂日期: '+ GetWMIPropertySafe('Bios','ReleaseDate'));
Log('BIOS UUID: ' + GetWMIPropertySafe('ComputerSystemProduct', 'UUID'));
end;
procedure TForm1.Log(const S: string);
begin
Memo1.Lines.Add(S);
end;
备注:以上代码,网上也能搜到。但是,当我把搜到的代码发给 AI,AI 发现代码有个 BUG,就是没有判断是否读取成功。
329



被折叠的 条评论
为什么被折叠?



