Lister tous les modems du système

Existe-t-il un moyen dans le code géré de répertorier les périphériques modem / téléphonie installés sur le système? Si .Net n’a pas de moyen, pourriez-vous me diriger dans une direction?

WMI contiendra toutes les informations dont vous avez besoin dans la classe Win32_POTSModem . En C # ou .Net, vous pouvez utiliser l’espace de noms System.Management pour interroger WMI.

Dans .Net, vous pouvez utiliser MgmtclassGen.EXE à partir du SDK de la plate-forme pour générer un object de classe représentant la classe WMI.

La ligne de commande ressemblerait à ceci:

 C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\mgmtclassgen.exe Win32_POTSModem /L CS /P c:\POTSModem\Win32_POTSModem.cs 

et alors vous pouvez l’utiliser dans votre code:

 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); } } } 

La sortie ressemble à ceci:

 ThinkPad Modem - Internal Modem Speed: 56000 

Vous pouvez également consulter cet article: CodeProject: Comment: (presque) tout dans WMI via C # – Partie 3: Matériel. . L’auteur a créé un wrapper de classe simple autour d’objects WMI similaire à MgmtclassGen.exe, mais tout est fait pour vous.

Juste quelques reflections pour les générations futures.

@Christopher_G_Lewis a fourni une très bonne solution. Mais avant d’utiliser WMI, nous devons vérifier que Windows Management Instrumentation ( WMI , nom de service Winmgmt ) fonctionne ( comment le faire? ). Bien sûr, MS recommande de ne pas toucher à ce service, car cela fait partie du système, mais les gens l’éteignent parfois.

De plus, il peut parfois être utile de vérifier la version de WMI avant de l’utiliser.

Si vous souhaitez obtenir la liste des modems connectés en ce moment, vous pouvez consulter cette solution . Cela fonctionne lentement, mais montre tous les modems connectés et exclut les Null modem cables .