Проверьте наличие сторонних брандмауэров на компьютере

Я работаю над проверкой брандмауэров. Следующий код довольно легко проверяет состояние брандмауэра 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;
   }

Тогда возникает вопрос: как мне узнать состояние брандмауэра, отличного от Windows? Если брандмауэр правильно интегрирован, будет ли вышеуказанная проверка работать так же, или есть лучший способ сделать это? Я проверил этот пост:C # Настройки Центра безопасности Windows и этот пост:Как проверить, если внешний брандмауэр включен? но оба оказались относительно бесполезными.

Я смотрел на API WMI, но это довольно запутанно, и документация через MSDN не 'Это было слишком многообещающе. Я также пытался возиться сSelectQuery но до сих пор у меня не получилось. Может ли кто-нибудь помочь мне в новой отправной точке или где я мог бы найти лучшую документацию / инструкции, касающиеся сторонних брандмауэров?

РЕДАКТИРОВАТЬ: В настоящее время я изучаю WMI, в частности, классFirewallProduct как предложено сообщением.

ОБНОВЛЕНИЕ 2: Я тестировал следующий фрагмент:

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

Но выполнение этого приводит к следующей ошибке:Exception Invalid namespace и это указывает на строку 39 (scope.Connect()). Я бы совсем не удивился, если бы я просто пропустил параметр или отформатировал что-то неправильно, я просто нене знаю, что это такое.

ОБНОВЛЕНИЕ 3 Переключение сSecurityCenter2 вSecurityCenter все еще дает то же самоеinvalid namespace ошибка.

ОБНОВЛЕНИЕ 4 Я переместил консольное приложение в другое окно (win7, а не winserver08r2), и оно правильно отчиталось, как и ожидалось. Так что это может быть проблема с виртуальной машиной, на которой я сейчас тестирую. Следующим шагом является анализ активного / неактивного статуса.

ОБНОВЛЕНИЕ 5 Он был протестирован на другой коробке Server08 и той жеinvalid namespace появляется ошибка С помощьюSecurityCenter вместоSecurityCenter2 не решает проблему. Есть ли какая-то базовая функция безопасности ОС Windows Server 'использовать, чтобы предотвратить вмешательство в брандмауэры, или сделать серверную ОСне поставляется с определенным набором ключей функций WMI?

Ответы на вопрос(1)

Ваш ответ на вопрос