Konu: Birden fazla Ethernet Kartların MAC adresleri
IT yöneticeler bazen WSH'yı (Windows Script Host) güvenlik nedeniyle kapatıyorlar. Böyle bir durumda WMI çalışmaz ve internet de sık sık GETOBJECT("winmgmts:\" ile görülen kodlarda çalışmaz.
Çözüm:
DECLARE INTEGER GetAdaptersInfo IN iphlpapi STRING @pAdapterInfo, LONG @pOutBufLen
LOCAL cBuffer, nBufSize, nAnzAdapter
LOCAL nAdrLen, cAdr, nIdx, nCnt
nBufSize = 0
cBuffer = ""
* cBuffer için nekadar yer ayırmamız gerektiğini bilmediğiniz için ...
=GetAdaptersInfo(@cBuffer, @nBufSize) && nBufSize da gereken Byte sayızı bize geri gelecek
cBuffer = REPLI(CHR(0), nBufSize)
IF GetAdaptersInfo(@cBuffer, @nBufSize) <> 0 && ERROR_SUCCESS
=MESSAGEBOX('GetAdaptorsInfo hata oluşdu', 16)
RETURN
ENDIF
nAnzAdapter = LEN(cBuffer) / 640 && her bir kayıt 640 Byte
nIdx = 0
DO WHILE nAnzAdapter > 0
nAdrLen = ASC(SUBSTR(cBuffer, nIdx + 401, 1)) && size of NIC address string
cAdr = SUBSTR(cBuffer, nIdx + 405, nAdrLen) && NIC address
cID_Dec = ''
cID_Hex = ''
FOR nCnt = 1 TO nAdrLen
cID_Dec = cID_Dec + IIF(nCnt>1,',','') + ALLTRIM(STR(ASC(SUBSTR(cAdr,nCnt,1))))
cID_Hex = cID_Hex + IIF(nCnt>1,'-','') + RIGHT(TRANSFORM(ASC(SUBSTR(cAdr,nCnt,1)),'@0'),2)
NEXT
? 'NIC ID (dec): '+cID_Dec
? 'NIC ID (hex): '+ cID_Hex
?
nAnzAdapter = nAnzAdapter -1
nIdx = nIdx +640
ENDDO
CLEAR DLLS GetAdaptersInfo
Command Prompt da getmac komutunu vererek sonucu kontrol edebilirsiniz