• 前言
  • windows防火墙的查看
  • 粗略查看
  • 更详细的显示
  • 防火墙提示
  • 防火墙规则的添加方式
  • shell命令的方式
  • 在nsis下添加
  • 代码添加方式


前言

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

windows防火墙的查看

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

粗略查看

cmd添加防火墙 修改mysql 添加防火墙规则_第一次启动


cmd添加防火墙 修改mysql 添加防火墙规则_管理员权限_02


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

更详细的显示

cmd添加防火墙 修改mysql 添加防火墙规则_第一次启动_03


cmd添加防火墙 修改mysql 添加防火墙规则_shell命令_04

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


防火墙提示

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

cmd添加防火墙 修改mysql 添加防火墙规则_shell命令_05


防火墙规则的添加方式

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执行级别”设定为管理员权限,但是这样有个问题,每次程序启动,都会弹出一个权限提示框(挺烦人的)。