C#を使用してコンピュータにウイルス対策ソフトウェアがインストールされているかどうかを検出する方法はありますか?私はセキュリティセンターがウイルス対策ソフトウェアを検出することを知っていますが、C#でそれをどのように検出できますか?C#を使用してWindows上でウイルス対策ソフトウェアを検出する
答えて
マイクロソフトによると、Windowsセキュリティセンターでは、2段階のアプローチで検出ステータスが使用されています。 1つのティアは手動であり、もう1つのティアはWMI(Windows Management Instrumentation)を通じて自動です。手動検出モードでは、Windowsセキュリティセンターは独立したソフトウェアメーカーによってMicrosoftに提供されるレジストリキーとファイルを検索します。これらのレジストリキーとファイルを使用すると、Windowsセキュリティセンターは独立したソフトウェアの状態を検出できます。 WMIモードでは、ソフトウェア製造元が独自の製品ステータスを判断し、そのステータスをWMIプロバイダを介してWindowsセキュリティセンターに報告します。どちらのモードでも、Windowsセキュリティセンターは以下の条件が満たされているかどうかを確認しようとします。
ウイルス対策プログラムが存在します。
ウイルス対策シグネチャは最新です。
ウイルス対策プログラムのリアルタイムスキャンまたはオンアクセススキャンがオンになっています。
ファイアウォールの場合、Windowsセキュリティセンターは、サードパーティのファイアウォールがインストールされているかどうか、およびファイアウォールが有効かどうかを検出します。
だから、ウイルス対策ソフトウェアの存在を決定するために、あなたは(Windows Vistaの始まるあなたはroot\SecurityCenter2
名前空間を使用する必要があります)root\SecurityCenter
名前空間に接続するWMIを使用することができ、その後、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();
}
}
}
で
ルックWMIクエリは、VistaのSP2にし、超えて少し変化します。
は、結果が同様に若干異なりますSecurityCenter2 の代わりに、\ルートの\ SecurityCenterの\この部分の\のルートを試してみてください。表示名を取得することはできますが、ProductStateフィールドのビットマスキングを少し行い、onAccessScannerが有効か無効か、upToDateの種類の情報かを判断する必要があります。
C:\Windows\System32\wbem\wscenter.mof
をメモ帳で開く。これは、名前空間とクラスが存在するのに役立ちます:
C#のクエリ: wscenter.mof
// SELECT * FROM AntiVirusProduct
// SELECT * FROM FirewallProduct
// SELECT * FROM AntiSpywareProduct
ManagementObjectSearcher wmiData = new ManagementObjectSearcher(@"root\SecurityCenter2", "SELECT * FROM AntiVirusProduct");
ManagementObjectCollection data = wmiData.Get();
foreach (ManagementObject virusChecker in data)
{
var virusCheckerName = virusChecker["displayName"];
}
:
#pragma autorecover
#pragma classflags(64)
#pragma namespace("\\\\.\\root")
[NamespaceSecuritySDDL("O:S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464G:S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464D:(A;CI;0x1;;;BU)(A;CI;0x1;;;BA)(A;CI;0x1;;;NS)(A;CI;0x1;;;LS)(A;CI;0x1;;;AU)(A;CI;0x6001D;;;S-1-5-80-3232712927-1625117661-2590453128-1738570065-3637376297)")]
Instance of __namespace
{
Name = "SecurityCenter";
};
[NamespaceSecuritySDDL("O:S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464G:S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464D:(A;CI;0x1;;;BU)(A;CI;0x1;;;BA)(A;CI;0x1;;;NS)(A;CI;0x1;;;LS)(A;CI;0x1;;;AU)(A;CI;0x6001D;;;S-1-5-80-3232712927-1625117661-2590453128-1738570065-3637376297)")]
Instance of __namespace
{
Name = "SecurityCenter2";
};
#pragma namespace("\\\\.\\root\\SecurityCenter")
class AntiVirusProduct
{
[key,Not_Null] string instanceGuid;
[Not_Null] string displayName;
[Not_Null] boolean productUptoDate;
boolean onAccessScanningEnabled;
boolean productHasNotifiedUser;
boolean productWantsWscNotifications;
uint8 productState;
string companyName;
string versionNumber;
string pathToSignedProductExe;
};
class FirewallProduct
{
[key,Not_Null] string instanceGuid;
[Not_Null] string displayName;
boolean enabled;
boolean productHasNotifiedUser;
boolean productWantsWscNotifications;
uint8 productState;
string companyName;
string versionNumber;
string pathToSignedProductExe;
};
class AntiSpywareProduct
{
[key,Not_Null] string instanceGuid;
[Not_Null] string displayName;
[Not_Null] boolean productUptoDate;
boolean productEnabled;
boolean productHasNotifiedUser;
boolean productWantsWscNotifications;
uint8 productState;
string companyName;
string versionNumber;
string pathToSignedProductExe;
};
#pragma namespace("\\\\.\\root\\SecurityCenter2")
class AntiVirusProduct
{
[key,Not_Null] string instanceGuid;
[Not_Null] string displayName;
[Not_Null] string pathToSignedProductExe;
[Not_Null] string pathToSignedReportingExe;
[Not_Null] uint32 productState;
string timestamp;
};
class FirewallProduct
{
[key,Not_Null] string instanceGuid;
[Not_Null] string displayName;
[Not_Null] string pathToSignedProductExe;
[Not_Null] string pathToSignedReportingExe;
[Not_Null] uint32 productState;
string timestamp;
};
class AntiSpywareProduct
{
[key,Not_Null] string instanceGuid;
[Not_Null] string displayName;
[Not_Null] string pathToSignedProductExe;
[Not_Null] string pathToSignedReportingExe;
[Not_Null] uint32 productState;
string timestamp;
};
#pragma autorecover
- 1. APIを使用したWindows Server 2008のウイルス対策ソフトウェア
- 2. 私のC#アプリケーションをGen.Variant.Zusyとして検出するウイルス対策ソフトウェア
- 3. ウイルス対策ソフトウェアをオン/オフにする
- 4. WMIを使用してWindows上でウイルス対策を検出する - どの名前空間ですか?
- 5. SQL Server 2005とウイルス対策ソフトウェア
- 6. WindowsのZLIB:gzopen/gzwrite/gzcloseは、誤って去勢された出力ファイル/ウイルス対策ソフトウェアを生成しますか?
- 7. ウイルス対策ホワイトリスト
- 8. VB6プロジェクト用の高度なインストーラがウイルス対策ソフトウェアによって検出されました
- 9. バッチからウイルス対策ソフトウェアがインストールされているかどうかを自動的に検出
- 10. Powershell:インストールされているウイルス対策ソフトウェアを見つけ、Windows Defenderを除外します。
- 11. Androidのウイルス対策
- 12. ウイルス対策プロセスの駆除?
- 13. デベロッパーマシン用のウイルス対策(Symantec Endpoint)設定
- 14. 要求がウイルス対策から来たかどうかを検出する
- 15. C#他のプログラムが開かれているかどうかを検出する(ウイルス対策のような)
- 16. ウイルス対策の問題なしで.NET Windowsサービスをインストールする方法
- 17. Windows 2008 R2のウイルス対策状態データの収集
- 18. ウイルス対策プログラムはどのようにしてEICARテストウイルスを検出しますか?
- 19. AVCウイルス対策でウェブカメラを無効にしました
- 20. ウイルス対策NDISフィルタの削除
- 21. セキュリティ - ウイルス対策とEDRの違い
- 22. プログラムとのウイルス対策の衝突
- 23. aws s3でウイルス対策スキャンを実行する方法
- 24. 特定のフォルダでウイルス対策を無効にしてVisual Studioのパフォーマンスを向上させる方法
- 25. 任意のアイデアWindowsアプリケーションとそのWindowsサービスを作成する方法は?ウイルス対策のように。 NET
- 26. C#アプリケーションがウイルスとして検出されました
- 27. 仮想マシンにウイルス対策などが必要ですか?
- 28. 多型ウイルスと変態ウイルスを検出する技術?
- 29. Javaでアップロードするとウイルス対策ファイルをスキャンする方法は?
- 30. C#でOnSessionChangeを使用してWindowsログオンイベントを検出する方法
かどうかを知るためにどのような方法がありますwindows [email protected]のシステム上でウイルス対策ソフトウェアが更新されます。 ng.47 – TechBrkTru
WMIを使用できます。 [ここ](http://social.msdn.microsoft.com/Forums/en-US/windowssecurity/thread/bd97d9e6-75c1-4f58-9573-9009df5de19b)を参照してください。 – SLaks