using System.Diagnostics;
public class FirewallHelper
{
// 创建阻止规则
public static void BlockIPPort(string ip, int port)
{
string ruleName = $"Block_{ip}_Port_{port}";
string command = $"advfirewall firewall add rule name=\"{ruleName}\" " +
$"dir=in action=block protocol=TCP " +
$"remoteip={ip} localport={port}";
ExecuteNetshCommand(command);
}
// 删除规则(可选)
public static void RemoveBlockRule(string ip, int port)
{
string ruleName = $"Block_{ip}_Port_{port}";
string command = $"advfirewall firewall delete rule name=\"{ruleName}\"";
ExecuteNetshCommand(command);
}
private static void ExecuteNetshCommand(string command)
{
ProcessStartInfo psi = new ProcessStartInfo
{
FileName = "netsh",
Arguments = command,
Verb = "runas", // 请求管理员权限
WindowStyle = ProcessWindowStyle.Hidden,
UseShellExecute = true
};
try
{
Process.Start(psi)?.WaitForExit();
}
catch (Exception ex)
{
Console.WriteLine($"执行命令失败: {ex.Message}");
}
}
}
// 使用示例
FirewallHelper.BlockIPPort("194.16.5.13", 3389);