Bueno, al final lo he encontrado yo, ya que estoy os lo explico:
Se hace via WMI (Windows Management Instrumentation), yo en concreto uso la clase
Win32_POTSModem os pongo un enlace:
hachetetepé://msdn2.microsoft.com/en-us/library/aa394360.aspxAhí teneis una lista grande de a lo que se puede acceder (Win32_OnBoardDevice, Win32_ParallelPort, etc).
Se usa el namespace
System.Management.
la función que uso para buscar los dispositivos (en este caso modems):
public void modems()
{
SelectQuery query = new SelectQuery("Win32_POTSModem");
// Inicializo un buscador para la query
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
// Saco los resultados de la búsqueda
foreach (ManagementObject envVar in searcher.Get())
{
Console.WriteLine("Modem -> DeviceID: {0}; Name: {1}; Status: {2}; AttachedTo: {3}\n",
envVar["DeviceID"], envVar["Name"], envVar["Status"], envVar["AttachedTo"]);
}
}
Si quiero utilizarlo, pues nada me creo un objeto tipo
SerialPort y le asigno el puerto que se obtiene con
envVar["AttachedTo"] y ¡adelante!.
Ale, no sé si os será útil, pero al igual que para modems se puede acceder al resto del equipo...
¡Que la fuerza os acompañe!