读取防火墙设置,以查看在Windows上使用c#的应用程序上允许哪些配置文件

时间:2016-07-18 17:31:14

标签: c# windows windows-firewall

我正在尝试以编程方式读取允许通过防火墙的应用程序允许哪些配置文件。我一直在使用以下c#代码:

string inputname  = "TestFirewallUpdateSettings";
    private void button1_Click(object sender, EventArgs e)
    {
        INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(
        Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));

        INetFwRule firewallRule = firewallPolicy.Rules.OfType<INetFwRule>().Where(x => x.Name == inputname).FirstOrDefault();

        richTextBox1.Text +=  firewallRule.Profiles.ToString();

    }

返回的值是返回的整数值,如下所示:

  

https://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.build.common.inetfwrule.profiles(v=vs.120).aspx

现在我想知道是否允许使用域名,公共或私人个人资料。我的返回值已经从4到2147483647到处都是,我认为它是以某种方式编码的,但没有解释我可以找到说明输出实际意味着什么。有人可以告诉我在哪里可以找到这些信息。

1 个答案:

答案 0 :(得分:2)

我想我通过几次试错找到了答案。

firewallRule.Profiles()的输出是一个int值。

This image is the GUI version of the firewall for allowed programs

所以输出值是:

  

域+私人+公共=输出值

如果启用了值,则数学运算如下:

  

1 + 2 + 4 = 7

所以它只是整数值的前3位。上面的图片是:

  

1 + 4 = 5

由于未启用专用网络,因此不会添加2。

如果找不到您要查找的防火墙,那么就是找到2147483647的值(max positive int32 value)