Danial.H Ответов: 4

Получение информации об антивирусном продукте в C# на платформе x64 с помощью WMI


Привет,

На самом деле это мой первый пост, и я новичок в этом деле. C#.NET Программирование. Я искал по всему MSDN и интернету, но не мог найти ответа.

Я пишу небольшую программу, чтобы показать пользователю информацию о антивирусе, установленном на его машине Windows 7 или Vista x64.

Я пытаюсь обнаружить "Kaspersky internet security", который находится на моей собственной машине.(Windows 7 x64).kaspersky-это WMI, зарегистрированный как в антивирусе, так и в internet security и antispy.

Я нашел этот пост - http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/d555f390-dd75-4604-b653-df0a9f4c2fa3/,
но это не сработало для x64. Похоже, что путь к "корень безопасности\"отличается в x64 версии Windows или что-то в этом роде.

Следующий код работает для 32-разрядной версии Windows XP, Но не для 7 x64.

Есть идеи?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Management;

namespace WindowsFormsApplication1
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
      label1.Text = "Company =" + Antivirus("companyName");
      label2.Text = "Name =" + Antivirus("displayName");
    }
    private string Antivirus(string type)
    {
      string computer = Environment.MachineName;
      string wmipath = @"\\" + computer + @"\root\SecurityCenter";
      try
      {
        ManagementObjectSearcher searcher = new ManagementObjectSearcher(wmipath,
          "SELECT * FROM AntivirusProduct");
        ManagementObjectCollection instances = searcher.Get();
        //MessageBox.Show(instances.Count.ToString()); 
        foreach (ManagementObject queryObj in instances)
        {
          return queryObj[type].ToString();
        }
      }

      catch (Exception e)
      {
        MessageBox.Show(e.Message);
      }

      return null;
    }  
  }
}

priyanmuthu

Кроме того, как узнать, является ли антивирус современным?

4 Ответов

Рейтинг:
2

turnaemir

строка wmipathstr = @"\\" + Environment.MachineName + @"\root\SecurityCenter2";

он работает на моем win 7

:)


Рейтинг:
2

Danial.H

Windows 7-это то место, где я пытался получить какой-то результат.

Судя по тому, что я искал, похоже, что Windows Vista/7 больше не поддерживает такого рода запросы.

Код все еще работает под XP.


Рейтинг:
2

Danial.H

Да, это сработало! Большое спасибо, приятель.
Так что похоже вам просто нужно поставить securitycenter2 вместо securitycenter и все работает нормально.


Рейтинг:
0

ganga26

Всем привет,

Даже я застрял здесь с ошибкой "недопустимое пространство имен".
мой код извлекает сведения о текущей среде, но когда я пытаюсь получить антивирусные обновления удаленного сервера, он выдает исключение: недопустимое пространство имен
пожалуйста, помогите(все серверы работают под управлением windows xp)