lhy6456210 发表于 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;获得本机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内容如下:

kood481748 发表于 2010-10-24 16:59:03

这种程序网上一大票,你找找看吧,我也是做网吧维护的,我在早几年前就用过这类似的程序了。
如果楼主只想根据网卡mac改IP,计算机名这样的话,那你不必研究了,现成的程序多得很。
如果楼主想用这个来学习练手,那你就继续研究一下。

另外,楼主是做网吧维护的对吧?网吧用的游戏菜单不是支持自动改IP的吗?

lhy6456210 发表于 2010-10-24 17:17:19

回复 2# kood481748


    我用网维大师,支持的,但是不好用,IPX就不会改

haorui658 发表于 2010-10-24 17:19:36

推荐Mac MakeUp, 非常的好用

kood481748 发表于 2010-10-24 17:35:22

我用的是讯闪2010,IPX会自动隋机更改一个,网维大师还是收费软件,IPX都不会自己改?
这网维大师也太牛P了吧

DenQ 发表于 2010-10-24 20:03:47

楼主. 用 _NetworkAdapterInfo() 用这个貌似不能获取到本机的MAC。 如果是刚刻盘网络是不通的。。

DenQ 发表于 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

DenQ 发表于 2010-10-24 20:24:48

最近我也在写。一个通过MAC设置,机器名. 基本上都写好了.我也是网维大师, 也可以自动加还原, 网刻下去。就一步到位了, 自动设置IP,自动加还原。

viplight 发表于 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,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

kingfirekkk 发表于 2010-10-26 09:38:21

楼主的思路不错,我以前自己有做过一个这个程式,分为这么几部分,供楼主参考:
1. 使用其它局域网扫描工具,获得全部的MAC地址,然后编辑一个MacData.ini文件,大致格式如下:

机器名=xxxx
IP地址=192.168.0.xxx
IPX=xxxxxxx
DNS=202.93.128.110

机器名=xxxx
IP地址=192.168.0.xxx
IPX=xxxxxxx
DNS=202.93.128.110
然后另外一个文件就是读取这个INI文件,然后更改计算机名,IP地址,IPX,DNS等等,可以直接放在Gho档案的启动文件夹里面,并且设置成只运行一次就自动删除.
大部分的功能代码在本论坛里面都可以找到。
以上思路供参考,是一定能够实现的,而且比较简单,相信楼主一定能够搞定啦。
页: [1]
查看完整版本: 帮忙看一下我的代码对不对??