1、通过CMD获取:

程序代码 程序代码

#include <Array.au3>
$aArray = _GetMACAddress()
_ArrayDisplay($aArray)

Func _GetMACAddress()
    local $sText, $iPID
    $iPID = Run(@ComSpec & " /c ipconfig /all", '', @SW_HIDE, 6)
    While 1
        $sText &= StdoutRead($iPID)
        If @error Then ExitLoop
    WEnd
    Return StringRegExp($sText, "(?s)(?i)([\w|\d]{2}\-[\w|\d]{2}\-[\w|\d]{2}\-[\w|\d]{2}\-[\w|\d]{2}\-[\w|\d]{2})", 3)
EndFunc


2、通过WMI获取本机活动网卡的MAC地址
程序代码 程序代码

#include <Array.au3>
$array = _GetMACAddress()
_ArrayDisplay($array)
                    
Func _GetMACAddress()
    
Local $wbemFlagReturnImmediately = 0x10
Local $wbemFlagForwardOnly = 0x20
Local $strComputer = "localhost"
Local $objWMIService,$colItems,$ret[2]

$objWMIService  = ObjGet("winmgmts:\\" & $strComputer& "\root\cimv2")
$colItems = $objWMIService.ExecQuery("Select * From Win32_NetworkAdapter ")

For $colItem In $colItems
    If $colItem .NetConnectionStatus = 2 Then
    $ret[0]= $colItem .MACAddress
    $ret[1]=$colItem .Name
    EndIf
Next
Return $ret

EndFunc


3、通过API获取本机MAC地址
程序代码 程序代码

MsgBox(64,"mac",_GetMAC(@IPAddress1))


Func _GetMAC ($sIP)
  Local $MAC,$MACSize
  Local $i,$s,$r,$iIP
  
  $MAC = DllStructCreate("byte[6]")
  $MACSize = DllStructCreate("int")

  DllStructSetData($MACSize,1,6)
  $r = DllCall ("Ws2_32.dll", "int", "inet_addr", "str", $sIP)
  $iIP = $r[0]
  $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