项目中用到监测防火墙的状态,进行显示的问题:就是有多种防火墙的打开和关闭,造成了疑惑。
1、在计算机管理-服务 可以找到防火墙的服务,这里有启动和关闭两种状态;
2、控制面板\所有控制面板项\Windows 防火墙\自定义设置 可以看到“家庭或者工作网络位置设置”,“公用网络位置设置”两项都有“启用防火墙”和“关闭防火墙”的字样。
3、如果,我们查看到 的是:控制面板\所有控制面板项\Windows 防火墙 -》高级设置,
就又会看到 “本地计算机上的高级安全windows防火墙属性”, 下面有几个页:“域配置文件”,“专用配置文件”,“公用配置文件”“IPSec设置”,其前三页里面都有“防火墙状态”;
4、查看注册表项:HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\SharedAccess\Defaults\FirewallPolicy可以看到:PublicProfile---EnableFirewall
StandardProfile---EnableFirewall
DomainProfile---EnableFirewall
其中EnableFirewall显示的防火墙的状态;
最终,确定的检测方案如下:
1,检测防火墙服务,如果关闭,就认为“公用网络防火墙关闭”,“专用网络防火墙关闭” 如果服务启动,就进行下一步;
2,防火墙服务开启的情况下,检测注册表项HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\SharedAccess\Defaults\FirewallPolicy的子项的PublicProfile,StandardProfile,DomainProfile的enableFirewall的值,如果是1则是该项开启,0关闭;目前大家通常关心的是前两项的值,进行显示提示就可以了,DomainProfile的等到将来遇到需要的再显示。