簡體   English   中英

使用Delphi刪除Windows防火牆規則(異常)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM