2

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 ファイルとして保存しました。

ところで、システムの起動時にスクリプトを設定するにはどうすればよいですか? このスクリプトで、最初の起動後にレジストリに情報を自動的に追加したいと考えています。

4

1 に答える 1

2

You should consider that the Firewall could be enabled/disabled for a Domain Profile, for a Standard Profile (Private or domestic lan) and for a Public Profile (public lan).
Each setting has a separated key in the registry.

If your PC is not part of a domain the test returns as default value Enabled.

On my home PC (win7 64bit no domain) if, instead of 'DomainProfile', I use 'StandardProfile' then the script return correctly the current state of the firewall.

If err.number = 0 Then 
  objReg.GetDWORDValue &H80000002, "SYSTEM\CurrentControlSet\" &_ 
  "Services\SharedAccess\Parameters\FirewallPolicy\" &_ 
  "StandardProfile\", "EnableFirewall", dwValue 
于 2012-05-12T23:59:42.413 に答える