#Option Explicit use strict; use Win32::OLE; #' Set constants # Const NET_FW_PROFILE_DOMAIN = 0 # Const NET_FW_PROFILE_STANDARD = 1 # ' Scope # Const NET_FW_SCOPE_ALL = 0 #' IP Version - ANY is the only allowable setting for now #Const NET_FW_IP_VERSION_ANY = 2 #' Declare variables #Dim errornum use constant { NET_FW_PROFILE_DOMAIN => 0, NET_FW_PROFILE_STANDARD => 1, NET_FW_SCOPE_ALL => 0, NET_FW_IP_VERSION_ANY => 2, }; my $errornum; #' Create the firewall manager object. #Dim fwMgr #Set fwMgr = CreateObject("HNetCfg.FwMgr") my $fwMgr = Win32::OLE->new("HNetCfg.FwMgr"); #' Get the current profile for the local firewall policy. #Dim profile #Set profile = fwMgr.LocalPolicy.CurrentProfile my $profile = $fwMgr->LocalPolicy->{CurrentProfile}; #Dim app #Set app = CreateObject("HNetCfg.FwAuthorizedApplication") my $app = Win32::OLE->new("HNetCfg.FwAuthorizedApplication"); #app.ProcessImageFileName = "c:\padawan.exe" #app.Name = "Padawan" #app.Scope = NET_FW_SCOPE_ALL $app->{ProcessImageFileName} = "c:\\padawan.exe"; $app->{Name} = "Padawan"; $app->{Scope} = NET_FW_SCOPE_ALL; #' Use either Scope or RemoteAddresses, but not both #'app.RemoteAddresses = "*" #app.IpVersion = NET_FW_IP_VERSION_ANY #app.Enabled = TRUE $app->{IpVersion} = NET_FW_IP_VERSION_ANY; $app->{Enabled} = 0; #' Use this line if you want to add the app, but disabled. #'app.Enabled = FALSE $app->{Enabled} = 1; #On Error Resume Next #errornum = 0 $errornum = 0; #profile.AuthorizedApplications.Add app $profile->AuthorizedApplications->Add($app); #errornum = Err.Number $errornum = 0 + Win32::OLE->LastError(); #if errornum <> 0 then Wscript.Echo("Adding authorized application failed with: " & errornum) if ($errornum != 0) { print "Adding authorized application failed with: $errornum"; }