开发软件有些时候监听端口和外部通信 需要通过防火墙的端口访问网络,常规情况下使用的端口都是默认设置关闭的,每次部署都需要手动添加就比较繁琐
C# 操作DOS添加端口防火墙名单 - Yuan天空
下面是C#调用dos命令代码打开端口防火墙的代码例子 可以实现一键自动添加端口防火墙白名单 代码如下:
////// 防火墙 /// public static class FirewallPort { /// /// 端口协议类型 /// public enum Protocol { TCP, UDP } public enum ProtocolMode { /// /// 入站 /// IN, /// /// 出站 /// OUT } [MTAThread] public static string Open(string rulename, int port, Protocol protocol, ProtocolMode protocolmode) { string cmd= $" netsh advfirewall firewall add rule name={rulename} dir={protocolmode.ToString()} action=allow protocol={protocol.ToString()} localport={port}"; return Command(cmd); } public static string Delete(string rulename,int port, Protocol protocol, ProtocolMode protocolmode) { string cmd = $" netsh advfirewall firewall delete rule name={rulename} protocol={protocol.ToString()} localport={port}"; return Command(cmd); } private static string Command(string cmd) { System.Diagnostics.Process pro = new System.Diagnostics.Process();//实例化进程 pro.StartInfo.FileName = "cmd.exe";//设置要运行的程序文件 pro.StartInfo.UseShellExecute = false;//是否使用操作系统shell程序启动 pro.StartInfo.RedirectStandardInput = true;//是否接受来自应用程序的调用 pro.StartInfo.RedirectStandardOutput = true;//是否接受来自应用程序的输出信息 pro.StartInfo.RedirectStandardError = true;//是否接受重定向错误信息 pro.StartInfo.CreateNoWindow = true;//不显示窗口信息 pro.Start(); //向cmd窗口发送输入信息 pro.StandardInput.WriteLine(cmd + " &exit"); pro.StandardInput.AutoFlush = true; //获取窗口输出的信息 string info = pro.StandardOutput.ReadToEnd(); pro.WaitForExit();//等待程序运行完退出程序 pro.Close();//关闭进程 return info; } }
注意 ! 操作时需要开启防火墙,不然执行会报异常