首页 > 解决方案 > 使用 WindowsFirewallHelper c# 启用和禁用 Windows 防火墙规则

问题描述

嗨,我从这里使用 WindowsFirewallHelper Lib:WindowsFirewallHelper Git

首先我创建一个规则

 IRule rule = FirewallManager.Instance.CreateApplicationRule(
            FirewallManager.Instance.GetProfile().Type,
            ruleName,
            FirewallAction.Block,
            @"Path\App.exe"
            );
            rule.Direction = FirewallDirection.Outbound;
            FirewallManager.Instance.Rules.Add(rule);

之后我想创建一个启用或禁用此规则的连接和断开方法,但我在库中找不到任何方法,有人知道该怎么做吗?只有“rule.isEnabled”字段告诉它是否启用。

标签: c#windows-firewall

解决方案


由于我无法通过 Lib 实现它:我对启用和禁用方法做了以下操作:

我创建了一个 CMD 方法

       private static void RunCMD(string argument)
    {
        Process process = new Process();
        ProcessStartInfo startInfo = new ProcessStartInfo();
        startInfo.WindowStyle = ProcessWindowStyle.Hidden;
        startInfo.FileName = @"C:\Windows\System32\cmd.exe";       
        startInfo.Arguments = argument;
        process.StartInfo = startInfo;
        process.Start();
    }

然后我添加了其他两种方法:

   public static void Disconnect()
    {

        RunCMD(@"/C netsh advfirewall firewall set rule name=""RULENAME"" new enable=no");

    }


    public static void Connect()
    {
        RunCMD(@"/C netsh advfirewall firewall set rule name=""RULENAME"" new enable=yes");
    }

推荐阅读