找回密码
 加入
搜索
查看: 4337|回复: 9

[AU3基础] 帮忙看一下我的代码对不对??

    [复制链接]
发表于 2010-10-24 16:29:59 | 显示全部楼层 |阅读模式
本帖最后由 lhy6456210 于 2010-10-24 16:34 编辑

我自己想写一个小程序,根据网卡的MAC地址来更改计算机名和IP、IPX、DNS,因为自己是做网吧维护的;

想法如下:
先把网吧所有的网卡的MAC地址存在MAC.TXT文件里
运行程序时自动读取本机网卡的MAC地址,然后跟MAC.txt里对比,是否相等,相等,则执行改IP的操作;
自己写了一点就不知道怎么写了?也不知道,自己写的几行代码行不行,符不符合逻辑?

代码如下:
#Include <ACN_NET.au3>
#Include <File.au3>
$Card=_NetworkAdapterInfo()
$mymac=$Card[1][8];获得本机MAC地址
Dim $i
$line=_FileCountLines("d:\mac.txt");返回MAC.txt里所有的MAC行
For $i=1 To $line
$configmac=FileReadLine ("d:\mac.txt",$i)
Next
$stringcompare=StringCompare($mymac,$configmac)
If $stringcompare=0 Then
 
        MsgBox(0,"","OK")
Else
MsgBox(0,"","不OK")
EndIf
这种写行不行?能不能判断,本机的MAC地址在不在MAC.txt里? 如何判断本机的MAC等于MAC.TXT里的mac地址,相等后,执行更改计算机名、IP等(主要是不会写这个判断,写入IP、计算机名这些还是会的)

MAC.TXT内容如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2010-10-24 16:59:03 | 显示全部楼层
这种程序网上一大票,你找找看吧,我也是做网吧维护的,我在早几年前就用过这类似的程序了。
如果楼主只想根据网卡mac改IP,计算机名这样的话,那你不必研究了,现成的程序多得很。
如果楼主想用这个来学习练手,那你就继续研究一下。

另外,楼主是做网吧维护的对吧?网吧用的游戏菜单不是支持自动改IP的吗?
 楼主| 发表于 2010-10-24 17:17:19 | 显示全部楼层
回复 2# kood481748


    我用网维大师,支持的,但是不好用,IPX就不会改
发表于 2010-10-24 17:19:36 | 显示全部楼层
推荐Mac MakeUp, 非常的好用
发表于 2010-10-24 17:35:22 | 显示全部楼层
我用的是讯闪2010,IPX会自动隋机更改一个,网维大师还是收费软件,IPX都不会自己改?
这网维大师也太牛P了吧
发表于 2010-10-24 20:03:47 | 显示全部楼层
楼主. 用 _NetworkAdapterInfo() 用这个貌似不能获取到本机的MAC。 如果是刚刻盘网络是不通的。。
发表于 2010-10-24 20:03:56 | 显示全部楼层
本帖最后由 DenQ 于 2010-10-24 20:35 编辑

思路可以是这样..

#Include <ACN_NET.au3>  

$Mac = Mac() ;获取MAC地址,赋予$Mac

$Names = IniRead("config.ini", "MactoIP", $Mac, "") ;通过Mac,获取机器名.

if $Names == "" then
    MsgBox(0,"错误","未找到当前机器的MAC!")
    Exit
endif

Func Mac() ;获取机器Mac地址
$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"
$Output=""
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled != 0", "WQL", _
                        $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
        If IsObj($colItems) then
                For $objItem In $colItems
                        $Output1 = $Output & "" & $objItem.MACAddress; & @CRLF
                Next
                        Return $Output1
                Else
        Endif
EndFunc                ;==>Mac


更改机器名, IP地址,子网掩码,网关,DNS,IPX可以用下面的函数.
_WMI_SetNetworkAdapterInfo($Names, $IpADD, $SubMask, $GateWay, $DNS1, $DNS2, $IPX) ;WMI配置IP



配置文件(config.ini)格式为:

00:00:00:00:00:00 = 001
发表于 2010-10-24 20:24:48 | 显示全部楼层
最近我也在写。一个通过MAC设置,机器名. 基本上都写好了.  我也是网维大师, 也可以自动加还原, 网刻下去。就一步到位了, 自动设置IP,自动加还原。
发表于 2010-10-26 05:12:36 | 显示全部楼层
本帖最后由 viplight 于 2010-10-26 05:49 编辑

建议使用P版的 API获取方式
#Include <GetAdaptersInfo.au3> ;此文件在P版的贴里面下载
#Include <File.au3>
$Card=_GetAdaptersInfo()
$mymac=StringMid($Card[1][2],3,12);获得本机MAC地址
Dim $i
$line=_FileCountLines("d:\mac.txt");返回MAC.txt里所有的MAC行
For $i=1 To $line
$configmac=StringReplace(FileReadLine ("d:\mac.txt",$i),":","") ;此项就看你的MAC文件库是怎么配置的了,如果你直接使用如:000000000000这样的格式那么此处可为$configmac=FileReadLine ("d:\mac.txt",$i)
$stringcompare=StringCompare($mymac,$configmac)
If $stringcompare=0 Then
        MsgBox(0,"","找到相同的MAC地址确定后开始修改IP")
                _ipset()
                ExitLoop 
Else
        MsgBox(0,"","没到相同的MAC地址确定后进入下一项炒作")
EndIf
Next

Func _ipset()
        Exit
EndFunc
发表于 2010-10-26 09:38:21 | 显示全部楼层
楼主的思路不错,我以前自己有做过一个这个程式,分为这么几部分,供楼主参考:
1. 使用其它局域网扫描工具,获得全部的MAC地址,然后编辑一个MacData.ini文件,大致格式如下:
[MAC地址1]
机器名=xxxx
IP地址=192.168.0.xxx
IPX=xxxxxxx
DNS=202.93.128.110
[MAC地址2]
机器名=xxxx
IP地址=192.168.0.xxx
IPX=xxxxxxx
DNS=202.93.128.110
然后另外一个文件就是读取这个INI文件,然后更改计算机名,IP地址,IPX,DNS等等,可以直接放在Gho档案的启动文件夹里面,并且设置成只运行一次就自动删除.
大部分的功能代码在本论坛里面都可以找到。
以上思路供参考,是一定能够实现的,而且比较简单,相信楼主一定能够搞定啦。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-21 18:32 , Processed in 0.079875 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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