Verifique se há firewalls de terceiros em uma máquina

Eu estou trabalhando em fazer uma verificação de firewalls. O código a seguir verifica facilmente o status do Firewall do Windows padrão:

    INetFwMgr manager = GetFireWallManager();
    bool isFirewallEnabled = manager.LocalPolicy.CurrentProfile.FirewallEnabled;
    if (isFirewallEnabled == false)
    {
      Console.WriteLine("Firewall is not enabled.");
    }
    else
    {
      Consoe.WriteLine("Firewall is enabled.");
    }
    Console.ReadLine();

   private static INetFwMgr GetFireWallManager()
   {
     Type objectType = Type.GetTypeFromCLSID(new Guid(firewallGuid));
     return Activator.CreateInstance(objectType) as INetFwMgr;
   }

A pergunta então é: Como encontro o status de um Firewall que não seja do Windows? Se o Firewall estiver corretamente integrado, a verificação acima funcionará da mesma forma ou haverá um método melhor para isso? Eu verifiquei este post:C # Configurações da Central de Segurança do Windows e este post:Como verificar se o firewall externo está ativado? mas ambos se mostraram relativamente inúteis.

Eu tenho procurado na API da WMI, mas até agora é bem confuso, e a documentação via MSDN não tem sido muito promissora. Eu também tentei mexer comSelectQuery mas até agora eu não tive sucesso. Alguém pode me ajudar em um novo ponto de partida ou onde eu possa encontrar melhor documentação / instruções sobre Firewalls de Terceiros?

EDITAR: Atualmente estou explorando ainda mais o WMI, especificamente a classeFirewallProduct como sugerido por um post.

ATUALIZAÇÃO 2: Eu tenho testado o seguinte trecho:

  string wmiNameSpace = "SecurityCenter2";
  ManagementScope scope;
  scope = new ManagementScope(String.Format("\\\\{0}\\root\\{1}", "localhost", wmiNameSpace), null);
  scope.Connect();
  ObjectQuery query = new ObjectQuery("SELECT * FROM FirewallProduct");
  ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);

Mas executando isso resulta no seguinte erro:Exception Invalid namespace e aponta para a linha 39 (scope.Connect()). Eu não ficaria surpreso se eu simplesmente perdesse um parâmetro ou formatasse algo de forma inadequada, eu simplesmente não sei o que é.

ATUALIZAÇÃO 3 Mudando deSecurityCenter2 paraSecurityCenter ainda produz o mesmoinvalid namespace erro.

ATUALIZAÇÃO 4 Mudei o aplicativo do console para uma caixa diferente (win7 not winserver08r2) e ele foi relatado corretamente conforme o esperado. Por isso, pode ser um problema com a VM que atualmente estou testando. O próximo passo é analisar o status ativo / inativo

ATUALIZAÇÃO 5 Foi testado em outra caixa Server08 e o mesmoinvalid namespace erro aparece. UsandoSecurityCenter ao invés deSecurityCenter2 não resolve o problema. Existe algum recurso de segurança subjacente que o Windows Server OS use para impedir a falsificação de Firewalls ou o Sistema Operacional do Servidor não vem com um conjunto de chaves específico de recursos do WMI?

questionAnswers(1)

yourAnswerToTheQuestion