#NoTrayIcon $g_szVersion = "MacToIp 2.3" If WinExists($g_szVersion) Then Exit AutoItWinSetTitle($g_szVersion) HotKeySet("{ESC}", "_Terminate") Dim $Msg = '計(jì)算機(jī)修改信息。' & @CRLF & @CRLF If Not @OSType = "WIN32_NT" OR Not @OSLang = "0804" then;判斷是否支持此系統(tǒng) MsgBox(16, "錯(cuò)誤……Make By Amu", "本工具不支持此系統(tǒng)", 10) Exit EndIf ;設(shè)置配置文件路徑 $Mac2Ip = "Mac2Ip.ini" If Not FileExists($Mac2Ip) Then $Mac2Ip = @ScriptDir & "\Mac2Ip.ini" If Not FileExists($Mac2Ip) Then $Mac2Ip = @WorkingDir & "\Mac2Ip.ini" EndIf EndIf If Not FileExists($Mac2Ip) Then MsgBox(64, "錯(cuò)誤……Make By Amu", '沒(méi)有找到配置文件"' & $Mac2Ip & '"' & @CRLF & '或"' & $Mac2Ip & '"不在同一目錄下', 15) Exit EndIf $LocMAC = _GetLocalMAC() If $LocMAC[0] = 0 Then MsgBox(64, "錯(cuò)誤……Make By Amu", '找不到本機(jī)MAC地址,' & @CRLF & '請(qǐng)檢查本機(jī)配置!', 15) Exit Else For $m = 1 to $LocMAC[0] $info = IniRead($Mac2Ip, "Mac2Ip", $LocMAC[$m], "") If $info <> "" Then ExitLoop Next EndIf $info = StringSplit($info, "|") If $info[0] < 2 Then Dim $info[3] $PcName = _StringIsComputerName($info[1]) While @error $info[1] = InputBox("輸入的新計(jì)算機(jī)名格式不對(duì)。", '請(qǐng)重新設(shè)置計(jì)算機(jī)名!' & @CRLF & @CRLF & '標(biāo)準(zhǔn)名稱可以含有字母(a-z, A-Z)、數(shù)字(0-9)和連字符(-),但不能含有空格或句號(hào)(.)。名稱可能不完全是數(shù)字。', "", " M63") If @error Then _Terminate() $PcName = _StringIsComputerName($info[1]) If Not @error Then ExitLoop WEnd $PcName = $info[1] $Msg = $Msg & "計(jì)算機(jī)名 ....: " & $PcName & @CRLF $ipAdd = _StringIsIP($info[2]) While @error $info[2] = InputBox("IP地址格式錯(cuò)誤", "請(qǐng)重新輸入IP地址!", "", " M15", 1, 1, @DesktopWidth/2-95, @DesktopHeight/2-72) If @error Then _Terminate() $ipAdd = _StringIsIP($info[2]) If Not @error Then ExitLoop WEnd $Msg = $Msg & "IP地址 ....: " & $ipAdd & @CRLF $Mask = _StringIsIP(IniRead($Mac2Ip, "Setting", "Mask", "255.255.255.0")) While @error $Mask = InputBox("子網(wǎng)掩碼格式錯(cuò)誤", "請(qǐng)重新輸入子網(wǎng)掩碼!", "", " M15", 1, 1, @DesktopWidth/2-95, @DesktopHeight/2-72) If @error Then _Terminate() $Mask = _StringIsIP($Mask) If Not @error Then ExitLoop WEnd $Msg = $Msg & "子網(wǎng)掩碼 ....: " & $Mask & @CRLF $Gateway = _StringIsIP(IniRead($Mac2Ip, "Setting", "GateWay", "192.168.0.1")) While @error $Gateway = InputBox("默認(rèn)網(wǎng)關(guān)格式錯(cuò)誤", "請(qǐng)重新輸入網(wǎng)關(guān)!", "", " M15", 1, 1, @DesktopWidth/2-95, @DesktopHeight/2-72) If @error Then _Terminate() $Gateway = _StringIsIP($Gateway) If Not @error Then ExitLoop WEnd $Msg = $Msg & "默認(rèn)網(wǎng)關(guān) ....: " & $Gateway & @CRLF $CsKey = IniReadSection($Mac2Ip, "Cs15Key") If @error Then $CsKey = 0 Else $n = Random(1, $CsKey[0][0], 1) $CsKey = IniRead($Mac2Ip, "Cs15Key", $n, "1234567890123") EndIf If $CsKey <> 0 Then $Msg = $Msg & "CS-CDKEY ....: " & $CsKey & @CRLF $OK = MsgBox(33,"請(qǐng)確認(rèn)......Make By Amu", $Msg, 5) If $OK = 2 Then _Terminate() $SetName = _SetComputerName($PcName) $SetIpAdd = _SetIPAddress($ipAdd, $Mask, $Gateway) If $CsKey <> 0 Then RegWrite("HKCU\Software\Valve\CounterStrike\Settings", "key", "REG_SZ", $CsKey) Func _SetIPAddress($ipAdd, $Mask = "255.255.255.0", $Gateway = "") $Return = 0 $ipAdd = _StringIsIP($ipAdd) If $ipAdd = "" Then $Return = $Return + 1 $Mask = _StringIsIP($Mask) If $Mask = "" Then $Return = $Return + 2 $Gateway = _StringIsIP($Gateway) If $Gateway = "" Then $Return = $Return + 4 Dim $LocalIPAddress[1] = [$ipAdd] Dim $strSubnetMask[1] = [$Mask] Dim $strGateway[1] = [$Gateway] Dim $strGatewayMetric[1] = [1] $strComputer = "localhost" $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "oot\cimv2") $colNetAdapters = $objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE") If IsObj($colNetAdapters) Then For $objNetAdapter in $colNetAdapters If BitAND($Return, 1) = 0 AND BitAND($Return, 2) = 0 Then $objNetAdapter.EnableStatic($LocalIPAddress, $strSubnetMask) If BitAND($Return, 4) = 0 Then $objNetAdapter.SetGateways($strGateway, $strGatewayMetric) Next EndIf Return $Return EndFunc ;_SetIPAddress修改IP地址 Func _SetComputerName($strComputerName) $SetKey1 = "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\" $CtrlKey = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\" $Return = RegWrite ($SetKey1 & "Control\ComputerName\ComputerName", "ComputerName", "REG_SZ", $strComputerName) RegWrite ($SetKey1 & "Services\Tcpip\Parameters", "NV Hostname", "REG_SZ", $strComputerName) RegWrite ($SetKey1 & "Services\Tcpip\Parameters", "Hostname", "REG_SZ", $strComputerName) RegWrite ($CtrlKey & "Control\ComputerName\ComputerName", "ComputerName", "REG_SZ", $strComputerName) RegWrite ($CtrlKey & "Services\Tcpip\Parameters", "NV Hostname", "REG_SZ", $strComputerName) RegWrite ($CtrlKey & "Services\Tcpip\Parameters", "Hostname", "REG_SZ", $strComputerName) Return $Return EndFunc ;_SetComputerName修改計(jì)算機(jī)名 Func _GetLocalMAC() Dim $aNULL[1] = [0] $MAC = Chr(13) $strComputer = "localhost" $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "oot\cimv2") $colNicConfigs = $objWMIService.ExecQuery ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True") If IsObj($colNicConfigs) Then For $objItem In $colNicConfigs $objNic = $objWMIService.Get ("Win32_NetworkAdapter.DeviceID=" & $objItem.Index) $MAC = $MAC & Chr(10) & $objNic.MACAddress Next $MAC = StringReplace($MAC, Chr(13) & Chr(10), "") If StringInStr($MAC, ":") = 0 Then SetError(2) Return $aNULL Else $MAC = StringReplace($MAC, ":", "-") Return StringSplit($MAC, Chr(10)) EndIf Else SetError(1) Return $aNULL EndIf EndFunc ;_GetLocalMAC獲取本地MAC地址 Func _StringIsComputerName($strComputerName, $ShowMsgBox=1) If $strComputerName = "" OR StringLen($strComputerName) > 63 Then $err = '輸入的新計(jì)算機(jī)名格式不對(duì)。標(biāo)準(zhǔn)名稱可以含有字母(a-z, A-Z)、數(shù)字(0-9)和連字符(-),但不能含有空格或句號(hào)(.)。名稱可能不完全是數(shù)字。' SetError(1) Return 0 ElseIf StringIsDigit($strComputerName) = 1 Then If @OSVersion = "WIN_2000" Then $Title = "網(wǎng)絡(luò)標(biāo)識(shí)" Else $Title = "計(jì)算機(jī)名更改" EndIf If $ShowMsgBox=1 Then MsgBox(48, $Title, '新計(jì)算機(jī)名 "' & $strComputerName & '" 是一個(gè)數(shù)字。名稱不應(yīng)是數(shù)字。') SetError(2) Return 0 EndIf $NoText = [email=]'`~!@#$[/email]. ^&*()=+[]{}\|;:' & Chr(39) & '",<>/?' For $i = 1 To StringLen($strComputerName) If StringInStr($NoText, StringMid($strComputerName, $i, 1)) <> 0 Then If @OSVersion = "WIN_2000" Then $Title = "網(wǎng)絡(luò)標(biāo)識(shí)" $Text = '新計(jì)算機(jī)名 "' & $strComputerName & '" 包括非法的字符。' Else $Title = "計(jì)算機(jī)名更改" $Text = '新計(jì)算機(jī)名 "' & $strComputerName & '" 包括不允許的字符。不允許的字符包括 ` ~ ! @ # $ ^ & * ( ) = + [ ] { } \ | ; : ' & Chr(39) & ' " , < > / 和 ?' EndIf If $ShowMsgBox = 1 Then MsgBox(48, $Title, $Text) SetError(3) Return 0 EndIf Next If $ShowMsgBox <> 1 Then Return 1 $Text = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-" For $i = 1 To StringLen($strComputerName) If StringInStr($Text, StringMid($strComputerName, $i, 1)) = 0 Then If @OSVersion = "WIN_2000" Then $Title = "網(wǎng)絡(luò)標(biāo)識(shí)" Else $Title = "計(jì)算機(jī)名更改" EndIf $iMsgBoxAnswer = MsgBox(48+4, $Title, '計(jì)算機(jī)名 "' & $strComputerName & '" 含有一個(gè)或一個(gè)以上非標(biāo)準(zhǔn)字符。標(biāo)準(zhǔn)字符包括字母(A-Z,a-z)、數(shù)字(0-9)和連字符(-)。如使用非標(biāo)準(zhǔn)字符名稱,除非您所屬網(wǎng)絡(luò)使用 Microsoft DNS 服務(wù)器,否則其他用戶就會(huì)在網(wǎng)絡(luò)上找不到您的計(jì)算機(jī)。要使用這個(gè)非標(biāo)準(zhǔn)名稱嗎?') If $iMsgBoxAnswer = 6 Then Return 1 Else SetError(4) Return 0 EndIf EndIf Next EndFunc ; _StringIsComputerName判斷計(jì)算機(jī)名是否正確 Func _StringIsIP($strIP) $str = StringSplit($strIP, ".") If $str[0] <> 4 Then SetError(1) return ('') ElseIf StringIsDigit($str[1]) <> 1 OR StringIsDigit($str[2]) <> 1 OR StringIsDigit($str[3]) <> 1 OR StringIsDigit($str[4]) <> 1 Then SetError(2) return ('') ElseIf $str[1] > 255 OR $str[2] > 255 OR $str[3] > 255 OR $str[4] > 255 Then SetError(3) return ('') Else return (Int($str[1]) & "." & Int($str[2]) & "." & Int($str[3]) & "." & Int($str[4])) EndIf EndFunc ;_StringIsIP判斷IP格式是否正確 Func _Terminate() ToolTip("正在退出……" & @CR & "謝謝使用" & @CR & @YEAR & "年" & @MON & "月" & @MDAY & "日", @DesktopWidth-90, @DesktopHeight-71) Sleep(3000) Exit 0 EndFunc