Страницы

Поиск по вопросам

среда, 17 апреля 2019 г.

Как получить название антивируса в переменную C#

Как получить название антивируса в переменную на языке C#


Ответ

Если пользоваться WMI, то можно сделать так:
var searcher = new ManagementObjectSearcher("root\\SecurityCenter2", "SELECT * FROM AntiVirusProduct");
// это цикл по найденным антивирусам foreach (ManagementObject queryObj in searcher.Get()) { string displayName = (string)queryObj["displayName"]; // имя Console.WriteLine($"Antivirus: {displayName}");
uint productState = (uint)queryObj["productState"]; uint secutityProvider = (productState & 0xff0000) >> 16; // что умеет
Console.Write("Security provider:"); if ((secutityProvider & 1) != 0) Console.Write(" firewall"); if ((secutityProvider & 2) != 0) Console.Write(" autoupdate settings"); if ((secutityProvider & 4) != 0) Console.Write(" antivirus"); if ((secutityProvider & 8) != 0) Console.Write(" antispyware"); if ((secutityProvider & 16) != 0) Console.Write(" internet settings"); if ((secutityProvider & 32) != 0) Console.Write(" user account control"); if ((secutityProvider & 64) != 0) Console.Write(" service"); Console.WriteLine();
uint realtimeStatus = (productState & 0xff00) >> 8; // realtime-защита Console.Write("Realtime status: "); switch (realtimeStatus) { case 0x00: Console.WriteLine("off"); break; case 0x01: Console.WriteLine("expired"); break; case 0x10: Console.WriteLine("on"); break; case 0x11: Console.WriteLine("snoozed"); break; default: Console.WriteLine("unknown"); break; }
uint signatureStatus = (productState & 0xff); // состояние сигнатур Console.Write("Signature status: "); switch (signatureStatus) { case 0x00: Console.WriteLine("up to date"); break; case 0x10: Console.WriteLine("oout of date"); break; default: Console.WriteLine("unknown"); break; } }
Источник: https://gallery.technet.microsoft.com/scriptcenter/Get-the-status-of-4b748f25
Если вам нужно только имя, и вы уверены, что антивирус на системе ровно один, можно упростить до
string name = (string) (new ManagementObjectSearcher("root\\SecurityCenter2", "SELECT * FROM AntiVirusProduct") .Get().Cast().Single()["displayName"]);

Комментариев нет:

Отправить комментарий