English 中文(简体)
是的。 NET 使所有防火墙规则都得到使用
原标题:Is there any .NET API to get all the firewall rules
  • 时间:2012-04-26 22:24:15
  •  标签:
  • c#

We have an application which add some rules to firewall. We need to retrieve the rules of firewall so that we can check whether the rule exists in the firewall. I am using C#.

问题回答

Search the Firewall rules using a rule Name and remove it:

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

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

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

你们可以从这一法典中得到一个想法。

INetFwPolicy2 fwPolicy2 = (INetFwPolicy2)Activator.CreateInstance(typeFWPolicy2);

List<INetFwRule> RuleList = new List<INetFwRule>();

foreach (INetFwRule rule in fwPolicy2.Rules)
{
  RuleList.Add(rule);
}

EDITED: INetFwPolicy2 is a .Net interface to manage Firewall rules msdn INetFwPolicy2 has a rules collection contains all ruls of this policy. You can query the Rules collection with Lambda, as follow:

INetFwPolicy2 fwPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
fwPolicy2.Rules.OfType<INetFwRule>.Select....

以及所有其他Lambda的延伸。





相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

热门标签