using System.Management;
using Microsoft.Win32;
using (ManagementClass i_Entity = new ManagementClass("Win32_PnPEntity"))
{
const String CUR_CTRL = "HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\";
foreach (ManagementObject i_Inst in i_Entity.GetInstances())
{
Object o_Guid = i_Inst.GetPropertyValue("ClassGuid");
if (o_Guid == null || o_Guid.ToString().ToUpper() != "{4D36E978-E325-11CE-BFC1-08002BE10318}")
continue;
String s_Caption = i_Inst.GetPropertyValue("Caption") .ToString();
String s_Manufact = i_Inst.GetPropertyValue("Manufacturer").ToString();
String s_DeviceID = i_Inst.GetPropertyValue("PnpDeviceID") .ToString();
String s_RegEnum = CUR_CTRL + "Enum\\" + s_DeviceID + "\\Device Parameters";
String s_RegServ = CUR_CTRL + "Services\\BTHPORT\\Parameters\\Devices\\";
String s_PortName = Registry.GetValue(s_RegEnum, "PortName", "").ToString();
String s_BT_Dir = null;
String s_BT_Dev = "";
String s_BT_MAC = "";
int s32_Pos = s_Caption.IndexOf(" (COM");
if (s32_Pos > 0)
s_Caption = s_Caption.Substring(0, s32_Pos);
Console.WriteLine("Port Name: " + s_PortName);
Console.WriteLine("Description: " + s_Caption);
Console.WriteLine("Manufacturer: " + s_Manufact);
Console.WriteLine("Device ID: " + s_DeviceID);
if (s_DeviceID.StartsWith("BTHENUM\\"))
{
s_BT_Dir = "Incoming";
String s_UniqueID = Registry.GetValue(s_RegEnum, "Bluetooth_UniqueID", "").ToString();
String[] s_Split = s_UniqueID.Split('#');
if (s_Split.Length == 2)
{
s_Split = s_Split[1].Split('_');
if (s_Split.Length == 2 && s_Split[0].Trim('0').Length > 0)
{
s_BT_MAC = s_Split[0];
s_BT_Dir = "Outgoing";
Object o_BtDevice = Registry.GetValue(s_RegServ + s_BT_MAC, "Name", null);
if (o_BtDevice is Byte[])
s_BT_Dev = Encoding.UTF8.GetString((Byte[])o_BtDevice);
}
}
Console.WriteLine("Port Direction: " + s_BT_Dir);
Console.WriteLine("Paired Device: " + s_BT_Dev);
Console.WriteLine("Device MAC Adr: " + s_BT_MAC);
}
Console.WriteLine("-----------------------------------");
}
}