Обнаружьте Антивирус в Windows с помощью [закрытого] C#

Вот пример создания пункта меню Quicklist типа Флажка:

    # Create toggle-able menu item for urgency
    urgent_menu_item = Dbusmenu.Menuitem.new ()

    # Set the tab's name as the menu item's name
    urgent_menu_item.property_set (Dbusmenu.MENUITEM_PROP_LABEL, _('Urgent'))

    # Make the menu item toggle-able
    urgent_menu_item.property_set(Dbusmenu.MENUITEM_PROP_TOGGLE_TYPE, Dbusmenu.MENUITEM_TOGGLE_CHECK)
    urgent_menu_item.property_set_int(Dbusmenu.MENUITEM_PROP_TOGGLE_STATE, Dbusmenu.MENUITEM_TOGGLE_STATE_UNCHECKED)
    urgent_menu_item.connect('item_activated', self.urgent_menu_item_activated)

    # Make the menu item visible
    urgent_menu_item.property_set_bool (Dbusmenu.MENUITEM_PROP_VISIBLE, True)

    # Add the section's menu item to the Quicklist menu
    quicklist.child_append(urgent_menu_item)

И вот один для того, чтобы сделать Радио-пункт меню Quicklist типа:

        # Create a new item for this section
        section_menu_item = Dbusmenu.Menuitem.new ()

        # Set the tab's name as the menu item's name
        section_menu_item.property_set (Dbusmenu.MENUITEM_PROP_LABEL, tab_name)

        # Make the menu item toggle-able
        section_menu_item.property_set(Dbusmenu.MENUITEM_PROP_TOGGLE_TYPE, Dbusmenu.MENUITEM_TOGGLE_RADIO)

        # Make the menu item visible
        section_menu_item.property_set_bool (Dbusmenu.MENUITEM_PROP_VISIBLE, True)

        # When the menu item is clicked, make it call menu_item_activated
        # with the tab id, which is used to make that the active tab
        section_menu_item.connect('item_activated', self.section_menu_item_activated, tab_id)

        # Add the section's menu item to the Quicklist menu
        quicklist.child_append(section_menu_item)
19
задан Adriaan 31 October 2017 в 16:03
поделиться

1 ответ

Согласно Microsoft, Центр безопасности Windows использует двухуровневый подход для определения статуса. Один уровень является ручным, а другой - автоматическим с помощью инструментария управления Windows (WMI). В ручном режиме обнаружения Центр обеспечения безопасности Windows выполняет поиск ключей и файлов реестра, предоставленных Microsoft независимыми производителями программного обеспечения. Эти ключи и файлы реестра позволяют Центру обеспечения безопасности Windows определять статус независимого программного обеспечения. В режиме WMI производители программного обеспечения определяют статус своего продукта и сообщают об этом статусе в Центр обеспечения безопасности Windows через поставщика WMI. В обоих режимах Центр обеспечения безопасности Windows пытается определить, верно ли следующее:

Присутствует антивирусная программа.

Сигнатуры антивируса актуальны.

Для антивирусных программ включено сканирование в реальном времени или сканирование при доступе.

Для брандмауэров Windows Security Center определяет, установлен ли брандмауэр стороннего производителя и включен ли брандмауэр.

Таким образом, чтобы определить наличие антивирусного программного обеспечения, вы можете использовать WMI для подключения к пространству имен root \ SecurityCenter (начиная с Windows Vista необходимо использовать пространство имен root \ SecurityCenter2 ), а затем запросить AntiVirusProduct Класс WMI.

Взгляните на этот пример кода

using System;
using System.Text;
using System.Management;

namespace ConsoleApplication1
{
  class Program
  {
    public static bool AntivirusInstalled()
    {

      string wmipathstr = @"\\" + Environment.MachineName + @"\root\SecurityCenter";
      try
      {
        ManagementObjectSearcher searcher = new ManagementObjectSearcher(wmipathstr, "SELECT * FROM AntivirusProduct");
        ManagementObjectCollection instances = searcher.Get();
        return instances.Count > 0;
      }

      catch (Exception e)
      {
        Console.WriteLine(e.Message);
      }

      return false;
    } 

    public static void Main(string[] args)
    {
      bool returnCode = AntivirusInstalled();
      Console.WriteLine("Antivirus Installed " + returnCode.ToString());
      Console.WriteLine();
      Console.Read();
    }

  }
}
33
ответ дан 30 November 2019 в 03:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: