穿汉服的意义:在防火墙的例外中注册程序(Windows7和XP)

来源:百度文库 编辑:偶看新闻 时间:2024/05/03 04:41:59

在写程序的时候,经常遇到被防火墙拦截的情况,尤其是一些网络程序,不管是对外访问还是外部连接,都会被拦截。

在大多情况下,Windows会静默拦截外部对内的连接访问,而内部对外的访问会提示用户信息。

现在我们需要把自己的程序加入到防火墙的例外之中去,好让程序之间能够正常通信。

第一种方法是读写注册表的方式:

XP下是这几个键值(有的时候貌似只用2个键就行,但情况不同,最保险的方式是这4个键都写):

view plaincopy to clipboardprint?
  1. 1.  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List    
  2. 2.  HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List    
  3. 3.      
  4. 4.  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\AuthorizedApplications\List    
  5. 5.  HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\AuthorizedApplications\List    

而在Window7下略有不同,是这几个键:

view plaincopy to clipboardprint?
  1. 1.  HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\SharedAccess\Parameters\FirewallPolicy\FirewallRules    
  2. 2.  HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\SharedAccess\Defaults\FirewallPolicy\FirewallRules    
  3. 3.  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Defaults\FirewallPolicy\FirewallRules    
  4. 4.  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\FirewallRules    

第二种方式是使用命令操作,这种方式保险性最高,适用性也高:

同样在XP下的命令:

view plaincopy to clipboardprint?
  1. 1.  netsh firewall add allowedprogram //增加例外   

而在Window7下这个命令虽然也可以,可系统提示不要使用这个,于是换成这个更保险(由于系统UAC的缘故):

view plaincopy to clipboardprint?
  1. 1.  netsh advfirewall firewall   

其中的选项可以选择(XP和win7相同,但具体用法略有不同):

view plaincopy to clipboardprint?
  1. 1.  ?              - 显示命令列表。    
  2. 2.  add            - 添加防火墙配置。    
  3. 3.  delete         - 删除防火墙配置。    
  4. 4.  dump           - 显示一个配置脚本。    
  5. 5.  help           - 显示命令列表。    
  6. 6.  reset          - 将防火墙配置重置为默认值。    
  7. 7.  set            - 设置防火墙配置。    
  8. 8.  show           - 显示防火墙配置。    
  9. 9.  若需要命令的更多帮助信息,请键入命令,    
  10. 10. 后面跟 ?。    

具体使用可以直接敲入命令,会显示帮助信息,帮助中带有示例程序。

所以,你可以再你的程序中这么使用:

view plaincopy to clipboardprint?
  1. “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做安装包这么写:

view plaincopy to clipboardprint?
  1. nsExec::ExecToLog 'netsh advfirewall firewall add rule name = "MySQL" dir=in program = "$PROGRAMFILES\MySQL\mysql\bin\mysql.exe" action=allow'     

可以达到同样效果。

对于删除和修改,可以查看这个命令的帮助:

view plaincopy to clipboardprint?
  1. 1.  C:\Documents and Settings\Administrator>netsh firewall delete    
  2. 2.  下列指令有效:    
  3. 3.  此上下文中的命令:    
  4. 4.  delete allowedprogram - 删除防火墙允许的程序配置。    
  5. 5.  delete portopening - 删除防火墙端口配置。    
  6. 6.  C:\Documents and Settings\Administrator>   
WINDOWS防火墙的不允许例外要不要勾上 如何把XP自带的FTP程序添加进自带的防火墙例外中? XP系统如何在windows防火墙里加IIS为例外? 关于防火墙的例外 如何添加一个例外到windows防火墙? 我的SKYPE不能登录,警告页面提示说在防火墙后,可防火墙设置,“例外”中SKYPE的选项前勾过的 windows防火墙的不允许例外勾上了为什么还是可以上QQ和网络游戏 防火墙里的例外的thunder是什么? 如何解除防火墙的不允许例外模式 windows防火墙 设置 - 例外 BitComet/TCP/UDP Windows防火墙在哪个文件夹中(路径)? Windows防火墙在哪个文件夹中(路径)?? IEXPLORE 在 0167:bff883ae 的模块 KERNEL32.DLL 中导致例外 c0000027H。 超管用户设置了例外,但Windows防火墙还是阻止受权用户 可以在Windows环境中运行的程序编程软件? 如何在WINDOWS中设置开机自动运行的程序 写出在 Windows中运行程序的4种常出方法 怎样能删除Windows防火墙的这个程序? 防火墙在使用中不小心把一程序永久性的阻止了,怎样恢复呢? 在天网防火墙中我把所有的程序都禁止访问网络 在天网防火墙中我把所有的程序都禁止访问网络 在天网防火墙中我把所有的程序都禁止访问网络 是不是自动添加打开文件的程序必须是该程序在注册表中注册有才行? 是不是自动添加打开文件的程序必须是该程序在注册表中注册有才行?