找回密码
 加入
搜索
查看: 4187|回复: 13

[AU3基础] 【已解决】没有IP地址,如何获取mac地址?

  [复制链接]
发表于 2010-12-23 17:31:55 | 显示全部楼层 |阅读模式
本帖最后由 dearmb 于 2011-1-1 21:39 编辑

搜索了一些帖子,发现基本上都是通过本机IP来获取mac地址的
但是我的要求是,本机当前还没有配置IP地址,通过获取到的mac地址修改IP地址
怎么做呢?
发表于 2010-12-23 18:45:52 | 显示全部楼层
建议MAC地址保存到INI文件…
发表于 2010-12-23 18:48:13 | 显示全部楼层
回复 2# 83265358


    他是问如何获取, 呃。。晕死。我等回答 。
发表于 2010-12-23 18:53:45 | 显示全部楼层
好好找找啊,不插网线都可以找到MAC的,我发过帖子
发表于 2010-12-23 18:56:30 | 显示全部楼层
看这个帖子,不知道你是不是找这样的
 楼主| 发表于 2010-12-23 19:04:28 | 显示全部楼层
好好找找啊,不插网线都可以找到MAC的,我发过帖子
fhp2009 发表于 2010-12-23 18:53


我晕啦,你发过帖子告诉我不就完了……
只要以你为线索找了 ……
 楼主| 发表于 2010-12-23 19:07:28 | 显示全部楼层
看这个帖子,不知道你是不是找这样的
fhp2009 发表于 2010-12-23 18:56


纯AU3获得本地MAC地址
是这个吗?本人初学者,将你的代码复制进去运行,提示错误,将rundos修改成_rundos,运行,还是出错,不知道怎么改了,指教~~
发表于 2010-12-23 19:11:30 | 显示全部楼层
http://www.autoitx.com/forum.php ... 0122&highlight=

他这个帖子里有提到, 不过他是把回显弄过来, 找文字的,匹配了就有了。
你可以先 在CMD 里输入  Ipconfig /all  看能不能找到MAC地址, 如果没有, 那这个方法就不适合你。
发表于 2010-12-23 19:32:02 | 显示全部楼层
自己在用的一段代码,单网卡环境测试通过,多网卡不知道效果如何...
#include <ACN_NET.au3>
msgbox(0,"本机的MAC地址是:",Getmac())
Func getmac()
        Select
                Case Not (@IPAddress1 = "0.0.0.0" Or @IPAddress1 = "127.0.0.1")
                        $sip = @IPAddress1
                Case Not (@IPAddress2 = "0.0.0.0" Or @IPAddress2 = "127.0.0.1")
                        $sip = @IPAddress2
                Case Not (@IPAddress3 = "0.0.0.0" Or @IPAddress3 = "127.0.0.1")
                        $sip = @IPAddress3
                Case Not (@IPAddress4 = "0.0.0.0" Or @IPAddress4 = "127.0.0.1")
                        $sip = @IPAddress4
        EndSelect
        $mymac = _API_Get_NetworkAdapterMAC($sip)
return $mymac
EndFunc   ;==>getmac
 楼主| 发表于 2010-12-23 19:47:16 | 显示全部楼层
自己在用的一段代码,单网卡环境测试通过,多网卡不知道效果如何...
kingfirekkk 发表于 2010-12-23 19:32


???
“没有”ip地址获取mac地址?
发表于 2010-12-23 20:05:06 | 显示全部楼层
回复 10# dearmb

没有IP地址也有几种类型:
一种就是没有插网线,没有从DHCP上获取IP地址,此时实际上还是有IP地址的,但是IP地址的类型为:169.254.x.x
另外一种就是网卡禁用了,那就是真的没有IP地址了(连网卡功能都了,肯定IP地址也没有了)
还有另外一种就是网卡工作正常,此时可以用127.0.0.1来代替本地本机网当前活动网卡的IP地址;
发表于 2010-12-23 20:46:29 | 显示全部楼层
回复 9# kingfirekkk
顶...............
 楼主| 发表于 2010-12-23 20:59:38 | 显示全部楼层
