Вместо того, чтобы просто иметь TextBlock, попробуйте это:
<TextBlock>
<Bold>
<Run />
</Bold>
</TextBlock>
Затем привязка данных к Выполнению. TextProperty вместо этого.
Это мой метод: он использует тот факт, что физическая карта подключена к интерфейсу PCI
ManagementObjectSearcher searcher = new ManagementObjectSearcher
("Select MACAddress,PNPDeviceID FROM Win32_NetworkAdapter WHERE MACAddress IS NOT NULL AND PNPDeviceID IS NOT NULL");
ManagementObjectCollection mObject = searcher.Get();
foreach (ManagementObject obj in mObject)
{
string pnp = obj["PNPDeviceID"].ToString();
if (pnp.Contains("PCI\\"))
{
string mac = obj["MACAddress"].ToString();
mac = mac.Replace(":", string.Empty);
return mac;
}
}
Первые три байта MAC-адреса являются идентификатором производителя. Вы можете занести в черный список определенные идентификаторы производителя, которые, как известно, не подходят для ваших целей, и проигнорировать эти интерфейсы.
Полагаться на скорость вряд ли будет хорошей идеей, потому что нет причин, по которым интерфейс VPN не мог бы сообщить о себе как имеющий гигабитная скорость.
MAC-адреса - это физические аппаратные адреса. Я не могу протестировать этот компьютер, но не думаю, что вы получите новый MAC-адрес, если будет добавлено виртуальное соединение, потому что это не настоящее оборудование. Это будет другое соединение, но не другой MAC-адрес.
Таким образом, гарантия того, что вы каждый раз будете получать один и тот же MAC-адрес, зависит от одних и тех же компонентов оборудования, подключенных к машине, и от того, что вы используете тот же алгоритм для выбора из этого оборудования.