delphi 如何操作windows 防火墙并添加自己的规则

需要 import Component-> NetFwTypeLib 引入到项目中,才可以控制windows防火墙; 

uses
    NetFwTypeLib_TLB,System.IniFiles,
    Winapi.ShellAPI
procedure AddFireWall2;
var
  firewallPolicy: INetFwPolicy2;
  firewallRule: INetFwRule;
  fwRules: INetFwRules;
  fwRule: oleVariant;
  fwRuleEnumerator: IEnumVARIANT;
  fetch:LongWord;
  name,AllowIp:string;
  Profiles:INetFwProfile;
  i:Integer;
  CurPath :string;
  ini:TIniFile;
begin
  ini:=TIniFile.Create(GetCurrentDir + '\config.ini');
  try
    AllowIp:=ini.ReadString('FireWall','AllowIP','192.168.0.0/16');
    CoInitialize(nil);
    CurPath := ExtractFileDir(ExtractFilePath(GetCurrentDir));

    firewallPolicy := CreateOleObject('HNetCfg.FwPolicy2') as INetFwPolicy2;
     //如果没有启动防火墙 启动防火墙。
    firewallPolicy.FirewallEnabled[NET_FW_PROFILE2_PRIVATE]:=true;
    firewallPolicy.FirewallEnabled[NET_FW_PROFILE2_PUBLIC]:=true;

    firewallPolicy.DefaultOutboundAction[NET_FW_PROFILE2_PRIVATE]:=NET_FW_ACTION_BLOCK;


    firewallRule := CreateOleObject('HNetCfg.FWRule') as INetFwRule;
    firewallRule.Name := '我防火墙规则';
    firewallRule.Description := '专网';
    firewallRule.Action := NET_FW_ACTION_ALLOW;
    firewallRule.Direction := NET_FW_RULE_DIR_OUT;
    firewallRule.Enabled := True;
    firewallRule.InterfaceTypes := 'All';
    firewallRule.Protocol := NET_FW_IP_PROTOCOL_ANY;
    firewallRule.Grouping:='XXXX.Co';
    firewallRule.RemoteAddresses:= AllowIp;
    firewallPolicy.Rules.Add(firewallRule);

    CoUnInitialize;
  finally
    ini.Free;
  end;


end;

 

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值