使用 WindowsFirewallHelper c# 启用和禁用 Windows 防火墙规则

问题描述 投票:0回答:2

您好,我使用这里的 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
2个回答
3
投票

因为我无法通过库实现它:我对启用和禁用方法执行了以下操作:

我创建了一个 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");
    }

0
投票

你可以这样做: var myRule = FirewallManager.Instance.Rules.SingleOrDefault(r => r.Name == "规则名称"); myRule.IsEnable = false;

© www.soinside.com 2019 - 2024. All rights reserved.