문제

관리 코드에 시스템에 설치된 모뎀/전화 장치를 나열하는 방법이 있습니까? .NET이 방법이 없다면 방향으로 나를 가리킬 수 있습니까?

도움이 되었습니까?

해결책

WMI에는 필요한 모든 정보가 포함됩니다. Win32_POTSModem 수업. C# 또는 .NET에서는 System.Management WMI를 쿼리하는 네임 스페이스.

.NET 내에서 사용할 수 있습니다 mgmtclassgen.exe 플랫폼 SDK에서 WMI 클래스를 나타내는 클래스 객체를 생성합니다.

명령 줄은 다음과 같습니다.

C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\mgmtclassgen.exe Win32_POTSModem /L CS /P c:\POTSModem\Win32_POTSModem.cs

그런 다음 코드에서 사용할 수 있습니다.

using System;
using System.Collections.Generic;
using System.Management;
using ROOT.CIMV2.Win32;

public class MyClass
{
  public static void Main()
  {
    foreach (POTSModem modem in POTSModem.GetInstances()) {
      Console.WriteLine(modem.Description);
    }
  }
}

출력은 다음과 같습니다.

ThinkPad Modem - Internal Modem
        Speed: 56000

이 기사를 살펴 보는 것도 가능할 수도 있습니다. CodeProject : 방법 : (거의) C# 3 부 : 하드웨어를 통해 WMI의 모든 내용.. 저자는 mgmtclassgen.exe와 유사한 WMI 객체 주위에 간단한 클래스 래퍼를 만들었지 만 모두 당신을 위해 이루어졌습니다.

다른 팁

미래 세대에 대한 몇 가지 생각.

@christopher_g_lewis는 매우 좋은 솔루션을 제공했습니다. 그러나 WMI를 사용하기 전에 확인해야합니다 Windows Management Instrumentation (WMI, 서비스 이름 Winmgmt) 작동 중입니다 (어떻게 하는가?). 물론 MS는 시스템 작업의 일부이기 때문에이 서비스를 터치하지 않는 것이 좋습니다.

또한 때로는 도움이 될 수 있습니다 WMI 버전을 확인하십시오 사용하기 전에.

당신이 원한다면 모뎀 목록을 가져옵니다 그 어느 것입니다 연결 현재 체크 아웃 할 수 있습니다 이 솔루션. 천천히 작동하지만 모든 연결된 모뎀을 보여주고 제외 Null modem cables.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top