列出所有系统调制解调器

时间:2009-11-18 14:42:24

标签: c# .net modem telephony

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

2 个答案:

答案 0 :(得分:6)

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: How To: (Almost) Everything In WMI via C# - Part 3: Hardware.。作者创建了一个类似于MgmtclassGen.exe的WMI对象的简单类包装器,但它都是为你完成的。

答案 1 :(得分:1)

为后代留下一些想法。

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

此外,有时候check WMI version使用之前可能会有所帮助。

如果您想获取调制解调器列表目前已连接,您可以查看this solution。它运行缓慢,但显示所有连接的调制解调器并排除Null modem cables