2011-11-21 3 views
0

관리 개체에 액세스하는 방법을 알고 있습니다.바로 사용할 수있는 관리 클래스

var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapter");    
foreach (var nic in searcher.Get()) 
{     
    Console.WriteLine(nic["caption"]); 
} 

이제이 nic [] - synthax는 사용하기 매우 어렵습니다. 비주얼 스튜디오 서버 익스플로러를 살펴보면 내가 선택한 각 객체의 속성 표가 채워진다. 그들이 거기에 바인딩 할 수있는 수업을 만드는 것처럼 냄새. 같은 libs 또는 접근 방식이 있습니까? 난 그냥 이미 발명 된 새로운 무언가를 구현하는 내 시간을 낭비하고 싶지 않아

var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapter");    
foreach (var nic in searcher.Get()) 
{     
    Console.WriteLine((nic as Win32NetworkAdapter).Caption); 
} 

같은 구문을 좀하고 싶습니다!

답변

1

WMI는 쿼리를 실행하고 불확실한 결과 집합을 반환합니다. 쿼리는 SQL과 유사하므로 특정 열만 반환 할 수 있습니다. 속성 표는 단순히 반환 된 각 값을 별도의 이름과 값으로 나열합니다. 모든 쿼리 결과에 대해 고정 된 열 집합이 없습니다. 따라서 반환 된 목록에서 명시 적으로 각각을 가져와야합니다.

+0

삭제 해 주셔서 감사합니다. 기본 동작을 이해했습니다. 예를 들어 Win32NetworkAdapter와 같은 프록시 클래스를 생성하는 "래퍼"라이브러리가 없다는 말입니까? – sprinter252

+0

저는 C++에서 주로 WMI를 다루는 지난 4 개월 이상을 보냈습니다. 그런 클래스를 처음 접한 적이 없습니다. 가장 큰 문제점은 특정 운영 체제에 특정 필드가 존재하지 않는다는 것입니다. 너는 너 자신의 실존 그리고 타당성을 시험해야 할 것이다. – Polynomial

+0

삭제 해 주셔서 감사합니다. – sprinter252

0

저처럼 다른 사람들을 행복하게 만들기 위해 제 문제를 해결하기 위해 T4를 만들었습니다. 그것은 http://www.codingfreaks.de/2011/11/22/t4-fur-wmi-zugriff/ (독일어 !!!)에 기록되어 있으며 http://www.codingfreaks.de/files/wmi01/WmiHelper.tt에서 얻을 수 있습니다. 작동 시키려면 그냥

  1. VS로 프로젝트에 추가하십시오.
  2. "Classes.txt"라는 텍스트 파일을 추가하십시오.
  3. "Classes.txt"(예 : "Win32_NetworkAdapter")에서 사용하려는 각 WMI 클래스에 대한 줄을 추가하십시오.
  4. 프로젝트에서 tt 파일을 마우스 오른쪽 단추로 클릭하고 "사용자 정의 도구"를 사용하십시오.
  5. 는 코드로 이동 WmiHelper를 입력합니다. *

즐기십시오!

관련 문제