Is there a way to detect whether there is an antivirus software installed in a machine using C#? I know the Security Center detects antivirus software but how can you detect that in C#?And how to turn it off and on in C#?
Asked
Active
Viewed 2,210 times
2 Answers
5
How to detect it: See the following question: Detect Antivirus on Windows using C#
How to turn it off and on: As far as I know, there is no simple, common way to turn off anti-virus software. And that's a good thing! Turning off anti-virus software should always be a conscious choice of the user (or the administrator in a corporate environment) and not be something that can be done easily by a third-party product.
-
Yeah... Imagine the malware you (accidentially) installed from the internet could do something like that... – Nuffin Mar 29 '12 at 06:38
-
@Heinzi thanks for the link . But it tells only that antivirus is installed or not ? Can we code in such a way that we can get the name of antivirus installed too. – user1297661 Mar 29 '12 at 06:47
-
@user1297661: Instead of just checking `instances.Count`, you can read the `displayName` property of the `AntiVirusProduct` record. See this page for a code example: http://www.codeproject.com/Articles/37714/Software-Development-Build-your-own-Windows-Securi – Heinzi Mar 29 '12 at 07:37
-
Is it possible to decide wheter it is enabled. If I turn off for 10 minutes my antivirus software, the above link still says it is installed. I wan't to know if it is Enabled – Tomi Feb 15 '17 at 19:40
0
To return AntiVirus name as string:
public static string Antivirus()
{
try
{
string firewallName = string.Empty;
// starting with Windows Vista we must use the root\SecurityCenter2 namespace
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(@"\\" + Environment.MachineName + @"\root\SecurityCenter2", "Select * from AntivirusProduct"))
{
foreach (ManagementObject mObject in searcher.Get())
{
firewallName += mObject["displayName"].ToString() + "; ";
}
}
firewallName = RemoveLastChars(firewallName);
return (!string.IsNullOrEmpty(firewallName)) ? firewallName : "N/A";
}
catch
{
return "Unknown";
}
}
public static string RemoveLastChars(string input, int amount = 2)
{
if (input.Length > amount)
input = input.Remove(input.Length - amount);
return input;
}

BBitar
- 1
-
Your answer could be improved with additional supporting information. Please [edit] to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers [in the help center](/help/how-to-answer). – Community Dec 03 '21 at 19:08