您好,我使用这里的 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”字段告诉它是否启用。
因为我无法通过库实现它:我对启用和禁用方法执行了以下操作:
我创建了一个 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");
}
你可以这样做: var myRule = FirewallManager.Instance.Rules.SingleOrDefault(r => r.Name == "规则名称"); myRule.IsEnable = false;