АртемЪ, Из вопроса все кажется ясно (первый тег "GO" конкретно на это указывает). По поводу реестра, это пришло на ум мне не сразу, т.к. в языке go есть библиотека "net" которая через метод HardwareAddr позволяет читать текущее значение аппаратного адреса(откуда этот метод сам берет информацию МНЕ совершенно не ясно). Я предположил, что возможно есть библиотека которая реализует доступ к значению аппаратного адреса(через ос или через драйвер или еще через что-то(вспоминая магию HardwareAddr)). Такую библиотеку я не мог найти, и задал вопрос здесь. Пока ждал ответа, додумался до реестра...
если кому-то поможет:
пакет для работы с реестром можно использовать "golang.org/x/sys/windows/registry"
Но моя проблема еще не решена! Решение работать с реестром является все таки костылем, т.к. необходимо обработать ветку "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\", далее в ней разбирать n-ое кол-во ветвей и распарсить параметры... это работает, но это совсем не элегантно ((
поэтому хочется взаимодействия с существующим кодом...
iface, _ := net.Interfaces()
for _, inter := range iface {
fmt.Println("iface=", inter.Name, " mac=", inter.HardwareAddr)
if inter.Name == "Ethernet" {
fmt.Println("работаем с Ethernet")
fmt.Println("iface=", inter.Name, " mac=", inter.HardwareAddr) //текущие значения IP и MAC
}
}