windows防火墙规则添加

前言

在windows编写网络应用,第一次启动的时候总是会弹出防火墙的警告。有什么办法去掉这个呢?
这里不介绍防火墙相关方面的知识。如果你想知道,请咨询公司的网络管理员,他会给你推荐相关的目录。主要是防火墙规则制定,端口过滤、应用限制啥的。

windows防火墙的查看

防火墙规则对一般用户而言存在于两个地方
win10系统下,控制面板->Windows Defender防火墙

粗略查看



这里可以看到你所有的允许通过防火墙的应用。

更详细的显示


这里可以看到更加详细的信息。


防火墙提示

当第一次启动需要联网的应用时,一般会弹出防火墙提示


防火墙规则的添加方式

shell命令的方式

在管理员的权限的控制台下,执行命令

netsh advfirewall firewall add rule name="lebo_robin" dir=in program="C:\Users\robin\Downloads\happycast\happycast_temp\happycastpc.exe" action=allow
netsh advfirewall firewall add rule name="lebo_robin" dir=out program="C:\Users\robin\Downloads\happycast\happycast_temp\happycastpc.exe" action=allow

netsh advfirewall firewall delete rule name="lebo_robin"

在nsis下添加

ExecDos::exec 'netsh advfirewall firewall add rule name="AirLink_robin" dir=in program="$INSTDIR\${PRODUCT_NAME}.exe" action=allow'
ExecDos::exec 'netsh advfirewall firewall add rule name="AirLink_robin" dir=out program="$INSTDIR\${PRODUCT_NAME}.exe" action=allow'

ExecDos::exec 'netsh advfirewall firewall delete rule name="AirLink_robin"'

注意:
1,这里是ExecDos::exec开头,这里使用了ExecDos插件,这个插件有x64、x86和ansi、unicode共四个版本,要跟你自己的系统相匹配。
2,安装包默认自带了“需要管理员权限”的属性。因此不需要添加,

代码添加方式

添加方式:

搜索关键字 “Windows Firewall with Advanced Security”,进入到微软msdn页面。
然后点击相应的链接找到了。

添加应用到防火墙白名单中

优点:没觉得有什么特殊的优点。
缺点:必须要在编译选项那里,将“UAC执行级别”设定为管理员权限,但是这样有个问题,每次程序启动,都会弹出一个权限提示框(挺烦人的)。

补充
Qt程序添加管理员权限

### 如何在 Windows 防火墙添加入站和出站规则 #### 使用图形界面创建防火墙规则 对于单台计算机上的少量规则设置,可以通过图形化界面完成: 1. 打开控制面板并进入“系统和安全”,点击“Windows Defender 防火墙”。接着,在左侧菜单选择“高级设置”。 2. 右键点击“入站规则”或者“出站规则”,根据需求选择新建规则。 3. 新建规则向导会引导用户通过一系列选项来定义新规则的具体参数,包括但不限于程序路径、端口号等。最后一步则是指定该规则的动作(允许或阻止),以及应用范围(域网络、专用网络或是公共网络)。[^1] #### 命令行批量配置防火墙规则 面对多台设备或多条规则的需求时,采用命令行工具 `netsh` 或 PowerShell 脚本将是更高效的选择。以下是利用这两种方式实现自动化部署的例子: ##### 利用 netsh 添加单一规则 ```batch :: 创建一条允许TCP流量进出本地机器上特定端口(比如8081)的新规 netsh advfirewall firewall add rule name="Allow Port 8081" protocol=TCP dir=in localport=8081 action=allow ``` ##### 编写PowerShell脚本来批量导入规则 编写一段简单的PowerShell代码片段用于快速建立多个自定义规则: ```powershell $ports = @(80,443,8080,8081) foreach ($port in $ports){ New-NetFirewallRule -DisplayName "Allow TCP Inbound on port $port" ` -Direction Inbound ` -LocalPort $port ` -Protocol TCP ` -Action Allow } ``` 上述脚本将依次为数组 `$ports` 中列举的所有端口创建对应的入站许可规则。此方法适用于需要一次性处理大量相似性质的规则场景下。[^2] #### 解决新增规则未生效的问题 有时即使已经正确设置了新的防火墙规则,仍然可能出现预期外的行为——即某些服务无法正常通信。这可能是由于以下几个原因造成的: - 存在优先级更高的现有规则覆盖了刚加入的新规则; - 应用了错误的操作模式(例如尝试修改的是标准用户权限下的策略而实际运行的应用是以管理员身份启动); - 对于企业环境中由组策略下发的安全设定未能及时更新同步到目标主机之上; 遇到这种情况建议逐一排查以上可能性,并确保所作更改确实作用到了正确的上下文中去。[^3]
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值