2016-05-14 230 views
0

我有一個按鈕,一旦點擊後,它會向防火牆添加新規則。但問題是它可以多次點擊並添加許多規則。如何檢查防火牆規則是否存在

如何檢查規則是否存在於防火牆中? (或者是能夠檢驗規則?)

這裏是我的代碼添加一條規則:

ProcessStartInfo run = new ProcessStartInfo(); 
run.FileName = "cmd.exe"; 
run.Verb = "runas"; 
run.Arguments = "/C netsh advfirewall firewall add rule name=\"Block IP Rule\" dir=in interface=any action=block remoteip=x.x.x.x"; 
run.WindowStyle = ProcessWindowStyle.Hidden; 
Process.Start(run); 
+1

嘗試刪除現有規則,然後重新添加: ),認爲簡單 – Oli

+0

感謝您的最簡單的想法,從來沒有想過的:D – newbieguy

回答

3
public static void RemoveFirewallRules(string RuleName = "BreakermindCom") 
{ 
    try 
    { 
     Type tNetFwPolicy2 = Type.GetTypeFromProgID("HNetCfg.FwPolicy2"); 
     INetFwPolicy2 fwPolicy2 = (INetFwPolicy2)Activator.CreateInstance(tNetFwPolicy2); 
     var currentProfiles = fwPolicy2.CurrentProfileTypes;    

     // Lista rules 
     List<INetFwRule> RuleList = new List<INetFwRule>(); 

     foreach (INetFwRule rule in fwPolicy2.Rules) 
     { 
      // Add rule to list 
      //RuleList.Add(rule); 
      // Console.WriteLine(rule.Name); 
      if (rule.Name.IndexOf(RuleName) != -1) 
      { 
       // Now add the rule 
       INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));      
       firewallPolicy.Rules.Remove(rule.Name); 
       Console.WriteLine(rule.Name + " has been deleted from Firewall Policy"); 
      } 
     } 
    } 
    catch (Exception r) 
    { 
     Console.WriteLine("Error delete rule from firewall"); 
    }} 

作品...:}

+0

http://stackoverflow.com/questions/15409790/adding-an-application-firewall-rule-to-both-private-and-public- networks-via-win7 – 2017-02-21 20:43:23

+0

謝謝,雖然我嘗試了Oli最簡單的想法,但在我的情況下更好。 – newbieguy

+0

https://github.com/fxstar/Chash/blob/master/C%23FirewallBanAllowIPfromMysql.cs這裏的示例與MySQL數據庫禁止和允許IP地址 – 2017-02-22 11:35:37

相關問題