我正在尝试使用 Delphi XE3 在 Windows 7 上管理防火墙规则(异常(exception))。我发现了一个非常有趣的代码,用于向 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;
顺便说一句,链接文档中几乎没有提供任何内容。我提供的链接仅供引用。
关于windows - 使用 Delphi 删除 Windows 防火墙规则(异常),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27323508/