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. WMIを使用してWindows上でウイルス対策を検出する - どの名前空間ですか?
- 3. ウイルス対策ソフトウェアをオン/オフにする
- 4. SQL Server 2005とウイルス対策ソフトウェア
- 5. WindowsのZLIB:gzopen/gzwrite/gzcloseは、誤って去勢された出力ファイル/ウイルス対策ソフトウェアを生成しますか?
- 6. ウイルス対策プロセスの駆除?
- 7. デベロッパーマシン用のウイルス対策(Symantec Endpoint)設定
- 8. ウイルス対策の問題なしで.NET Windowsサービスをインストールする方法
- 9. Windows 2008 R2のウイルス対策状態データの収集
- 10. ウイルス対策プログラムはどのようにしてEICARテストウイルスを検出しますか?
- 11. 特定のフォルダでウイルス対策を無効にしてVisual Studioのパフォーマンスを向上させる方法
- 12. C#アプリケーションがウイルスとして検出されました
- 13. 仮想マシンにウイルス対策などが必要ですか?
- 14. 多型ウイルスと変態ウイルスを検出する技術?
- 15. Javaでアップロードするとウイルス対策ファイルをスキャンする方法は?
- 16. Javascriptオブジェクトで自動ウイルス対策をサポートするライブラリはありますか?
- 17. Windows上でC++を使用してファイルをロックする
- 18. Windowsでオーディオを使用してプロセスを検出する
- 19. Pythonを使用してWindowsでマウスのクリックを検出する
- 20. C++を搭載したWindows上でシステムオンチップ(SOC)プラットフォームを検出
- 21. DDCを使用して、Windows上のVGAモニタを検出しますか?
- 22. Obj Cを使用してiPhone対iPhone 3Gを検出するには
- 23. オンラインではなくソフトウェアの同時使用を検出する
- 24. Win 7のWindows XPモード - ウイルス対策ソフトをインストールする必要はありますか?
- 25. ウイルス対策のようなプロセス自己防衛
- 26. 保護されたウイルス対策プロセスの終了
- 27. ウイルス対策情報を取得するためのWMIのwqlクエリ
- 28. NAudioでC#を使用してピアノノートを検出する
- 29. WindowsシャットダウンをC#で検出する
- 30. Windows上でのビデオオーバーレイ(C#?を使用)
かどうかを知るためにどのような方法がありますwindows [email protected]のシステム上でウイルス対策ソフトウェアが更新されます。 ng.47 – TechBrkTru
WMIを使用できます。 [ここ](http://social.msdn.microsoft.com/Forums/en-US/windowssecurity/thread/bd97d9e6-75c1-4f58-9573-9009df5de19b)を参照してください。 – SLaks