Windows VBScript-检查防火墙是否已启用

Windows VBScript-检查防火墙是否已启用,windows,vbscript,firewall,Windows,Vbscript,Firewall,我写了一个脚本来检查Windows上是否启用了防火墙。看起来不错,但它总是说防火墙已启用-即使它已禁用。我花了很多时间分析它,但没有结果——你能帮我找出它的毛病吗 Dim strFirewallStatus, strComputer strComputer = "localhost" Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_ strCo

我写了一个脚本来检查Windows上是否启用了防火墙。看起来不错,但它总是说防火墙已启用-即使它已禁用。我花了很多时间分析它,但没有结果——你能帮我找出它的毛病吗

Dim strFirewallStatus, strComputer
strComputer = "localhost"

Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_ 
                       strComputer & "\root\default:StdRegProv")

If err.number = 0 Then
  objReg.GetDWORDValue &H80000002, "SYSTEM\CurrentControlSet\" &_
  "Services\SharedAccess\Parameters\FirewallPolicy\" &_
  "DomainProfile\", "EnableFirewall", dwValue

  If dwValue <> 0 Then
    strFirewallStatus = "Firewall is enabled"
  Else
    strFirewallStatus = "Firewall is disabled"
  End If

  WScript.Echo strFirewallStatus
Else
  WScript.Echo strComputer & " - Error" & err.number & " : " &_
  err.description
  err.clear
End if
Dim strFirewallStatus,strc计算机
strComputer=“localhost”
设置objReg=GetObject(“winmgmts:{impersonationLevel=impersonate}!\\”和
strComputer&“\root\default:StdRegProv”)
如果err.number=0,则
objReg.GetDWORDValue&H80000002,“系统\当前控制集”&_
“服务\SharedAccess\Parameters\FirewallPolicy\”&_
“DomainProfile\”,“EnableFirewall”,dwValue
如果DWI值为0,则
strFirewallStatus=“防火墙已启用”
其他的
strFirewallStatus=“防火墙已禁用”
如果结束
Echo strFirewallStatus
其他的
WScript.Echo strComputer&“-Error”和err.number&:”&_
错误描述
清楚
如果结束
我将该脚本保存为.vbs文件


顺便问一下,如何在系统启动时设置脚本?我希望这个脚本在第一次启动后自动添加注册表信息。

< P>您应该考虑防火墙对于<代码>域配置文件< /代码>的启用/禁用,对于<代码>标准配置文件(私有或国内LAN)和对于<代码>公共配置文件(公共LAN) 每个设置在注册表中都有一个单独的键

如果您的电脑不是域的一部分,则测试返回默认值Enabled

在我的家用电脑(win7 64位无域)上,如果我使用的不是'DomainProfile',而是'StandardProfile',则脚本将正确返回防火墙的当前状态

If err.number = 0 Then 
  objReg.GetDWORDValue &H80000002, "SYSTEM\CurrentControlSet\" &_ 
  "Services\SharedAccess\Parameters\FirewallPolicy\" &_ 
  "StandardProfile\", "EnableFirewall", dwValue 

这里有一个可能适合您的替代方案:Windows防火墙当前是否正在使用您的域配置文件?您是否已检查(使用regedit)当您关闭防火墙时,所涉及的注册表值是否确实发生了更改?