Sprawdź zapory innych firm na maszynie

Pracuję nad sprawdzeniem zapór ogniowych. Poniższy kod dość łatwo sprawdza status domyślnej Zapory systemu Windows:

    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;
   }

Pojawia się pytanie: Jak znaleźć status Zapory innej niż Windows? Jeśli Zapora sieciowa jest poprawnie zintegrowana, czy powyższy sprawdzian będzie działał tak samo lub czy istnieje lepsza metoda na wykonanie tego? Sprawdziłem ten post:Ustawienia C # Centrum zabezpieczeń systemu Windows i ten post:C # - Jak sprawdzić, czy włączona jest zewnętrzna zapora? ale obie okazały się stosunkowo nieprzydatne.

Przeglądałem API WMI, ale jak dotąd jest to dość mylące, a dokumentacja za pośrednictwem MSDN nie była zbyt obiecująca. Próbowałem też się bawićSelectQuery ale jak dotąd nie udało mi się. Czy ktoś może mi pomóc w nowym punkcie wyjścia lub miejscu, w którym mogę znaleźć lepszą dokumentację / instrukcje dotyczące zapór innych firm?

EDYTOWAĆ: Obecnie zajmuję się dalej WMI, a konkretnie klasąFirewallProduct jak sugeruje post.

AKTUALIZACJA 2: Testowałem następujący fragment kodu:

  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);

Ale uruchomienie tego powoduje następujący błąd:Exception Invalid namespace i wskazuje na linię 39 (scope.Connect()). Nie byłbym wcale zaskoczony, gdybym po prostu pominął jakiś parametr lub nieprawidłowo sformatował coś, po prostu nie wiem, co to jest.

AKTUALIZACJA 3 Zmiana zSecurityCenter2 doSecurityCenter wciąż daje to samoinvalid namespace błąd.

AKTUALIZACJA 4 Przeniosłem aplikację konsoli do innego pudełka (win7, a nie winserver08r2) i poprawnie zgłosiłem to zgodnie z oczekiwaniami. Może to być problem z maszyną wirtualną, na której obecnie testowałem. Następnym krokiem jest przeanalizowanie stanu aktywnego / nieaktywnego

AKTUALIZACJA 5 Został przetestowany na innym polu Server08 i tym samyminvalid namespace pojawia się błąd. Za pomocąSecurityCenter zamiastSecurityCenter2 nie rozwiązuje problemu. Czy istnieje jakaś podstawowa funkcja zabezpieczeń, której system operacyjny Windows Server używa, aby zapobiec manipulacjom przy użyciu zapór ogniowych, czy też system operacyjny serwera nie zawiera konkretnego zestawu funkcji WMI?

questionAnswers(1)

yourAnswerToTheQuestion