Delphi 通过WMI读取系统信息问题

cate1019 2017-12-22 06:23:07
function GetWMIProperty(WMIType, WMIProperty: string): string;
var Wmi, Objs, Obj: OleVariant;
C: Cardinal;
i,Len:integer;
tempItem:IEnumVariant;
begin
Wmi:= CreateOleObject('WbemScripting.SWbemLocator');
Objs := Wmi.ConnectServer('.','root\cimv2').ExecQuery('Select * from Win32_' + WMIType);
tempItem:=IEnumVariant(IUnknown(Objs._NewEnum));
Result:='';
while (tempItem.Next(1, obj, c) = S_OK) do
begin
Obj := Obj.Properties_.Item(WMIProperty, 0).Value;
if not VarIsNull(obj) then
begin
Result :=Result +trim(Obj);
break;
end;
end;
end;


调用函数查询BIOS序列号
ShowMessage(GetWMIProperty('BIOS', 'SerialNumber'));

结果显示“RPC服务器不可用。",断点停留在
  Objs := Wmi.ConnectServer('.','root\cimv2').ExecQuery('Select * from Win32_' + WMIType);
这一行。
同样用微软的WMICodeCreator查询,就可以正常查询,是不是我哪里有错误?
...全文
406 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
bwsoft1 2017-12-25
  • 打赏
  • 举报
回复
CoInitialize(nil);先调用他

5,387

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