在防火墙的例外中注册程序(Windows7和XP)

来源:互联网 发布:iphone6白苹果修复数据 编辑:程序博客网 时间:2024/05/06 00:19

产品的 p2p 传输一直有个比较纠结的问题,局域网内存在偶尔不能直连的情况,要走转发。测试时发现是 windows 防火墙原因,开了防火墙 p2p 不能直连。

我自己系统是 win7 ,软件在第一次跑时,系统会提示是否要把该程序添加到 防火墙例外程序中,自己不小心关闭了该窗口导致问题。

网上查找了一些资料,本来想在软件里启动时写注册表,win7 下写对应注册表,但 windows 防火墙例外程序列表中始终没有显示相应项,挺纠结的(知道的人麻烦告诉一下),也考虑到程序中写注册表会被 360 拦截,所以就决定在打包安装脚本里实现该功能了。

 

nsis 脚本执行语句

Section     ${If} ${AtLeastWinVista}   nsExec::ExecToLog 'cmd.exe /c "netsh advfirewall firewall delete rule name =\"xxxxxx\" program=\"$INSTDIR\xxx.exe\""'nsExec::ExecToLog 'cmd.exe /c "netsh advfirewall firewall add rule name =\"xxxxxx\" dir=in program=\"$INSTDIR\xxx.exe\" action=allow Protocol=udp Profile=Public"'nsExec::ExecToLog 'cmd.exe /c "netsh advfirewall firewall add rule name =\"xxxxxx\" dir=in program=\"$INSTDIR\xxx.exe\" action=allow Protocol=tcp Profile=Public"'  ${Else}nsExec::ExecToLog 'cmd.exe /c "netsh firewall delete allowedprogram program = \"$INSTDIR\xxx.exe\""'nsExec::ExecToLog 'cmd.exe /c "netsh firewall add allowedprogram program = \"$INSTDIR\xxx.exe\" name=\"xxxxxx\" ENABLE"'${EndIf}   SectionEnd

 

在防火墙的例外中注册程序

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

 

Netsh AdvFirewall Firewall Commands

win7  http://technet.microsoft.com/zh-cn/library/dd734783(v=WS.10)

xp      http://technet.microsoft.com/zh-cn/library/cc771046(v=WS.10).aspx

 

nsis 基本语法

http://www.cppblog.com/Mumoo/archive/2012/05/11/174542.aspx

逻辑语句的宏文件: !include logiclib.nsh
IF语句:
   ${If} $0 == 'some value'
      MessageBox MB_OK '$$0 is some value'
   ${ElseIf} $0 == 'some other value'
      MessageBox MB_OK '$$0 is some other value'
   ${Else}
      MessageBox MB_OK '$$0 is "$0"'
     ${EndIf}

while循环:

   StrCpy $R1 0 ——————————字符串赋值为整型
   ${While} $R1 < 5
         IntOp $R1 $R1 + 1
         DetailPrint $R1——————————打印字符串
${EndWhile}

 

NSIS获取当前系统版本

http://www.flighty.cn/html/bushu/20110322_114.html

原创粉丝点击