在防火墙的例外中注册程序(Windows7和XP),改写注册表
2024-08-24 20:07:38
在写程序的时候,经常遇到被防火墙拦截的情况,尤其是一些网络程序,不管是对外访问还是外部连接,都会被拦截。
在大多情况下,Windows会静默拦截外部对内的连接访问,而内部对外的访问会提示用户信息。
现在我们需要把自己的程序加入到防火墙的例外之中去,好让程序之间能够正常通信。
第一种方法是读写注册表的方式:
XP下是这几个键值(有的时候貌似只用2个键就行,但情况不同,最保险的方式是这4个键都写):
- 1. HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/SharedAccess/Parameters/FirewallPolicy/StandardProfile/AuthorizedApplications/List
- 2. HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/SharedAccess/Parameters/FirewallPolicy/StandardProfile/AuthorizedApplications/List
- 3.
- 4. HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/SharedAccess/Parameters/FirewallPolicy/DomainProfile/AuthorizedApplications/List
- 5. HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/SharedAccess/Parameters/FirewallPolicy/DomainProfile/AuthorizedApplications/List
而在Window7下略有不同,是这几个键:
- 1. HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/services/SharedAccess/Parameters/FirewallPolicy/FirewallRules
- 2. HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/services/SharedAccess/Defaults/FirewallPolicy/FirewallRules
- 3. HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/SharedAccess/Defaults/FirewallPolicy/FirewallRules
- 4. HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/SharedAccess/Parameters/FirewallPolicy/FirewallRules
第二种方式是使用命令操作,这种方式保险性最高,适用性也高:
同样在XP下的命令:
- 1. netsh firewall add allowedprogram //增加例外
而在Window7下这个命令虽然也可以,可系统提示不要使用这个,于是换成这个更保险(由于系统UAC的缘故):
- 1. netsh advfirewall firewall
其中的选项可以选择(XP和win7相同,但具体用法略有不同):
- 1. ? - 显示命令列表。
- 2. add - 添加防火墙配置。
- 3. delete - 删除防火墙配置。
- 4. dump - 显示一个配置脚本。
- 5. help - 显示命令列表。
- 6. reset - 将防火墙配置重置为默认值。
- 7. set - 设置防火墙配置。
- 8. show - 显示防火墙配置。
- 9. 若需要命令的更多帮助信息,请键入命令,
- 10. 后面跟 ?。
具体使用可以直接敲入命令,会显示帮助信息,帮助中带有示例程序。
所以,你可以再你的程序中这么使用:
- “cmd.exe /s /c “netsh advfirewall firewall add rule name = /"MySQL/" dir=in program = /"G://Program Files//MySQL//mysql//bin//mysql.exe/" security=authnoencap action=allow/”” //win7下添加mysql到防火墙例外中
在支持脚本的安装程序中,也可以直接调用,比如在winXP下,使用NSIS做安装包这么写:
- nsExec::ExecToLog 'netsh advfirewall firewall add rule name = "MySQL" dir=in program = "$PROGRAMFILES/MySQL/mysql/bin/mysql.exe" action=allow'
可以达到同样效果。
对于删除和修改,可以查看这个命令的帮助:
- 1. C:/Documents and Settings/Administrator>netsh firewall delete
- 2. 下列指令有效:
- 3. 此上下文中的命令:
- 4. delete allowedprogram - 删除防火墙允许的程序配置。
- 5. delete portopening - 删除防火墙端口配置。
- 6. C:/Documents and Settings/Administrator>
然后根据里面的说明和详细例子去使用。
http://blog.csdn.net/blpluto/article/details/5979684
最新文章
- 时间格式转换—将后台返回的/Date(1448954018000)/格式转换为正常的时间格式
- 关于如何在github上创建团队开发环境
- quick-cocos2d-x 实现在lua里面完成android支付宝的接入
- UML类图画法及其之间的几种关系
- Vim 新用法
- nodejs实现单文件上传。
- 利用iptables将本地的80端口请求转发到8080,当前主机ip为192.168.1.1,命令怎么写?
- 转: markdown基本语法
- nfs:server is not responding,still trying 原因与解决
- 梳排序(Comb sort)
- 咸鱼入门到放弃11--Servlet+JSP+JavaBean开发模式
- js 复制(自动)
- 手眼标定eye-to-hand 示例:handeye_stationarycam_calibration
- [USACO12MAR] 花盆Flowerpot
- requests库入门07-patch请求
- Linux运维之shell脚本进阶篇
- CynosDB技术详解——存储集群管理
- Linux记录-集群时间同步解决方案
- Python异常处理回顾与总结
- sql按月模糊查询
热门文章
- 知识普及:iOS7搭载新定位技术iBeacon
- c++, class的大小
- KMP算法原理与实现(精简)
- 如何捕获winform程序全局异常?(续)
- 130831组队赛-Regionals 2011, Asia - Kuala Lumpur
- sharepoint 2013 根据网站模版创建网站,并赋值网站权限 create a site by custom site template
- 解决swfupload上传控件文件名中文乱码问题 三种方法 flash及最新版本11.8.800.168
- 好消息:8月25日广州嵌入式Linux开发免费项目约定你
- 基于Tire树和最大概率法的中文分词功能的Java实现
- java基础之&;amp; 和 &;amp;&;amp; 的差别