[C#] 장치관리자 목록 추출하기

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Management;

using System.Management.Instrumentation;


/**

 * //KBW : https://powershell.one/wmi/root/cimv2/win32_pnpentity

 *  {

        1          {'Other'}

        2        {'Unknown'}

        3          {'Running/Full Power'}

        4          {'Warning'}

        5          {'In Test'}

        6          {'Not Applicable'}

        7          {'Power Off'}

        8          {'Off Line'}

        9          {'Off Duty'}

        10         {'Degraded'}

        11         {'Not Installed'}

        12         {'Install Error'}

        13         {'Power Save - Unknown'}

        14         {'Power Save - Low Power Mode'}

        15         {'Power Save - Standby'}

        16         {'Power Cycle'}

        17         {'Power Save - Warning'}

        18         {'Paused'}

        19         {'Not Ready'}

        20         {'Not Configured'}

        21         {'Quiesced'}

      }

 * 

 **/



namespace DeviceStatus

{

    class Program

    {

        static void Main(string[] args)

        {

            String result = "OK";

            // Query the device list trough the WMI. If you want to get

            // all the properties listen in the MSDN article mentioned

            // below, use "select * from Win32_PnPEntity" instead!

            ManagementObjectSearcher deviceList =

                //new ManagementObjectSearcher("Select Name, Status from Win32_PnPEntity");

                //new ManagementObjectSearcher("Select * from Win32_PnPEntity where Availability = 12 or Availability = 11");

                new ManagementObjectSearcher("Select * from Win32_PnPEntity where Availability = 2");


            // Any results? There should be!

            if (deviceList != null)

                // Enumerate the devices

                foreach (ManagementObject device in deviceList.Get())

                {

                    // To make the example more simple,

                    object n = device.GetPropertyValue("Name");

                    string name = "NoName".ToString();

                    if (n != null) name = n.ToString();

                    string status = device.GetPropertyValue("Status").ToString();


                    // Uncomment these lines and use the "select * query" if you 

                    // want a VERY verbose list

                    // foreach (PropertyData prop in device.Properties)

                    //    Console.WriteLine( "\t" + prop.Name + ": " + prop.Value);


                    // More details on the valid properties:

                    // http://msdn.microsoft.com/en-us/library/aa394353(VS.85).aspx

                    


                    // Part II, Evaluate the device status.

                    bool working = ((status == "OK") || (status == "Degraded")

                        || (status == "Pred Fail"));


                    if (working == true)

                    {

                        Console.WriteLine("Device name: {0}", name);

                        Console.WriteLine("\tStatus: {0}", status);

                        Console.WriteLine("\tWorking?: {0}", working);

                    }

                    else if (name == "NoName")

                    {

                        Console.WriteLine("Device name: {0}", name);

                        Console.WriteLine("\tStatus: {0}", status);

                        Console.WriteLine("\tWorking?: {0}", working);

                    }


                    result = "ERROR";

                }


            //Console.WriteLine("Press any key...");

            //Console.ReadKey();

            Console.WriteLine("{0}",result);

        }

    }

}


0
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기
captcha
자동등록방지 숫자입력

기타

번호 제목 글쓴이 날짜 조회수
13 [DICOM] 정보 최고관리자 11-20 2,093
12 [개발툴] Cross Platform UART Monitor 최고관리자 11-11 1,177
11 익명화 최고관리자 11-05 1,246
10 [KT Cloud] Linux 계열 서버 Data Disk Mount -LVM 구성 최고관리자 11-03 1,557
9 [의료영상솔루션] 의료영상솔루션에서 빅데이터로 'PACS의 진화' 최고관리자 10-26 1,339
8 [Firmware] STM8 Linker: text size overflow 최고관리자 10-26 1,599
7 [STM8] ST Visual Studio 프로젝트 셋팅 최고관리자 10-22 1,507
6 [Firmware] SMT32 HTTP Client 코드 작성을 위한 lwIP Library 최고관리자 10-15 2,638
5 [Firmware] STMF4 시리즈 부트로더, iap 개발 팁 최고관리자 10-15 1,599
4 [특허] 한국, 미국, 일본, 유럽연합, 중국의 디자인보호제도 비교 최고관리자 10-14 1,850
3 [주식] 현재가 창에서 매도. 매수 총잔량으로 파악 하는법 상승시점 파악: 매수시점 최고관리자 09-09 13,129
2 [리눅스] BASH 쉘 설정 최고관리자 09-08 1,843
1 가비아 - Google 도메인 소유자 확인 최고관리자 08-25 1,239