Список всех системных модемов - PullRequest
4 голосов
/ 18 ноября 2009

Есть ли способ в управляемом коде перечислить модемные / телефонные устройства, установленные в системе? Если у .Net нет пути, не могли бы вы указать мне направление?

Ответы [ 2 ]

6 голосов
/ 18 ноября 2009

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: Как: (Почти) все в WMI через C # - Часть 3. Аппаратное обеспечение. . Автор создал простую оболочку класса вокруг объектов WMI, похожую на MgmtclassGen.exe, но все это сделано для вас.

1 голос
/ 28 сентября 2011

Просто несколько мыслей для будущих поколений.

@ Christopher_G_Lewis предоставил очень хорошее решение. Но перед использованием WMI мы должны проверить, что Windows Management Instrumentation (WMI, имя службы Winmgmt) работает ( как это сделать? ). Конечно, MS рекомендует не трогать эту услугу, потому что она является частью системных функций, но люди иногда отключают ее.

Кроме того, иногда бывает полезно проверить версию WMI перед ее использованием.

Если вы хотите получить список модемов , которые связаны на данный момент, вы можете проверить это решение . Работает медленно, но показывает все подключенные модемы и исключает Null modem cables.

...