문제
관리 코드에 시스템에 설치된 모뎀/전화 장치를 나열하는 방법이 있습니까? .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
.