/* Firewall-Disabler是NSIS防火墙启用禁用设置的插件 在win7下测试已经无效了,此插件源码提供了一些简单的防火墙概念还是值得参考一下 例如防火墙注册表值的更改之类.衿华客使用命令行实现了一个简单的防火墙启用禁用功能. 希望此文对你有所帮助. */ !AddPluginDir "../Plugins" !include "Logiclib.nsh" #RequestExecutionLevel admin SetCompressor /SOLID lzma OutFile "Firewall-Disable.exe" Section "NSIS衿华客" ;查找防火墙是否启用1启用0禁用 Firewall-Disabler::QueryFirewall Pop $R0 ${If} $R0 == 1 MessageBox MB_OK "防火墙处于启用状态" ${Else} MessageBox MB_OK "防火墙处于禁用状态" ${EndIf} ; #当然你也可以直接用原生的nsis程序来实现,读取注册表标记值 ; ReadRegStr $0 HKLM "SYSTEMCurrentControlSetServicesSharedAccessParametersFirewallPolicyStandardProfile" "EnableFirewall" ; ${If} $R0 == 1 ; MessageBox MB_OK "防火墙处于启用状态" ; ${Else} ; MessageBox MB_OK "防火墙处于禁用状态" ; ${EndIf} ;关闭防火墙(在win732bit下运行无效) Firewall-Disabler::DisableFirewall Pop $R0 ${If} $R0 == 1 MessageBox MB_OK "关闭防火墙成功" ${Else} MessageBox MB_OK "关闭防火墙失败" ${EndIf} #那我们直接用命令行来操作吧 ;关闭防火墙 nsExec::exec 'netsh firewall set opmode mode=disable' SetShellVarContext all nsExec::exec 'netsh firewall set opmode mode=disable' SetShellVarContext current ;打开防火墙 nsExec::exec 'netsh firewall set opmode mode=enable' SetShellVarContext all nsExec::exec 'netsh firewall set opmode mode=enable' SetShellVarContext current SectionEnd