列出所有系统调制解调器

托管代码中是否有一种方法可以列出系统上安装的调制解调器/电话设备? 如果.Net没办法,你能指点我吗?

WMI将包含Win32_POTSModem类中所需的所有信息。 在C#或.Net中,您可以使用System.Management命名空间来查询WMI。

在.Net中,您可以使用平台SDK中的MgmtclassGen.EXE生成表示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#在WMI中的所有内容 – 第3部分:硬件。 。 作者创建了一个类似于MgmtclassGen.exe的WMI对象的简单类包装器,但它们都是为你完成的。

对后代只是一些想法。

@Christopher_G_Lewis提供了非常好的解决方案。 但在使用WMI之前,我们必须检查Windows Management InstrumentationWMI ,服务名称Winmgmt )是否正常工作( 如何操作? )。 当然,MS建议不要触摸此服务,因为它是系统内容的一部分,但人们有时会将其关闭。

此外,有时在使用之前检查WMI版本可能会有所帮助。

如果您想获得此刻连接的 调制解调器列表 ,您可以查看此解决方案 。 它工作缓慢,但显示所有连接的调制解调器,并排除Null modem cables