回复  dearmb

没有IP地址也有几种类型:
一种就是没有插网线,没有从DHCP上获取IP地址,此时实际上还是 ...
kingfirekkk 发表于 2010-12-23 20:05


保靠吗?什么情况下会失败啊?
如果失败……上千台电脑需要自己手动搞的……
发表于 2010-12-23 21:04:13 | 显示全部楼层
http://www.autoitx.com/forum.php ... 5651&highlight=\_net

#Include <Array.au3>


$NetworkAdapterInfo=_NetworkAdapterInfo()

_ArrayDisplay($NetworkAdapterInfo, "NetworkAdapterInfo")

Func _NetworkAdapterInfo()
;======================================================
;
; 函数名称:        _NetworkAdapterInfo()
; 详细信息:        获取系统所有网卡信息
; 返回值说明:
; 以二维数组方式返回.例如 $info=_NetworkAdapterInfo()
; $info[0][0] 网卡数量
; $info[1][0] 第一块网卡的标志1
; $info[1][1] 第一块网卡的状态
; 状态说明:7为网卡未插网线,2为网卡连接正常
; $info[1][2] 第一块网卡的网卡名称
; $info[1][3] 第一块网卡的连接名称
; $info[1][4] 第一块网卡的MAC地址
; $info[1][5] 第一块网卡的IP地址
; $info[1][6] 第一块网卡的默认网关
; $info[1][7] 第一块网卡的子网掩码
; $info[1][8] 第一块网卡的主DNS
; $info[1][9] 第一块网卡的次DNS
; 第二块网卡:
; $info[2][0] 第二块网卡的标志1
; $info[2][9] 第二块网卡的次DNS

; 其他网卡信息依次类推。。。
; 注意,此UDF不会获取已经禁用的网卡。
; 作者:      Sanhen (gxbeiliu@163.com)
; 网站: www.lunhui.net.cn  www.autoitx.com
;======================================================
        Local $colItem
        Local $objItem
        Local $colItems
        Local $objItems
        Local $objWMIService
        Local $Adapters[1][10]
        $Adapters[0][0] = 0
        $objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
        $colItem  = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionStatus >0", "WQL", 0x30)
        If IsObj($colItem) Then
                For $objItem In $colItem
                        If $objItem.MACAddress = "00:00:00:00:00:00" Then ContinueLoop
                        $Adapters[0][0] += 1
                        ReDim $Adapters[UBound($Adapters) + 1][10]
                        $Adapters[$Adapters[0][0]][0] += $Adapters[0][0]
                        $Adapters[$Adapters[0][0]][1] = $objItem.NetConnectionStatus
                        $Adapters[$Adapters[0][0]][2] = $objItem.Description
                        $Adapters[$Adapters[0][0]][3] = $objItem.NetConnectionID
                        $Adapters[$Adapters[0][0]][4] = $objItem.MACAddress     
                        $colItems  = $objWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapterConfiguration WHERE MACAddress = "'&$Adapters[$Adapters[0][0]][4]&'" And IPEnabled = True ' , "WQL", 0x30)                                             
                        If IsObj($colItems) Then
                                For $objItems In $colItems
                                        ;if $objItem1.IPAddress(0) = "0.0.0.0" Then ContinueLoop
                                        $Adapters[$Adapters[0][0]][5] = $objItems.IPAddress(0)
                                        $Adapters[$Adapters[0][0]][6] = $objItems.DefaultIPGateway(0)
                                        $Adapters[$Adapters[0][0]][7] = $objItems.IPSubnet(0)
                                        $Adapters[$Adapters[0][0]][8] = $objItems.DNSServerSearchOrder(0)
                                        $Adapters[$Adapters[0][0]][9] = $objItems.DNSServerSearchOrder(1)
                                Next   
                        EndIf
                Next
        EndIf
        
Return $Adapters

EndFunc
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-10-2 20:31 , Processed in 0.090381 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表