Список всех системных модемов
Вопрос
Есть ли способ в управляемом коде вывести список модемных/телефонных устройств, установленных в системе?Если у .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
Вы также можете взглянуть на эту статью: КодПроект:Как:(Почти) Всё в WMI через C#. Часть 3:Аппаратное обеспечение..Автор создал простую оболочку класса для объектов WMI, похожую на MgmtclassGen.exe, но все это сделано за вас.
Другие советы
Просто некоторые мысли для будущих поколений.
@Christopher_G_Lewis предоставил очень хорошее решение.Но прежде чем использовать WMI, мы должны это проверить. Windows Management Instrumentation
(WMI
, наименование услуги Winmgmt
) работает (как это сделать?).Конечно, MS рекомендует не трогать эту службу, потому что она часть системы, но люди иногда ее отключают.
Более того, иногда может оказаться полезным проверьте версию WMI прежде чем использовать его.
Если вы хотите получить список модемов которые связанный на данный момент вы можете проверить это решение.Работает медленно, но показывает все подключенные модемы и исключает Null modem cables
.