托管代码中是否可以列出系统上安装的调制解调器/电话设备?如果.Net 没有办法,你能给我指明一个方向吗?
2 回答
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。. 作者围绕 WMI 对象创建了一个简单的类包装器,类似于 MgmtclassGen.exe,但这一切都是为您完成的。
只是对后代的一些想法。
@Christopher_G_Lewis 提供了非常好的解决方案。但在使用 WMI 之前,我们必须检查Windows Management Instrumentation
( WMI
, service name Winmgmt
) 是否正常工作(如何做?)。当然,MS 建议不要碰这个服务,因为它是系统的一部分,但人们有时会关闭它。
此外,有时在使用之前检查 WMI 版本可能会有所帮助。
如果您想获取当前已连接的调制解调器列表,可以查看此解决方案。它运行缓慢,但显示所有连接的调制解调器并排除.Null modem cables