如何判断系统装过杀软?
解决方案 »
- 新手用ADOQuery出现问题,请高手帮帮忙
- indy TCPClient TCPServer 急在线等!分可以另加!
- 怎样使formular one单元格处理可编辑状态?我想用双击单元格的形式修改单元格的内容,该怎么办呢?
- 在DELPHI 7 中如何使用"TDBChart"?
- 怎样使windows2000自动升级补丁,而不用我手动去Windows Update? 100分! !!!
- IntraWeb使用TIWTemplateProcessorHTML的问题
- 欲编一个测试打字速度的小软件,求测每分钟打字速度的公式!(200分相送。)
- 怎样将statusbar上的panel也根据分辨率自动调整大小?
- 好的DELPHI资源网站(VCL,bmp.....)(*马上揭贴*)
- 小问题
- 求Delphi高手
- 如何在dbgrid上显示小数???
AntiVirusProduct // 杀毒软件的相关信息在这个表中
FirewallProduct // 防火墙软件的相关信息在这个表中
Set objComputer = CreateObject("Shell.LocalMachine")
Set oWMI = GetObject("winmgmts:\\" & strComputer & "\root\SecurityCenter")
Set colAV = oWMI.ExecQuery("Select * from AntiVirusProduct")
For Each objAntiVirusProduct In colAV
If IsNull(objAntiVirusProduct.instanceGuid) Then
strSubject = "Anti-virus is not running on " & objComputer.MachineName
strTextbody = "You will need to check on " & objComputer.MachineName
Call SmtpServer
Else
strCompany = objAntiVirusProduct.companyName
strAV = objAntiVirusProduct.displayName
strScanning = objAntiVirusProduct.onAccessScanningEnabled
strUptodate = objAntiVirusProduct.productUptoDate
这是VC的代码,来个高人把它转换成DELPHI语言啊
var
sr: OLEVAriant;
DE: VAriant;
begin
ScriptControl1.Language := 'VBScript';
sr := ScriptControl1.Eval('getobject("winmgmts:\\.\root\SecurityCenter")');
DE:=sr.ExecQuery('"Select * From antivirusProduct",48');我这里写到一半写不下去了,来个高人帮帮忙啊?
var
WMILocator: TSWbemLocator;
WMIServices: ISWbemServices;
WMIObjectSet: ISWbemObjectSet;
WMIObject: ISWbemObject;
WMIProperty: ISWbemProperty;
Enumerator: IEnumVariant;
EnumItems: OleVariant;
EnumItemCount: DWORD;
begin
// 创建 WMI 接口
WMILocator := TSWbemLocator.Create(Self);
if not Assigned(WMILocator) then Exit; try
// 连接 SecurityCenter 数据
WMIServices := WMILocator.ConnectServer('', 'root\SecurityCenter', '', '', '', '', 0, nil);
if not Assigned(WMIServices) then Exit; // 查询杀毒软件 AntiVirusProduct
WMIObjectSet := WMIServices.ExecQuery('SELECT * FROM AntiVirusProduct', 'WQL', wbemFlagReturnImmediately, nil);
if not Assigned(WMIObjectSet) then Exit; // 遍历读取结果
Enumerator := (WMIObjectSet._NewEnum) as IEnumVariant;
while (Enumerator.Next(1, EnumItems, EnumItemCount) = S_OK) do
begin
WMIObject := IUnknown(EnumItems) as ISWBemObject;
if not Assigned(WMIObject) then Continue; // GUID
WMIProperty := WMIObject.Properties_.Item('instanceGuid', 0);
OutputDebugString(PChar(string(WMIProperty.Get_Value))); // 显示名
WMIProperty := WMIObject.Properties_.Item('displayName', 0);
OutputDebugString(PChar(string(WMIProperty.Get_Value))); // 公司名
WMIProperty := WMIObject.Properties_.Item('companyName', 0);
OutputDebugString(PChar(string(WMIProperty.Get_Value))); // 版本号
WMIProperty := WMIObject.Properties_.Item('versionNumber', 0);
OutputDebugString(PChar(string(WMIProperty.Get_Value))); // 是否启用
WMIProperty := WMIObject.Properties_.Item('onAccessScanningEnabled', 0);
OutputDebugString(PChar(BoolToStr(Boolean(WMIProperty.Get_Value), True))); // 是否版本过期
WMIProperty := WMIObject.Properties_.Item('productUptoDate', 0);
OutputDebugString(PChar(BoolToStr(Boolean(WMIProperty.Get_Value), True)));
end;
finally
// 释放 WMI 接口
WMILocator.Free;
end;
end;
var
Wmi, Objs, Obj: OleVariant;
Enum: IEnumVariant;
C: Cardinal;
begin
Result:=False;
Wmi := CreateOleObject('WbemScripting.SWbemLocator');
Objs := Wmi.ConnectServer('.','root\SecurityCenter').ExecQuery('Select * From antivirusProduct');
Enum := IEnumVariant(IUnknown(Objs._NewEnum));
Enum.Reset;
Enum.Next(1, Obj, C);
if C=1 then
begin
Memo1.Lines.Add('杀软名称:'+Obj);
Result:=True;
end;end;自己搞定