📜  c# 获取或创建防火墙入站规则端口 - C# (1)

📅  最后修改于: 2023-12-03 14:59:43.351000             🧑  作者: Mango

C# 获取或创建防火墙入站规则端口

防火墙是计算机系统中一种用于保障计算机安全的软件或硬件设备,其主要职责是对网络流量进行控制。Windows操作系统中,防火墙默认会禁用所有的入站数据流量,需要用户手动添加入站规则来允许特定的数据流量进入计算机。

本篇文章将介绍如何使用C#语言获取或创建防火墙入站规则端口,以帮助程序员更方便地管理网络流量和保障计算机安全。

获取防火墙入站规则端口

获取防火墙入站规则端口可以使用Windows Firewall with Advanced Security API,这是Windows操作系统提供的一组API,可以方便地管理防火墙规则。

以下是获取防火墙入站规则端口的示例代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using NetFwTypeLib;

namespace FwTest
{
    class Program
    {
        static void Main(string[] args)
        {
            var firewallPolicy = Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2")) as INetFwPolicy2;
            var rules = firewallPolicy.Rules;

            foreach (INetFwRule2 rule in rules)
            {
                if (rule.Direction == NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN &&
                    rule.Enabled == true && rule.Protocol == (int)NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP)
                {
                    Console.WriteLine("Name: {0}, Protocol: {1}, LocalPorts: {2}",
                        rule.Name, rule.Protocol, rule.LocalPorts);
                }
            }
        }
    }
}

说明:

  • 使用.NET框架自带的NetFwTypeLib库可以方便地访问Windows防火墙计划
  • INetFwPolicy2和INetFwRule2接口定义了可用于访问防火墙规则的属性和方法。
  • 通过使用INetFwPolicy2.Rules将返回一个INetFwRules集合,其中包含防火墙规则的实例。
  • 在示例代码中,我们使用Direction、Enabled和Protocol属性来过滤出我们需要的入站规则,同时输出规则名称、协议和端口号等信息。
创建防火墙入站规则端口

如果需要创建自定义的入站规则,可以使用INetFwPolicy2.Rules.Add()方法,以下是创建入站规则的示例代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using NetFwTypeLib;

namespace FwTest
{
    class Program
    {
        static void Main(string[] args)
        {
            var firewallPolicy = Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2")) as INetFwPolicy2;
            var rule = Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule")) as INetFwRule;
            rule.Name = "Test Rule";
            rule.Protocol = (int)NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP;
            rule.LocalPorts = "3389";
            rule.Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN;
            rule.Enabled = true;

            firewallPolicy.Rules.Add(rule);
            Console.WriteLine("Rule added successfully ");
        }
    }
}

说明:

  • 创建一个INetFwRule对象,通过设置其属性来定义规则的名称、协议、端口、方向和启用状态等。
  • 使用firewallPolicy.Rules.Add()方法将规则添加到规则集合中,从而创建入站规则。

以上是通过C#代码实现获取或创建防火墙入站规则端口的方法,希望对程序员有所帮助。