在防火墙的例外中注册程序(Windows7和XP),改写注册表
在写程序的时候,经常遇到被防火墙拦截的情况,尤其是一些网络程序,不管是对外访问还是外部连接,都会被拦截。
在大多情况下,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
在防火墙的例外中注册程序(Windows7和XP),改写注册表的更多相关文章
- VB编写的程序加入防火墙的例外中
在工程中要先引入: NetCon 1.0 Type Library NetFwTypeLib Option Explicit Const NET_FW_SCOPE_ALL = 0 Const NET_ ...
- 2017-03-03 Oracle在.Net中出现未在本地计算机上注册“OraOLEDB.Oracle”提供程序的错误
在前面的Oracle配置完成后,打开项目运行出错,出现未在本地计算机上注册“OraOLEDB.Oracle”提供程序的错误,看到“注册”两个字,首先想到,难道还要用命令行注册一下?果不其然,需要手动注 ...
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...
- 以向VS 程序打包集成自动写入注册表功能为例,介绍如何实现自由控制安装过程
最近由于项目部署时需要更灵活的控制程序安装的流程以及自定义安装行为,特意研究了一下VS程序打包,把解决办法和大家分享一下. 以VS2010为例: 这是一个已经设置好最基本的Visual Studio ...
- Window 注册程序关联后缀文件,双击运行
一般来说,很多软件都会有自定义后缀的文件,比如.cpp..doc等,那么如果我们想把这些后缀与我们的软件关联起来,如何做呢 #pragma once #include "StdAfx.h&q ...
- VBA中自定义类和事件的(伪)注册
想了解一下VBA中自定义类和事件,以及注册事件处理程序的方法. 折腾了大半天,觉得这样的方式实在称不上“注册”,所以加一个“伪”字.纯粹是瞎试,原理也还没有摸透.先留着,有时间再接着摸. 做以下尝试: ...
- C语言中的程序终止函数
在C语言的标准库<stdlib.h>中提供了一些与正常或者不正常的程序终止有关的函数,下面分别对其进行简单介绍. 参考文献: [1] C和指针,P298,342 [2] C程序设计语言现代 ...
- C# 32位程序访问64位系统注册表
原文:C# 32位程序访问64位系统注册表 我的上一篇文章已经阐述了“32位程序和64位程序在64位平台上读\写注册表的区别”,那么接下来将要回答上篇所留下来的一个问题:32位程序如何访问64位系统注 ...
- Android逆向破解表单注册程序
Android逆向破解表单注册程序 Android开发 ADT: android studio(as) 程序界面如下,注册码为6位随机数字,注册成功时弹出通知注册成功,注册失败时弹出通知注册失败. 布 ...
随机推荐
- CentOS6.5 配置防火墙+允许指定ip访问端口
参考博文: iptables防火墙只允许指定ip连接指定端口.访问指定网站 一.配置防火墙 打开配置文件 [root@localhost ~]# vi /etc/sysconfig/iptables ...
- Ibatis2.3.4的一个bug
java.lang.ClassCastException: com.chat.upgrade.domain.ClientFile cannot be cast to java.lang.String ...
- Denny Zhang:一辈子做一个自由职业者
程序猿訪谈录供稿 Denny是一个旅居美国的自由职业者,这是一份让人羡慕的职业,选择这个职业意味着他已经实现某种程度上的经济自由,能够最大限度的做自己喜欢的事情,对他来说,选择自由职业作为自己终生的事 ...
- c语言,enum
在设置错误代号时,使用enum比宏更好看. #include <stdio.h> typedef enum { retOK = 0, errComInterruption = 0x1000 ...
- javascript每日一练(四)——DOM二
一.DOM的创建,插入,删除 createElement(标签名) appendChild(节点) insertBefore(节点,原有节点) removeChild(节点) <!doctype ...
- perl学习(9) 实例:取出操作时间最长的100个记录
需求描述: 日志记录了一次操作的时间,即server端接收包到发送结果到client端的时间,取出操作时间最长的100个记录. 日志信息片段: [2013-09-13 15:23:50,445.500 ...
- POJ 1258-Agri-Net (Kruskal)
题目链接:Agri-Net 最小生成树水题,数组开的和题目描写叙述一样,可是就是RE,有填了个0,还好这个题用 库鲁斯卡尔 敲了一遍,发现了点问题,曾经写的库鲁卡尔模板有点问题,多写了步没用的操作,已 ...
- Qt exe图标
1.首先准备一张ico照片,也可以通过http://www.ico.la/生成: 2.把ico照片拷贝到项目工程下,比如:“pic.ico” 3.在工程下,创建一个文件“myapp.rc”,用txt打 ...
- Java+7入门经典 - 6 扩展类与继承 Part 1/2
第6章 扩展类与继承 面向对象编程的一个重要特性: 允许基于已定义的类创建新的类; 6.1 使用已有的类 派生 derivation, 派生类 derived class, 直接子类 direct s ...
- Delphi一共封装(超类化)了8种Windows基础控件和17种复杂控件
超类化源码: procedure TWinControl.CreateSubClass(var Params: TCreateParams; ControlClassName: PChar); con ...