Ответ 1
В соответствии с Microsoft В: Как работает Windows Центр безопасности обнаруживает сторонние продукты и их статус?
А: Центр безопасности Windows использует двухуровневый подход для обнаружения положение дел. Один уровень - ручной, а другой уровень - через Инструментарий управления Windows (WMI). В режиме ручного обнаружения, Центр безопасности Windows выполняет поиск ключей и файлов реестра, которые предоставляемые Microsoft независимыми производителями программного обеспечения. Эти ключи реестра и файлы позволяют Центру безопасности Windows определить статус независимого программного обеспечения. В режиме WMI производители программного обеспечения определяют их собственный статус продукта и сообщить о статусе в Windows Центр безопасности через поставщика WMI. В обоих режимах Windows Центр безопасности пытается определить, верно ли следующее:
- Имеется антивирусная программа.
- Антивирусные сигнатуры являются актуальными.
- В антивирусных программах включено сканирование в режиме реального времени или сканирование при доступе.
- Для брандмауэров Центр безопасности Windows определяет, установлен ли сторонний межсетевой экран, и брандмауэр включен или нет.
Таким образом, вы можете использовать WMI, чтобы определить, установлен ли сторонний брандмауэр, используя класс FirewallProduct
, когда-то я написал статью об этом теме, которая объясняет, как получить эту информацию с помощью WMI.
Попробуйте этот образец С#, чтобы получить текущее имя и состояние брандмауэра сторонних производителей.
using System;
using System.Collections.Generic;
using System.Management;
using System.Text;
namespace GetWMI_Info
{
class Program
{
static void Main(string[] args)
{
try
{
//select the proper wmi namespace depending of the windows version
string WMINameSpace = System.Environment.OSVersion.Version.Major > 5 ? "SecurityCenter2" : "SecurityCenter";
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);
foreach (ManagementObject WmiObject in Searcher.Get())
{
Console.WriteLine("{0,-35} {1,-40}","Firewall Name",WmiObject["displayName"]);
if (System.Environment.OSVersion.Version.Major < 6) //is XP ?
{
Console.WriteLine("{0,-35} {1,-40}","Enabled",WmiObject["enabled"]);
}
else
{
Console.WriteLine("{0,-35} {1,-40}","State",WmiObject["productState"]);
}
}
}
catch (Exception e)
{
Console.WriteLine(String.Format("Exception {0} Trace {1}",e.Message,e.StackTrace));
}
Console.WriteLine("Press Enter to exit");
Console.Read();
}
}
}