You might be able to use the WMI to detect if the firewall software is running (though I don't know if this detects all firewalls, and it may only work on XP+):

VB6 Code:
VB Code:
  1. Private Sub DumpFirewallInfo()
  2.  
  3. Dim oLocator    As WbemScripting.SWbemLocator
  4. Dim oService    As WbemScripting.SWbemServicesEx
  5. Dim oFirewalls  As WbemScripting.SWbemObjectSet
  6. Dim oFirewall   As WbemScripting.SWbemObjectEx
  7. Dim oFwMgr      As Variant
  8.    
  9.    
  10.     Set oFwMgr = CreateObject("HNetCfg.FwMgr")
  11.    
  12.     Debug.Print "Checking the Windows Firewall..."
  13.     Debug.Print "Windows Firewal Enabled: " & oFwMgr.LocalPolicy.CurrentProfile.FirewallEnabled
  14.     Debug.Print ""
  15.    
  16.     Set oFwMgr = Nothing
  17.    
  18.    
  19.     Debug.Print "Checking for other installed firewalls..."
  20.    
  21.     Set oLocator = New WbemScripting.SWbemLocator
  22.     Set oService = oLocator.ConnectServer(".", "root\SecurityCenter")
  23.     oService.Security_.ImpersonationLevel = 3
  24.  
  25.     Set oFirewalls = oService.ExecQuery("SELECT * FROM FirewallProduct") ' This could also be "AntivirusProduct"
  26.    
  27.     For Each oFirewall In oFirewalls
  28.         Debug.Print "Company:       " & vbTab & oFirewall.CompanyName
  29.         Debug.Print "Firewall Name: " & vbTab & oFirewall.DisplayName
  30.         Debug.Print "Enabled:       " & vbTab & Format$(oFirewall.Enabled)
  31.         Debug.Print "Version:       " & vbTab & oFirewall.versionNumber
  32.         Debug.Print ""
  33.     Next oFirewall
  34.    
  35.     Set oFirewall = Nothing
  36.     Set oFirewalls = Nothing
  37.     Set oService = Nothing
  38.     Set oLocator = Nothing
  39.  
  40. End Sub
  41.  
  42. Private Sub Command1_Click()
  43. DumpFirewallInfo
  44. End Sub

Credit where credit is due: http://www.experts-exchange.com/Prog..._21645145.html