使用Delphi删除Windows防火墙规则(例外)
发布时间:2020-12-15 09:28:44 所属栏目:大数据 来源:网络整理
导读:我正在尝试使用Delphi XE3在 Windows 7上管理防火墙规则(例外).我发现了一个非常有趣的代码,用于向Windows防火墙添加规则,但没有删除(删除)它.拜托,有人可以帮忙吗? 以下是添加规则的代码: procedure AddExceptToFirewall(const Caption,AppPath: String);
我正在尝试使用Delphi XE3在
Windows 7上管理防火墙规则(例外).我发现了一个非常有趣的代码,用于向Windows防火墙添加规则,但没有删除(删除)它.拜托,有人可以帮忙吗?
以下是添加规则的代码: procedure AddExceptToFirewall(const Caption,AppPath: String); // Uses ComObj const NET_FW_PROFILE2_PRIVATE = 2; NET_FW_PROFILE2_PUBLIC = 4; NET_FW_IP_PROTOCOL_TCP = 6; NET_FW_ACTION_ALLOW = 1; var Profile: Integer; Policy2: OleVariant; RObject: OleVariant; NewRule: OleVariant; begin Profile := NET_FW_PROFILE2_PRIVATE OR NET_FW_PROFILE2_PUBLIC; Policy2 := CreateOleObject('HNetCfg.FwPolicy2'); RObject := Policy2.Rules; NewRule := CreateOleObject('HNetCfg.FWRule'); NewRule.Name := Caption; NewRule.Description := Caption; NewRule.ApplicationName := AppPath; NewRule.Protocol := NET_FW_IP_PROTOCOL_TCP; NewRule.Enabled := True; NewRule.Grouping := ''; NewRule.Profiles := Profile; NewRule.Action := NET_FW_ACTION_ALLOW; RObject.Add(NewRule); end; 谢谢! 解决方法
您只需调用
INetFWRules.Remove,传入规则名称即可.该名称与您在创建时使用的名称相同(上面提供的代码中的RObject.Name).
// Note: Normal COM exception handling should be used. Omitted for clarity. procedure RemoveExceptFromFirewall(const RuleName: String); const NET_FW_PROFILE2_PRIVATE = 2; NET_FW_PROFILE2_PUBLIC = 4; var Profile: Integer; Policy2: OleVariant; RObject: OleVariant; begin Profile := NET_FW_PROFILE2_PRIVATE OR NET_FW_PROFILE2_PUBLIC; Policy2 := CreateOleObject('HNetCfg.FwPolicy2'); RObject := Policy2.Rules; RObject.Remove(RuleName); end; BTW链接文档中几乎没有提供任何内容.我提供的链接仅供参考. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |