zoukankan      html  css  js  c++  java
  • 在防火墙的例外中注册程序(Windows7和XP),改写注册表

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

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

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

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

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

    [c-sharp] view plain copy
     
    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下略有不同,是这几个键:

    [c-sharp] view plain copy
     
    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下的命令:

    [c-sharp] view plain copy
     
    1. 1.  netsh firewall add allowedprogram //增加例外   

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

    [c-sharp] view plain copy
     
    1. 1.  netsh advfirewall firewall   

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

    [c-sharp] view plain copy
     
    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. 后面跟 ?。    

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

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

    [c-sharp] view plain copy
     
    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做安装包这么写:

    [c-sharp] view plain copy
     
    1. nsExec::ExecToLog 'netsh advfirewall firewall add rule name = "MySQL" dir=in program = "$PROGRAMFILES/MySQL/mysql/bin/mysql.exe" action=allow'     

    可以达到同样效果。

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

    [c-sharp] view plain copy
     
    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>    

    然后根据里面的说明和详细例子去使用。

    http://blog.csdn.net/blpluto/article/details/5979684

  • 相关阅读:
    部署nginx服务
    mysql主从配置
    LNMP+WordPress博客搭建
    CIFS(Samba)服务的使用
    NFS服务的使用
    LVM逻辑卷
    FTP学习
    文件处理+生成器
    内置函数
    Python3
  • 原文地址:https://www.cnblogs.com/findumars/p/5290190.html
Copyright © 2011-2022 走看看