[英]Remove Windows Firewall Rule (Exception) using Delphi
我正在嘗試使用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
提供的代碼中的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中幾乎沒有提供任何內容。 我提供的鏈接僅供參考。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.