如果启用了防火墙,我写了一个脚本来检查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
我将该脚本保存为.vbs文件。
顺便说一句 - 如何在系统启动时设置脚本?我希望这个脚本在首次启动后自动向注册表添加信息。
答案 0 :(得分:2)
您应该考虑为Domain Profile
,Standard Profile (Private or domestic lan)
和Public Profile (public lan)
启用/禁用防火墙。
每个设置在注册表中都有一个单独的键。
如果您的电脑不属于某个网域,则该测试会返回默认值已启用。
在我的家用电脑(win7 64bit无域名)上,如果我使用'StandardProfile'而不是'StandardProfile',那么脚本会正确返回当前的状态防火墙。
If err.number = 0 Then
objReg.GetDWORDValue &H80000002, "SYSTEM\CurrentControlSet\" &_
"Services\SharedAccess\Parameters\FirewallPolicy\" &_
"StandardProfile\", "EnableFirewall", dwValue