2009-11-18 33 views
4

在託管代碼中列出安裝在系統上的調制解調器/電話設備的方法嗎? 如果.Net沒有辦法,你能指出我的方向嗎?列出所有系統調制解調器

+0

調制解調器?我記得那些...雖然我也記得軟盤和打印機... – tsilb 2009-11-18 15:02:51

回答

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

只是對後代的一些想法。

@Christopher_G_Lewis提供了非常好的解決方案。 但在使用WMI之前,我們必須檢查Windows Management InstrumentationWMI,服務名稱Winmgmt)是否正在運行(怎麼辦?)。當然,MS建議不要觸摸這項服務,因爲它是系統內容的一部分,但有時候人們會關閉它。

此外,在使用前有時可能會對check WMI version有所幫助。

如果你想獲得調制解調器列表這是此刻連接,你可以檢查出this solution。它工作緩慢,但顯示所有連接的調制解調器並排除Null modem cables

+0

感謝您指出了陷阱。 – 2013-03-14 13:27:43