NSIS 关于防火墙规则的操作

本文详细介绍如何在防火墙中添加特定端口的过滤规则,通过示例展示如何使用cmd命令行工具,配合netsh命令,实现对指定端口如8061和18061的入站流量允许策略。

防火墙中添加过滤的端口号:

nsExec::Exec '"cmd.exe" /c netsh advfirewall firewall add rule name="XXX" dir=in action=allow localport=8061,18061'
  

2.1 介绍 你所下载或购买来的软件,大多带有安装程序。安装程序能够复制及/或更新文件、写入注册表键值、写入设置信息。创建快捷方式等等。所有这些操作都将自动为用户完成。用户所要做的仅仅是补充一些必须信息,剩下的则全部由安装程序来完成。用户通过安装向导,作出适当的选择并等待安装的完成。安装完成后,留给用户的任务仅是运行软件。用户不必担心是否忘记了某些操作,因为一切所需的步骤都已由安装程序安排妥当了。 NSIS 是开发者用来创建这样安装程序的工具。 NSIS 允许你创建任何事情,从最基本的只需复制文件的安装程序,到含有诸如写注册表主键、设置环境变量、从互联网下载最新版本的程序、定制配置文件等大量复杂任务的安装程序。NSIS 具有极高的灵活性,而其脚本语言也易于学习。 NSIS 将所有的文件及安装脚本编译为一个可执行文件,所以你可以轻松的进行发布。 NSIS 自身仅添加 34KB 代码到数据中(在默认设置下)。 NSIS 因为其功能强大的脚本语言以及丰富的外部插件支持,在使用最小的消耗的同时拥有了大量的功能选项。 2.2 脚本文件 要创建 NSIS 安装程序,首先要写一个 NSIS 脚本。 NSIS 脚本仅仅是一个包含了特殊语法的文本文件,你可以用任何的文本编辑器来编辑。推荐使用可以显示行数的文本编辑器,因为当发生错误时 NSIS 使用行数来指出错误所在。更推荐使用带有语法高亮显示的编辑器,你可以在 NSIS Wiki 下载到。 在 NSIS 脚本里每一行都作为一个命令处理, 如果这一行太长的话你可以使用 “\” 来分隔,编译器会自动地把下一行接到上一行来作为完整的一行,而不是看作新的行。例如: Messagebox MB_OK|MB_ICONINFORMATION \ "本示例演示了在 NSIS 脚本里如何对长的命令进行断行处理" 如果在字符串里需要使用双引号,你应该使用 $\" 来避免误解,或者使用另外的不引起歧义的引号比如 ` 或 ' 。
一.环境变量配置 ; 定义系统环境变量的 注册表key值 !define WriteEnvStr_RegKey 'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"' ;设置环境变量 Function "regExpandStr" SetOverwrite ifnewer ;设置jdk环境变量 WriteRegExpandStr ${WriteEnvStr_RegKey} "JAVA_HOME" "$INSTDIR\jdk1.8.0_131" ;设置CATALINA_DIR WriteRegExpandStr ${WriteEnvStr_RegKey} "CATALINA_DIR" "$INSTDIR\tomcat\bin" ;设置CATA_LINA WriteRegExpandStr ${WriteEnvStr_RegKey} "CATA_LINA" "$INSTDIR\tomcat" ;设置path ReadRegStr $0 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path" WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path" "$0;C:\windows\system32;$INSTDIR\redis;$INSTDIR\mysql\bin;$INSTDIR\Java\jdk1.8.0_131\bin;" #第一次是使环境变量修改对其他进程有效;刷新环境变量 SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 SetOverwrite on functionend ;注册服务 Function "installService" detailprint "------------------------------------install tomcat Service..." Sleep 2000 SetOutPath "$INSTDIR\tomcat\bin" nsExec::Exec 'cmd /c service install' nsExec::Exec 'cmd /c sc config tomcat8 start= auto' ;设置服务自动开启 detailprint "------------------------------------install tomcat Service success..." detailprint "install mysql Service..." Sleep 2000 SetOutPath "$INSTDIR\mysql\bin" nsExec::Exec 'cmd /c $INSTDIR\mysql\bin\mysqld.exe" -install Mysql --defaults-file="$INSTDIR\\mysql\\my.ini' detailprint "install mysql Service success..." detailprint "------------------------------------install redis Service..." Sleep 2000 SetOutPath "$INSTDIR\redis" nsExec::Exec 'cmd /c redis-server --service-install redis.windows.conf' detailprint "install redis Service success..." functionend ; 启动服务 Function "startService" detailprint "------------------------------------start tomcat..." nsExec::Exec 'cmd /c sc start Tomcat8' detailprint "------------------------------------start tomcat success..." detailprint "------------------------------------start mysql..." nsExec::Exec 'cmd /c sc start mysql' detailprint "------------------------------------start MySQL success..." detailprint "------------------------------------start redis..." ;nsExec::Exec 'cmd /c sc redis-server --service-start --service-name redis' detailprint "------------------------------------start redis success..." functionend ;停止服务 Function "un.stopService" detailprint "正在停止tomcat服务......." nsExec::Exec 'cmd /c sc stop tomcat8' detailprint "停止tomcat服务成功......." detailprint "正在停止mysql服务......." nsExec::Exec 'cmd /c sc stop mysql' detailprint "停止mysql服务成功......." detailprint "正在停止redis服务......." nsExec::Exec 'cmd /c sc redis-server --service-stop --service-name redis' detailprint "停止redis服务成功......." functionend ;删除服务 Function "un.uninstService" detailprint "正在卸载tomcat服务......." nsExec::Exec 'cmd /c sc delete tomcat8' detailprint "卸载tomcat服务成功......." detailprint "正在卸载mysql服务......." nsExec::Exec 'cmd /c sc delete mysql' detailprint "卸载mysql服务成功......." detailprint "正在卸载redis服务......." nsExec::Exec 'cmd /c sc delete redis' detailprint "卸载redis服务成功......." functionend ;清空环境变量 Function "un.emptyRegExpandStr" #删除 系统环境变量JAVA_HOME 和 CATALINA_HOME #卸载的时候必须设置JAVA_HOME 和 CATALINA_HOME两个环境系统变量为空,或者删除这两个系统变量。否则会出现NSIS选择系统变量的错误(NSIS会自动选择之前有值的系统变量,而不是选择当前刚设置的系统变量) detailprint "正在删除相关环境变量......." functionend 二.校验mac地址 #序列号 校验页面 Page custom check_serial_number Var "MacAddress" Function check_serial_number Call .GetMacAddress #MessageBox MB_OK '当前机器Mac地址为:$MacAddress' ${if} $MacAddress == '00-50-56-C0-00-08' ${OrIf} $MacAddress == '00-50-56-C0-00-081' #MessageBox MB_OK '已授权' ${Else} MessageBox MB_OK '未授权,请联系经销商并授权!' ;SendMessage $HWNDPARENT 0x408 3 0 #页面跳转 Call onClickClose ${EndIf} FunctionEnd #获取主机MAC地址 Function .GetMacAddress System::Call Iphlpapi::GetAdaptersInfo(i,*i.r0) System::Alloc $0 Pop $1 System::Call Iphlpapi::GetAdaptersInfo(ir1r2,*ir0)i.r0 StrCmp $0 0 0 finish loop: StrCmp $2 0 finish System::Call '*$2(i.r2,i,&t260;.s,&t132;.s,i.r5)i.r0' ;Unicode版将t改为m IntOp $3 403 + $5 StrCpy $6 "" ${For} $4 404 $3 IntOp $7 $0 + $4 System::Call '*$7(&i1;.r7)' IntFmt $7 "X" $7 StrCpy $6 "$6$7" StrCmp $4 $3 +2 StrCpy $6 "$6-" ${Next} StrCpy $MacAddress $6 Goto loop finish: System::Free $1 FunctionEnd 三.关闭按钮功能 ;点击右上角关闭按钮 Function onClickClose FindProcDLL::FindProc "${PRODUCT_NAME}.exe" Sleep 500 Pop $R0 ${If} $R0 != 0 KillProcDLL::KillProc "${PRODUCT_NAME}.exe" ${EndIf} FunctionEnd
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值