如何在Windows上获取硬件MAC地址

Mar*_*ark 14 c++ networking winapi ndis

我正在玩从NIC中检索MAC地址 - 有多种方法可以获得它,本文介绍了最常见的:

http://www.codeguru.com/Cpp/IN/network/networkinformation/article.php/c5451

我目前正在使用GetAdaptersInfo方法,这似乎是最防弹的,但如果通过注册表设置了MAC地址:

http://www.mydigitallife.info/2008/06/30/how-to-change-or-spoof-mac-address-in-windows-xp-vista-server-20032008-mac-os-x-unix-和Linux的/

然后它报告已更改为的MAC地址.我发现实际获得真正的MAC的唯一方法是删除注册表项,重新启动NIC,通过GetAdaptersInfo获取MAC,然后替换注册表项,然后重新启动NIC.虽然它完成了工作,但它对用户来说几乎不透明.

有没有其他人熟悉的方法,无论注册表设置什么,都会返回硬件MAC?理想情况下,我想要一个适用于XP的解决方案.

提前致谢!

Sma*_*acL 2

我的猜测是,在链接的 CodeGuru 文章中,Miniport 解决方案很可能克服您描述的问题,尽管实施起来很痛苦。我认为这是因为我过去自己使用过 GetAdaptersInfo 解决方案,并注意到当添加适配器(例如提供 PAN 服务的蓝牙适配器)时,MAC 地址将在不重新启动的情况下更改。

也许您可以尝试停止并重新启动相关网络服务,而不是在更改注册表设置后重新启动。在寻找编程解决方案之前,您可以轻松地手动检查这一点。

(注意,以上都是猜测。如果您尝试过并且有效,也许可以为将来尝试做同样事情的人添加一个帖子)。