Задать вопрос
@s_pyanov

Как из программы написанной на языке GO поменять MAC адрес сетевого адаптера в windows?

Всем доброго времени суток!
Потребовалось изменять mac адрес сетевой. Подскажите как это реализовать? через какой пакет?
Заранее спасибо!
  • Вопрос задан
  • 471 просмотр
Подписаться 1 Оценить 4 комментария
Пригласить эксперта
Ответы на вопрос 2
Jump
@Jump Куратор тега Windows
Системный администратор со стажем.
В программе нет MAC адреса поэтому менять нечего.
MAC адрес есть у сетевой карты и поменять его можно либо в драйвере этой самой карты, либо в реестре Windows.
Ответ написан
Комментировать
@s_pyanov Автор вопроса
АртемЪ, Из вопроса все кажется ясно (первый тег "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
		}
	}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы