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

read firewall settings to see which profiles are allowed on applications with c# on windows

我正在尝试以编程方式读取允许应用程序通过防火墙的配置文件。我一直在使用以下 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();

    }

值 returned 是一个整数值 returned,如下所示:

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

现在我想知道是否允许域、public 或私人配置文件。我的 return 值从 4 到 2147483647 无处不在,我假设它以某种方式编码,但我找不到说明输出实际含义的解释。谁能告诉我在哪里可以找到这些信息。

我想我通过反复试验找到了答案。

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

所以输出值为:

Domain + Private + public = output value

如果启用了这些值,则数学看起来像:

1 + 2 + 4 = 7

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

1 + 4 = 5

由于Private network没有开启,所以2不会加入

如果找不到您要查找的防火墙,那么就是在找到 2147483647 值时(最大正 int32 值)