如何获取物理地址(已解决,不知道怎么设置)
本帖最后由 飞越星海 于 2011-9-9 10:49 编辑本人现在正在学习中,对很多东西都是不懂,现在想写几个输出电脑物理地址的代码来也不行,只好向大家求助!!!也让我好参考参考!!!大家一起来学习,一起进步!!!谢谢!!!
最后结果,虽然不是自己写出来的,但总是学到了一些知识!!!$sip=@IPAddress1;获取本机ip
If $sip="0.0.0.0" Then $sip=@IPAddress2;获取本机ip
$MAC = _GetMAC($sip);通过IP获取地址
MsgBox(0,"IP2地址:"&$sip,"MAC3地址:"&$MAC)
Func _GetMAC($sIP)
Local $MAC, $MACSize, $i, $s, $r, $iIP
$MAC = DllStructCreate("byte")
$MACSize = DllStructCreate("int")
DllStructSetData($MACSize, 1, 6)
$r = DllCall("Ws2_32.dll", "int", "inet_addr", "str", $sIP)
$iIP = $r
$r = DllCall("iphlpapi.dll", "int", "SendARP", "int", $iIP, "int", 0, "ptr", DllStructGetPtr($MAC), "ptr", DllStructGetPtr($MACSize))
$s = ""
For $i = 0 To 5
If $i Then $s = $s & "-"
$s = $s & Hex(DllStructGetData($MAC, 1, $i + 1), 2)
Next
Return $s
EndFunc ;==>_GetMAC10楼的方法:$objWMIService = objget("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
$colItems = $objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")
For $objItem in $colItems
If StringLeft($objItem.MACAddress,2) = 00 Then $mac = $objItem.MACAddress
Next
MsgBox(0,0,$mac)用连接号代替冒号方法:MsgBox(0,"","你的mac地址: "&StringReplace($mac,":","-")) 电脑物理地址?MAC? 回复 2# dyd
对啊!!就是这个!!!我想用记事本输出!!! Func _GetMAC($sIP)
Local $MAC, $MACSize, $i, $s, $r, $iIP
$MAC = DllStructCreate("byte")
$MACSize = DllStructCreate("int")
DllStructSetData($MACSize, 1, 6)
$r = DllCall("Ws2_32.dll", "int", "inet_addr", "str", $sIP)
$iIP = $r
$r = DllCall("iphlpapi.dll", "int", "SendARP", "int", $iIP, "int", 0, "ptr", DllStructGetPtr($MAC), "ptr", DllStructGetPtr($MACSize))
$s = ""
For $i = 0 To 5
If $i Then $s = $s & ":"
$s = $s & Hex(DllStructGetData($MAC, 1, $i + 1), 2)
Next
Return $s
EndFunc ;==>_GetMAC请线搜索下论坛。。。。有关MAC地址的很多 回复 3# 飞越星海
这个在论坛里有很多例子,自己找下吧 回复 4# arkhe
好滴,谢谢!!! 回复 5# dyd
还没有学会使用论坛搜索工具啊,就想着百度,谷歌、、、 其实可以用@ADDADDRSS 回复 7# 飞越星海
你第一次上论坛? API :用4L的
WMI:$objWMIService = objget("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
$colItems = $objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")
For $objItem in $colItems
If StringLeft($objItem.MACAddress,2) = 00 Then $mac = $objItem.MACAddress
Next
MsgBox(0,0,$mac)-----------------------------------------------------------------------------
经过我在近1W台电脑上执行的结果来看,API比WMI更准确点。不过这两种方式都不是100%。使用DOS命令ipconfig/all >mac.txt 然后分析txt档案字符串是最准确的。(如果能处理好系统语言版本问题,可以说是100%的)
如果使用规模小且电脑客户端环境不复杂的话,用4L的是最好的。 win7有自带的工具, 可同时获得Wlan和Lan的mac地址
getmac.exe 回复 9# hzxymkb
也不是第一次上论坛,只是对这个搜索的引擎不是很留意!!!也没怎么取用,在论坛就是逛逛!!! 回复 10# qqgghh1
谢谢!!!多多学习才行!!!各位都很热心!!! 同样受教了,谢谢~ 最简单的DOS命令: IPconfig -all
页:
[1]
2