Yes, it is possible to archive it by WMI queries, for example to get SN of plugged USB pen drives (if they have it, some doesn't).
Check WMI Win32_PNPEntity class or Win32_USBHub, Win32_USBControllerDevice classes.
EDIT:
For enumerating all devices, remove the WHERE clause:
using System;
using System.Management;
using System.Windows.Forms;
namespace WMISample
{
public class MyWMIQuery
{
public static void Main()
{
try
{
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_PnPEntity WHERE DeviceID = 'USB\\VID_8087&PID_0024\\5&38CA7A24&0&1'");
foreach (ManagementObject queryObj in searcher.Get())
{
Console.WriteLine("-----------------------------------");
Console.WriteLine("Win32_PnPEntity instance");
Console.WriteLine("-----------------------------------");
Console.WriteLine("DeviceID: {0}", queryObj["DeviceID"]);
}
}
catch (ManagementException e)
{
MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
}
}
}
}