[原文]
[未经许可,不得转载]
获取系统网络MAC地址的三种方法--Borland开发人员支持团队
摘要: 本文描述了通过编程获取系统网卡(NIC)的MAC地址的三种不同方法。
| 三种方法得到系统MAC地址 | ||||||||||||
我曾经在新闻组和网页上不停的搜索,试图找到一种简单的方法来得到系统中的MAC(网络适配卡)地址。你也许猜想网上有很多可用的例子,因为非常多的人(尤其在新闻组中)需要这个问题答案。但事实并非这样。这些例子是我嘿咻嘿咻搜索的成果和一些我自己的实践。 注意:这三个例子中没有一个是通过粘贴ipconfig.exe /all的输出来实现。 | ||||||||||||
| 目的 | ||||||||||||
这篇文章的目的是给出一些得知你MAC地址的简单方法。我会解释这些代码是如何工作的,并给出一些简单的例子来阐述。我假设你已经掌握了下面的概念:
| ||||||||||||
| 方法一 - 用Netbios API | ||||||||||||
这个方法是通过微软的Netbios API来得到你机器的MAC地址。这些API是一组提供比所谓的Winsock更底层的网络支持的命令。通过Netbios来得到地质这种方法的确定就是你必须安装了Netbios(如果你在一个Windows网络上并使用了文件共享,就没有这个问题)。另外,这个方法快速又准确。 Netbios API只包含了一个简称为Netbios的函数。这个函数通过一个网络控制块结构作为参数,来告诉函数需要做什么。这个结构的定义如下:
特别需要注意的是ncb_command成员。就是这个成员来告诉Netbios要做什么。我们将用三条指令来得到MAC地址。这些命令在MSDN中的定义如下:
这就是得到一个或多个系统MAC地址的步骤:
| ||||||||||||
| 方法二 - COM GUID API | ||||||||||||
这个方法用COM API来创建一个GUID(globably unique identifier,全局唯一标识符)并且从那里得到MAC地址。GUID是用来一般地标识系统中的COM组件或者其他对象。他们通过MAC地址(再加上其他东西)计算出来的,并且在表面上看还将地址保留在GUID中。我说表面上的原因是这还不确定。我提供这个方法作主要是作为一个不要做什么的例子。按这种方法你有可能最终得到MAC地址,但也可能你最后会得到一些随机的十六进制数。 这个方法非常的简单,并不需要太多的解释。我们通过CoCreateGuid创建一个GUID并将最后的6字节存入一个字符串。这应该就是MAC地址,但就像我说的一样,并没有方法可以保证。
本文关键:[译]获取系统网络MAC地址的三种方法
相关方案
|