Как зарегистрировать мое приложение Winforms как антивирус в WMI, используя C#?

Последние несколько месяцев я создавал антивирусное приложение, используя ClamAV, приложение работает нормально.

У меня есть другое программное обеспечение, которое обнаруживает на компьютере Security, Spywares и Firewall. При запуске сканирования он обнаруживает ESAT Smart Security 8.0, который уже установлен на моем компьютере, а моего антивируса нет в списке. Проведя некоторые исследования, я обнаружил, что этот кусок кода обнаруживает наличие антивируса в машине.

ManagementObjectSearcher managementObjectSearcher = new ManagementObjectSearcher(@"\\MyMachineName\root\SecurityCenter2", "SELECT * FROM AntivirusProduct");
ManagementObjectCollection objectCollection = managementObjectSearcher.Get();
string DisplayName = String.Empty;
 if (managementObjectSearcher.Get().Count > 0)
 {
    foreach (ManagementObject managementObject in managementObjectSearcher.Get())
        {

            DisplayName = managementObject["displayName"].ToString();

        }
 }

Теперь я считаю, что для того, чтобы мое приложение выглядело как антивирус, мне нужно было бы сделать несколько записей в SecurityCenter2 или WMI. Я попробовал следующий код, чтобы добиться этого

public static void RegisterAsAntivirus()
        {
            string computer = Environment.MachineName;
            string wmipath = @"\\" + computer + @"\root\SecurityCenter2";

            ManagementScope oScope = new ManagementScope(wmipath);
            oScope.Connect();
            ManagementPath oPath = new ManagementPath("AntivirusProduct");
            ObjectGetOptions oGetOp = new ObjectGetOptions();
            ManagementClass oProcess = new ManagementClass(oScope, oPath, oGetOp);
            PropertyDataCollection p = oProcess.Properties;

            // Obtain in-parameters for the method
            oProcess.SetPropertyValue("displayName", "antivirusname");
            oProcess.SetPropertyValue("instanceGuid", "guid");
            oProcess.SetPropertyValue("pathToSignedProductExe", @"path");
            oProcess.SetPropertyValue("pathToSignedReportingExe", "");
            oProcess.SetPropertyValue("productState", 266240);
            oProcess.Put();
        }

Но даже приведенные выше строки кода не работают для меня. И я все еще на том же уровне. Любая помощь в этом аспекте будет очень признателен.

Моя машина работает под управлением Windows 7, а C# - мой язык программирования.

0 ответов

Другие вопросы по тегам