2012-05-12 15 views
1

ファイアウォールが有効になっている場合、Windowsでチェックするスクリプトを作成しました。正常に見えますが、ファイアウォールは無効になっていても有効になっています。私はそれを分析せずにそれを分析するのに多くの時間を費やしています - それで何が間違っているのかを助けてくれますか?VBScript - ファイアウォールが有効になっているかどうかを確認します

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

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

+1

はあなたのために働くかもしれない代替です:http://technet.microsoft.com/en-us/library/ee692641.aspx – paulsm4

+0

Windowsファイアウォールは、現在お使いのドメインプロファイルを使用していますか?ファイアウォールをオフにしたときに、問題のレジストリ値が実際に変更されたことを(regeditを使用して)チェックしましたか? –

答えて

2

Domain Profileの場合はStandard Profile (Private or domestic lan)Public Profile (public lan)の場合はファイアウォールを有効または無効にできます。
各設定には、レジストリに分離キーがあります。

PCがドメインの一部でない場合、テストはデフォルト値として有効になります。。代わりに「DomainProfile」の私の自宅のPC(win7の64ビットドメインなし)で

場合は、私が「StandardProfile」、スクリプトのリターンファイアウォールの正確現在の状態を使用します。ここで

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