Detect the Firewall/Antivirus Product
(설치된 방화벽/안티바이러스 확인하기)


Intro

 네트워크 프로그램을 개발하다보면, 항상 문제가 되는 것이 바로 '방화벽' 입니다.
우리가 아는 것 이상으로 사용자들은 방화벽에 대해서 모르는 것 같습니다.
대부분 잘 되던 프로그램이 다른 PC 에서 안된다면, 1차적으로 확인해야 하는 것이 바로 이것이죠.

이런 이유로 프로그램 시작시 혹은, 네트워크 문제가 발생하였을 경우 관련된 정보를 사용자에게 제공하는 것이 중요합니다.
"V3 의 방화벽 설정을 확인하십시오" 라든지.. 뭐 그런~

이번 시간에는 3rd-Party의 방화벽, 그리고 백신 프로그램의 설치 유무를 확인하는 방벙에 대해서 알아보도록 하겠습니다.
자동으로 윈도우 방화벽의 예외리스트에 포트를 등록하는 방법은 이전 포스트를 참고하시기 바랍니다.

http://crystalcube.co.kr/entry/윈도우-방화벽-해제하는-방법


Contents

눈치가 빠르신 분들은 어떤 방식으로 이 문제를 해결 할 수 있을지 아실거라고 생각합니다.
바로 WMI 를 사용하는 것입니다. :)

코드가 간단하므로, 별도의 설명은 생략하도록 하겠습니다.
Status 나 기타 정보는 구글링 해 보시기 바랍니다.


Code

※ 필요한 참조
 - System.Management.dll

※ 필요한 NameSpace
 - System.Management


  [AntiVirus Product]


private void DetectAntivirusProduct() {
    List<ManagementObject> list = new List<ManagementObject>();
    ManagementObjectSearcher search = new ManagementObjectSearcher("SELECT * FROM AntiVirusProduct");

    // SecurityCenter
    search.Scope = new ManagementScope(@"\ROOT\SecurityCenter");
    foreach (ManagementObject virusProduct in search.Get()) {
        list.Add(virusProduct);
    }

    // SecurityCenter2
    search.Scope = new ManagementScope(@"\ROOT\SecurityCenter2");
    foreach (ManagementObject virusProduct in search.Get()) {
        list.Add(virusProduct);
    }


    // Print All Properties
    foreach(ManagementObject obj in list) {
        foreach (PropertyData prop in obj.Properties) {
            Console.WriteLine(prop.Name + " : " + obj[prop.Name].ToString());
        }
    }
}




  [Firewall Product]


private void DetectFirewallProduct() {
    List<ManagementObject> list = new List<ManagementObject>();
    ManagementObjectSearcher search = new ManagementObjectSearcher("SELECT * FROM FirewallProduct");
    
    // SecurityCenter
    search.Scope = new ManagementScope(@"\ROOT\SecurityCenter");
    foreach (ManagementObject virusProduct in search.Get()) {
        list.Add(virusProduct);
    }

    // SecurityCenter2
    search.Scope = new ManagementScope(@"\ROOT\SecurityCenter2");
    foreach (ManagementObject virusProduct in search.Get()) {
        list.Add(virusProduct);
    }


    // Print All Properties
    foreach (ManagementObject obj in list) {
        foreach (PropertyData prop in obj.Properties) {
            Console.WriteLine(prop.Name + " : " + obj[prop.Name].ToString());
        }
    }
} 




 


'Microsoft > C#' 카테고리의 다른 글

MessageQueue 구현하기  (3) 2011.05.08
JSON 과 AJAX 그리고 C#  (0) 2011.04.25
베터리 상태 체크하기  (0) 2011.02.16
HttpWebRequest 로 FileUpload 시에 주의할 점  (2) 2011.02.07
Global Hooking in .NET  (1) 2011.01.24