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);