Liste aller System Modems
Frage
Gibt es eine Möglichkeit in verwaltetem Code Liste der Modem / Telefonie auf dem System installierte Geräte? Wenn .Net keine Möglichkeit haben, könnten Sie mir zeigen in eine Richtung?
Lösung
WMI enthält alle Informationen, die Sie in der Win32_POTSModem
Klasse benötigen. In C # oder .Net können Sie die System.Management
Namespace Abfrage WMI nutzen.
Innerhalb von .Net, können Sie MgmtclassGen.EXE von der Plattform SDK ein Klassenobjekt repräsentiert die WMI-Klasse.
zu erzeugen,Die Befehlszeile wie folgt sein würde:
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\mgmtclassgen.exe Win32_POTSModem /L CS /P c:\POTSModem\Win32_POTSModem.cs
und dann können Sie das in Ihrem Code verwenden:
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);
}
}
}
Ausgabe sieht wie folgt aus:
ThinkPad Modem - Internal Modem
Speed: 56000
Sie können auch einen Blick auf diesen Artikel in Anspruch nehmen wollen: Codeproject: How To: ( fast) alles in WMI über C # - Teil 3:. Hardware . Der Autor hat eine einfache Wrapper-Klasse erstellt um WMI-Objekte ähnlich wie MgmtclassGen.exe, aber es ist alles für Dich erledigt.
Andere Tipps
Nur ein paar Gedanken für zukünftige Generationen.
@Christopher_G_Lewis bereitgestellt sehr gute Lösung.
Aber bevor WMI müssen wir diese Windows Management Instrumentation
überprüfen (WMI
, Service-Name Winmgmt
) arbeitet (, wie es zu tun? ). Natürlich empfiehlt MS diesen Dienst nicht berühren, denn es ist Teil des Systems Sachen, aber die Leute schalten manchmal aus.
Darüber hinaus kann es manchmal hilfreich sein, überprüfen WMI-Version bevor sie es.
Wenn Sie auf erhalten Modems Liste die sind verbunden im Moment, können Sie überprüfen diese Lösung . Es arbeitet langsam, aber zeigt alle angeschlossenen Modems und schließt Null modem cables
.