程序:宿舍局域网实用工具
优质
小牛编辑
137浏览
2023-12-01
脚本编写:天际奇光(Skight) -> Engine @ bbs.hanzify.org
这是以前用NSIS写的一个UI小工具,因为含有很多 NSIS 自定义界面操作,所以拿来供新手参考。强烈不推荐使用 NSIS 来实现界面工具,真不如用VC,Delphi来得简单...
工具策略版权:Skight @ Hesung Studio 脚本编写: 2006.6.1 脚本整理提供: 2007.4.3
引用 LanModifier.nsi 的内容:
!include "LanModifier.nsh" !define MUI_ICON "${RES_ICON}" !define MUI_UI "${RES_UI}" Name ${STR_NAME} Caption "${STR_CAPTION}" OutFile ${STR_OUTFILE} CRCCheck off XPStyle off !insertmacro MUI_LANGUAGE "${STR_MUI_LANG}" VIProductVersion "${STR_VERSION}" VIAddVersionKey /LANG=${LANG_ID} "ProductName" "${STR_PRODCTNAME}" VIAddVersionKey /LANG=${LANG_ID} "Comments" "${STR_COMMENTS}" VIAddVersionKey /LANG=${LANG_ID} "CompanyName" "${STR_COMPANYNAME}" VIAddVersionKey /LANG=${LANG_ID} "LegalCopyright" "${STR_COPYRIGHT}" VIAddVersionKey /LANG=${LANG_ID} "FileDescription" "${STR_FILEDESCRIPTION}" VIAddVersionKey /LANG=${LANG_ID} "FileVersion" "${STR_FILEVERSION}" VIAddVersionKey /LANG=${LANG_ID} "InternalName" "${STR_INTNAME}" VIAddVersionKey /LANG=${LANG_ID} "OriginalFilename" "${STR_OUTFILE}" Page custom ShowCustom LeaveCustom Page instfiles Function .onInit SYSTEM::Call "kernel32::CreateMutexA(i 0, i 0, t '${STR_CAPTION}') i .r0 ?e" Pop $0 ${if} $0 != 0 StrLen $0 "${STR_CAPTION}" IntOp $0 $0 + 1 loop: FindWindow $1 '#32770' '' 0 $1 ${if} $1 != 0 SYSTEM::Call "user32::GetWindowText(i r1, t .r2, i r0) i." StrCmp $2 "${STR_CAPTION}" 0 loop SYSTEM::Call "user32::SetForegroundWindow(i r1) i." ${endif} ShowWindow $1 2 ShowWindow $1 1 Abort ${endif} ClearErrors ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion IfErrors 0 Pass System::Call 'user32::MessageBeep(i) i (0x00000110)' Messagebox::show MB_ICONHAND|MB_TOPMOST "LanModifier" "0,103" \ "您的 Windows 版本过低,本工具只运行于 Win2000以上的 Windows 平台中。 " \ "确定 (&O)" Pop $R0 Quit Pass: ${Var} COUNTER_HOSTNUM StrCpy $COUNTER_HOSTNUM 0 ;;初始化主机计数器 InitPluginsDir File /oname=${MUI_INIFILE} "${RES_INIFILE}" File /oname=${MUI_ICOFILE} "${RES_ICOFILE}" WriteINIStr "${MUI_INIFILE}" "Field ${LAB_AUTHOR}" "Text" "${STR_AUTHOR}" WriteINIStr "${MUI_INIFILE}" "Field ${ICON_HOST}" "Text" "${MUI_ICOFILE}" ReadRegStr $R0 HKCR "Hlbackupini.file" "" ${if} $R0 != "主机列表备份文件" WriteRegStr HKCR ".hlbf" "" "Hlbackupini.file" WriteRegStr HKCR "Hlbackupini.file" "" "主机列表备份文件" WriteRegStr HKCR "Hlbackupini.file\DefaultIcon" "" "$SYSDIR\Shell32.dll,-178" WriteRegStr HKCR "Hlbackupini.file\shell\open" "" "" WriteRegStr HKCR "Hlbackupini.file\shell\open\command" "" "$\"$PROGRAMFILES\Windows NT\Accessories\wordpad.exe$\" $\"%1$\"" System::Call 'Shell32::SHChangeNotify(i 0x8000000, i 0, i 0, i 0)' ${endif} Call InitNetCardInfo ReadINIStr $0 ${MUI_INIFILE} "Settings" NetCardNum ${if} $0 = 1 ;有主机信息 ReadINIStr ${ARG_Var.1} "${MUI_INIFILE}" "Field ${DL_HOST}" "State" SendMessage $HWND_TXT_HOST ${WM_SETTEXT} 0 "STR:${ARG_Var.1}" ReadRegStr ${ARG_Var.2} HKLM "${REG_ME_HOSTLIST}\${ARG_Var.1}" "MAC" ${if} ${ARG_Var.2} == "" ${orif} ${ARG_Var.2} == ${STR_UNSETTED} StrCpy ${ARG_Var.2} "${STR_UNSETTED}" ${else} StrLen ${ARG_Var.3} "${ARG_Var.2}" ${if} ${ARG_Var.3} != 12 StrCpy ${ARG_Var.2} "${STR_ERRORFORMAT}" ${endif} ${endif} SendMessage $HWND_TXT_MAC ${WM_SETTEXT} 0 "STR:${ARG_Var.2}" ReadRegStr ${ARG_Var.2} HKLM "${REG_ME_HOSTLIST}\${ARG_Var.1}" "IP" ${if} ${ARG_Var.2} == "" StrCpy ${ARG_Var.2} "${STR_UNSETTED}" ${endif} SendMessage $HWND_TXT_IP ${WM_SETTEXT} 0 "STR:${ARG_Var.2}" ReadRegStr ${ARG_Var.2} HKLM "${REG_ME_HOSTLIST}\${ARG_Var.1}" "MASK" ${if} ${ARG_Var.2} == "" StrCpy ${ARG_Var.2} "${STR_UNSETTED}" ${endif} SendMessage $HWND_TXT_MASK ${WM_SETTEXT} 0 "STR:${ARG_Var.2}" ReadRegStr ${ARG_Var.2} HKLM "${REG_ME_HOSTLIST}\${ARG_Var.1}" "NETGATE" ${if} ${ARG_Var.2} == "" StrCpy ${ARG_Var.2} "${STR_UNSETTED}" ${endif} SendMessage $HWND_TXT_NETGATE ${WM_SETTEXT} 0 "STR:${ARG_Var.2}" ReadRegStr ${ARG_Var.2} HKLM "${REG_ME_HOSTLIST}\${ARG_Var.1}" "DNS" ${if} ${ARG_Var.2} == "" StrCpy ${ARG_Var.2} "${STR_UNSETTED}" ${endif} SendMessage $HWND_TXT_DNS ${WM_SETTEXT} 0 "STR:${ARG_Var.2}" ${else} ;无主机信息 ReadRegStr ${ARG_Var.2} HKLM "${REG_WINLOGON}" "AltDefaultDomainName" SendMessage $HWND_TXT_HOST ${WM_SETTEXT} 0 "STR:${ARG_Var.2}" ReadINIStr ${ARG_Var.1} ${MUI_INIFILE} "Field ${DL_NETCARD}" State ReadINIStr ${ARG_Var.2} ${MUI_INIFILE} "${ARG_Var.1}" "MAC" SendMessage $HWND_TXT_MAC ${WM_SETTEXT} 0 "STR:${ARG_Var.2}" ReadINIStr ${ARG_Var.2} ${MUI_INIFILE} "${ARG_Var.1}" "IP" SendMessage $HWND_TXT_IP ${WM_SETTEXT} 0 "STR:${ARG_Var.2}" ReadINIStr ${ARG_Var.2} ${MUI_INIFILE} "${ARG_Var.1}" "MASK" SendMessage $HWND_TXT_MASK ${WM_SETTEXT} 0 "STR:${ARG_Var.2}" ReadINIStr ${ARG_Var.2} ${MUI_INIFILE} "${ARG_Var.1}" "NETGATE" SendMessage $HWND_TXT_NETGATE ${WM_SETTEXT} 0 "STR:${ARG_Var.2}" ReadINIStr ${ARG_Var.2} ${MUI_INIFILE} "${ARG_Var.1}" "DNS" SendMessage $HWND_TXT_DNS ${WM_SETTEXT} 0 "STR:${ARG_Var.2}" ${endif} ${if} $COUNTER_HOSTNUM 0 !insertmacro EnableGlobalBtn $2 1 ${else} !insertmacro EnableGlobalBtn $2 0 ReadINIStr $2 "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "HWND" ShowWindow $2 0 ReadINIStr $2 "${MUI_INIFILE}" "Field ${GB_GLOBAL}" "HWND" SendMessage $2 ${WM_SETTEXT} 0 "STR:帮助信息" ReadINIStr $2 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND" EnableWindow $2 0 ReadINIStr $2 "${MUI_INIFILE}" "Field ${LAB_HELP}" "HWND" ShowWindow $2 1 SetCtlColors $2 0x6C6C6C transparent ;CreateFont $1 "Arial" "8" "700" ;SendMessage $2 ${WM_SETFONT} $1 0 ${endif} !insertmacro EditCtrStyle $HWND_TXT_MAC ${UPPERCASE} InstallOptions::show Pop $0 ;IO-Dll执行结果 FunctionEnd Function LeaveCustom ReadINIStr $0 "${MUI_INIFILE}" "Settings" "State" ${Switch} $0 ############################################################## ${Case} ${DL_NETCARD} ;MessageBox MB_OK "DL_NETCARD" # 按下 [选择网卡] 下拉列表 ############################################################## ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_NETCARD}" "State" WriteRegStr HKLM "${REG_ME}\Settings" "NetCardSeleted" $1 !insertmacro EnableTXTEdit $2 0 ;;禁用编辑文本框 ${if} $COUNTER_HOSTNUM > 0 !insertmacro EnableGlobalBtn $2 1 ${else} !insertmacro EnableGlobalBtn $2 0 ReadINIStr $2 "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "HWND" ShowWindow $2 0 ReadINIStr $2 "${MUI_INIFILE}" "Field ${GB_GLOBAL}" "HWND" SendMessage $2 ${WM_SETTEXT} 0 "STR:帮助信息" ReadINIStr $2 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND" EnableWindow $2 0 ReadINIStr $2 "${MUI_INIFILE}" "Field ${LAB_HELP}" "HWND" ShowWindow $2 1 SetCtlColors $2 0x6C6C6C transparent ;CreateFont $1 "Arial" "8" "700" ;SendMessage $2 ${WM_SETFONT} $1 0 ${endif} !insertmacro ShowReg2Txt $1 $2 $3 ${Break} ############################################################## ${Case} ${DL_HOST} ;MessageBox MB_OK "DL_HOST" # 按下 [主机标识] 下拉列表 ############################################################## ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_HOST}" "State" WriteRegStr HKLM "${REG_ME_HOSTLIST}" "LastHost" "$1" !insertmacro EnableGlobalBtn $2 1 !insertmacro EnableTXTEdit $2 0 ;;禁用编辑文本框 !insertmacro ShowReg2Txt $1 $2 $3 ${Break} ############################################################## ${Case} ${BTN_EDIT_HOST} ;MessageBox MB_OK "BTN_EDIT_HOST" # 按下 [编辑] 按钮 ############################################################## !insertmacro EnableTXTEdit $2 1 ;;可用编辑文本框 ReadINIStr $2 "${MUI_INIFILE}" "Field ${BTN_EXPORT_HOSTLIST}" "HWND" WriteINIStr "${MUI_INIFILE}" "Field ${BTN_EXPORT_HOSTLIST}" "Text" "放弃编辑主机(&C)" SendMessage $2 ${WM_SETTEXT} 0 "STR:放弃编辑主机(&C)" ;---检测转化文本字符显示 !insertmacro CovertTxt4Edit $2 !insertmacro EnableGlobalBtn $2 0 ;;隐藏全局操作按钮区-->显示临时编辑帮助区 !insertmacro ShowNotePad $2 $1 ReadINIStr $2 "${MUI_INIFILE}" "Field ${BTN_ADD}" "HWND" ;;隐藏[添加到主机列表] ShowWindow $2 0 ReadINIStr $2 "${MUI_INIFILE}" "Field ${BTN_UPDATE}" "HWND" ;; 可用[更新主机] EnableWindow $2 1 ShowWindow $2 1 ReadINIStr $2 "${MUI_INIFILE}" "Field ${BTN_DELETE}" "HWND" ;; 可用[删除主机] ShowWindow $2 1 ${if} $COUNTER_HOSTNUM > 0 ;有主机信息 EnableWindow $2 1 ${else} EnableWindow $2 0 ${endif} Abort ${Break} ############################################################## ${Case} ${BTN_NEW_HOST} ;MessageBox MB_OK "BTN_NEW_HOST" # 按下 [新建] 按钮 ############################################################## ReadINIStr $2 "${MUI_INIFILE}" "Field ${BTN_EXPORT_HOSTLIST}" "HWND" WriteINIStr "${MUI_INIFILE}" "Field ${BTN_EXPORT_HOSTLIST}" "Text" "放弃新建主机(&C)" SendMessage $2 ${WM_SETTEXT} 0 "STR:放弃新建主机(&C)" SendMessage $HWND_TXT_HOST ${WM_SETTEXT} 0 "STR:" SendMessage $HWND_TXT_MAC ${WM_SETTEXT} 0 "STR:" SendMessage $HWND_TXT_IP ${WM_SETTEXT} 0 "STR:" ReadINIStr $4 ${MUI_INIFILE} "Field ${DL_NETCARD}" State ReadINIStr $3 ${MUI_INIFILE} "$4" "IP" StrCpy $1 "${STR_NOTEPAD_HELP}$\r$\n可能有用的参考信息:$\t IP 地址:$3$\r$\n" StrCpy $3 $3 -3 SendMessage $HWND_TXT_IP ${WM_SETTEXT} 0 "STR:$3" ReadINIStr $3 ${MUI_INIFILE} "$4" "MASK" SendMessage $HWND_TXT_MASK ${WM_SETTEXT} 0 "STR:$3" StrCpy $1 "$1子网掩码:$3" ReadINIStr $3 ${MUI_INIFILE} "$4" "NETGATE" SendMessage $HWND_TXT_NETGATE ${WM_SETTEXT} 0 "STR:$3" StrCpy $1 "$1 默认网关:$3" ReadINIStr $3 ${MUI_INIFILE} "$4" "DNS" SendMessage $HWND_TXT_DNS ${WM_SETTEXT} 0 "STR:$3" StrCpy $1 "$1 首选DNS :$3" ;MessageBox MB_OK "$1" ReadINIStr $2 "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "State" ${if} $2 == "${STR_NOTEPAD_HELP}" ${orif} $2 == "" ReadINIStr $2 "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "HWND" ;SendMessage $2 ${WM_SETTEXT} 0 "STR:${STR_NOTEPAD_HELP}$\r$\n$\r$\n$1$\r$\n" SendMessage $2 ${WM_SETTEXT} 0 "STR:$1" ;SendMessage $2 ${EM_SETSEL} 255 0 ${endif} ShowWindow $2 1 ReadINIStr $2 "${MUI_INIFILE}" "Field ${BTN_UPDATE}" "HWND" ;; 隐藏[更新主机] ShowWindow $2 0 EnableWindow $2 0 ReadINIStr $2 "${MUI_INIFILE}" "Field ${BTN_DELETE}" "HWND" ;; 隐藏[删除主机] ShowWindow $2 0 EnableWindow $2 0 ReadINIStr $2 "${MUI_INIFILE}" "Field ${BTN_ADD}" "HWND" ;; 显示[添加到主机列表] ShowWindow $2 1 EnableWindow $2 1 !insertmacro EnableTXTEdit $2 1 ;;可用编辑文本框 !insertmacro EnableGlobalBtn $2 0 ;;隐藏全局操作按钮区-->显示临时编辑帮助区 System::Call "user32::SetFocus(i $HWND_TXT_HOST)i" ;;设置焦点 Abort ;${Break} ############################################################## ${Case} ${BTN_IMPORT_HOSTLIST} ;MessageBox MB_OK "BTN_IMPORT_HOSTLIST" # 按下 [导入备份列表] 按钮 ############################################################## ${Do} ;FindWindow $4 '#32770' '${STR_CAPTION}' ;ShowWindow $4 0 Dialogs::Open "${STR_OPEN_FILE_EXT}" 1 "${STR_OPEN_CAPTION}" $EXEDIR ${VAR_OPENSAVE_ID} ${if} ${VAR_OPENSAVE} == 0 ${ExitDo} ${else} System::Call 'kernel32::_lopen(t "${VAR_OPENSAVE}", i 0) i .r1' System::Call 'kernel32::GetFileSize(i $1, i) i .r2' IntOp $2 $2 / 1024 System::Call 'kernel32::_lclose(i $1) i' ${if} $2 0 ;;导入了新主机 !insertmacro EnableGlobalBtn $2 1 !insertmacro EnableTXTEdit $2 0 ;;禁用编辑文本框 ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND" EnableWindow $1 1 SendMessage $1 ${CB_SHOWDROPDOWN} 1 1 ${endif} ;;开始转化导入 ${ExitDo} ${endif} ${endif} System::Call 'user32::MessageBeep(i) i (0x00000101)' Messagebox::show MB_ICONHAND|MB_TOPMOST "添加到主机列表" "$SYSDIR\Shell32.dll,200" \ "${MSG_OPEN_ERROR} " \ "确定 (&O)" Pop $R0 ${endif} ${Loop} !insertmacro ShowReg2Txt $1 $2 $3 ${Break} ############################################################## ${Case} ${BTN_EXPORT_HOSTLIST} ;MessageBox MB_OK "BTN_EXPORT_HOSTLIST" # 按下 [备份主机列表] 按钮 ############################################################## ReadINIStr $4 "${MUI_INIFILE}" "Field ${BTN_EXPORT_HOSTLIST}" Text StrCpy $4 "$4" 4 ${if} $4 == "放弃" !insertmacro EnableTXTEdit $2 0 ;;禁用编辑文本框 ${if} $COUNTER_HOSTNUM < 1 ReadINIStr $2 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND" EnableWindow $2 0 ReadINIStr $2 "${MUI_INIFILE}" "Field ${GB_GLOBAL}" "HWND" SendMessage $2 ${WM_SETTEXT} 0 "STR:帮助信息" ReadINIStr $2 "${MUI_INIFILE}" "Field ${LAB_HELP}" "HWND" ShowWindow $2 1 SetCtlColors $2 0x004040 transparent ReadINIStr $2 "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "HWND" ShowWindow $2 0 ${else} !insertmacro EnableGlobalBtn $2 1 ${endif} ${else} ${if} $COUNTER_HOSTNUM < 1 System::Call 'user32::MessageBeep(i) i (0x00000001)' MessageBox::show MB_ICONHAND|MB_TOPMOST "备份主机列表" "$SYSDIR\shell32.dll,234" \ "当前没有任何主机信息,无需备份。 " \ "确定 (&O)" Pop $R0 Abort ${endif} FindWindow $4 '#32770' '${STR_CAPTION}' Dialogs::Save "${STR_SAVE_FILE_EXT}" 1 "${STR_SAVE_CAPTION}" $EXEDIR ${VAR_OPENSAVE_ID} ${if} ${VAR_OPENSAVE} == 0 Abort ${else} StrCpy $1 "${VAR_OPENSAVE}" "" -5 StrCpy $2 $1 "" -4 ${if} $2 == ".reg" ExecWait `"$WINDIR\Regedit.exe" /s /e "${VAR_OPENSAVE}" "${REG_ME_HOSTLIST_FULL}"` ShowWindow $4 0 System::Call 'user32::MessageBeep(i) i (0x00000001)' MessageBox::show MB_ICONHAND|MB_TOPMOST "备份为REG格式" "$SYSDIR\shell32.dll,178" \ "已成功将当前列表中共 $COUNTER_HOSTNUM 个主机信息备份到指定的注册表文件中。 " \ "确定 (&O)" Pop $R0 ShowWindow $4 1 Abort ${else} ${if} $1 != ".hlbf" StrCpy ${VAR_OPENSAVE} "${VAR_OPENSAVE}.hlbf" ${endif} ShowWindow $4 0 Call SaveHostlist2INI System::Call 'user32::MessageBeep(i) i (0x00000001)' MessageBox::show MB_ICONHAND|MB_TOPMOST "备份完成" "$SYSDIR\shell32.dll,178" \ "已成功将当前列表中共 $COUNTER_HOSTNUM 个主机信息保存到指定的文件中。 " \ "确定 (&O)" Pop $R0 ShowWindow $4 1 ${endif} ${endif} ${endif} ;ShowWindow $1 1 !insertmacro ShowReg2Txt $1 $2 $3 ${Break} ############################################################## ${Case} ${BTN_DELETE} ;MessageBox MB_OK "BTN_DELETE" # 按下 [删除主机] 按钮 ############################################################## ReadINIStr $3 "${MUI_INIFILE}" "Field ${DL_HOST}" "State" System::Call 'user32::MessageBeep(i) i (0x00000000)' MessageBox::show MB_ICONHAND|MB_TOPMOST "删除确认" "$SYSDIR\Shell32.dll,33" \ "你确定删除主机标识 $3 对应的主机信息吗? " \ "确定 (&O)" "取消 (&C)" Pop $R0 ${if} $R0 != 1 Abort ${endif} DeleteRegKey HKLM "${REG_ME_HOSTLIST}\$3" DeleteRegValue HKLM "${REG_ME_HOSTLIST}" "LastHost" !insertmacro EnableTXTEdit $2 0 ;;禁用编辑文本框 ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND" SendMessage $1 ${CB_GETCURSEL} "" "" $2 SendMessage $1 ${CB_DELETESTRING} "$2" "" !insertmacro AddHostNum -1 ${if} $COUNTER_HOSTNUM < 1 ;!insertmacro EnableGlobalBtn $2 1 ReadINIStr $2 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND" EnableWindow $2 0 ReadINIStr $2 "${MUI_INIFILE}" "Field ${GB_GLOBAL}" "HWND" SendMessage $2 ${WM_SETTEXT} 0 "STR:帮助信息" ReadINIStr $2 "${MUI_INIFILE}" "Field ${LAB_HELP}" "HWND" SetCtlColors $2 0x004040 transparent ShowWindow $2 1 ReadINIStr $2 "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "HWND" ShowWindow $2 0 ${else} !insertmacro EnableGlobalBtn $2 1 ${endif} Call ResetSelectHost !insertmacro ShowReg2Txt $1 $2 $3 ${Break} ############################################################## ${Case} ${BTN_UPDATE} ;MessageBox MB_OK "BTN_UPDATE" # 按下 [保存更新] 按钮 ############################################################## ReadINIStr $3 "${MUI_INIFILE}" "Field ${TXT_HOST}" "State" ${if} $3 == "" System::Call 'user32::MessageBeep(i) i (0x00000001)' MessageBox::show MB_ICONHAND|MB_TOPMOST "保存更新" "$SYSDIR\shell32.dll,220" \ "请填写主机标识。 " \ "确定(&O)" Pop $R0 System::Call "user32::SetFocus(i $HWND_TXT_HOST)i" Abort ${else} ${if} $COUNTER_HOSTNUM < 1 ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND" SendMessage $1 ${CB_GETCURSEL} "" "" $2 SendMessage $1 ${CB_DELETESTRING} "$2" "" ;;删除旧主机标识 !insertmacro AddHostNum 1 DeleteINIStr "${MUI_INIFILE}" "Field ${DL_HOST}" "State" ${endif} ReadINIStr $4 "${MUI_INIFILE}" "Field ${DL_HOST}" "State" ${if} "$3" == "$4" DeleteRegKey HKLM "${REG_ME_HOSTLIST}\$4" ${else} ;;标识改动 ReadRegStr $1 HKLM "${REG_ME_HOSTLIST}\$3" "" ${if} $1 == "Setted" ;;已有标识 System::Call 'user32::MessageBeep(i) i (0x00000001)' MessageBox::show MB_ICONHAND|MB_DEFBUTTON2|MB_TOPMOST "保存更新" "$SYSDIR\shell32.dll,220" \ "主机标识 $\"$3$\" 已被占用,保存更新将会覆盖原主机信息,是否继续? " \ "是 (&Y)" "否 (&N)" Pop $R0 ${if} $R0 != 1 ;;放弃覆盖 SendMessage $HWND_TXT_HOST ${EM_SETSEL} 255 0 System::Call "user32::SetFocus(i $HWND_TXT_HOST)i" Abort ${endif} ;;要覆盖 ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND" SendMessage $1 ${CB_SELECTSTRING} 0 "STR:$3" ${else} ;;新的标识 DeleteRegKey HKLM "${REG_ME_HOSTLIST}\$4" ;;删除旧主机 ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND" SendMessage $1 ${CB_GETCURSEL} "" "" $2 SendMessage $1 ${CB_DELETESTRING} "$2" "" ;;删除旧主机标识 SendMessage $1 ${CB_ADDSTRING} 0 "STR:$3" ;;添加新标识 SendMessage $1 ${CB_SELECTSTRING} 0 "STR:$3" ${endif} ${endif} !insertmacro EnableGlobalBtn $2 1 !insertmacro EnableTXTEdit $2 0 ;;禁用编辑文本框 !insertmacro SaveTxt2Reg $3 $2 $1 ;;保存并处理文本显示 ${endif} Abort ; ${Break} ############################################################## ${Case} ${BTN_ADD} ;MessageBox MB_OK "BTN_ADD" # 按下 [添加到主机列表] 按钮 ############################################################## ReadINIStr $3 "${MUI_INIFILE}" "Field ${TXT_HOST}" "State" ${if} $3 == "" ;没填写主机标识 System::Call 'user32::MessageBeep(i) i (0x00000001)' Messagebox::show MB_ICONHAND|MB_TOPMOST "添加到主机列表" "$SYSDIR\Shell32.dll,176" \ "请先为当前主机填写一个主机标识,以方便以后在主机标识下拉菜单中选择。 " \ "确定(&O)" Pop $R0 System::Call "user32::SetFocus(i $HWND_TXT_HOST)i" Abort ${else} ;;开始添加到操作 ReadRegStr $1 HKLM "${REG_ME_HOSTLIST}\$3" "" ${if} $1 == "Setted" ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND" SendMessage $1 ${CB_SELECTSTRING} 0 "STR:$3" System::Call 'user32::MessageBeep(i) i (0x00000001)' MessageBox::show MB_ICONHAND|MB_DEFBUTTON2|MB_TOPMOST "添加到主机列表" "$SYSDIR\shell32.dll,176" \ "主机标识 $\"$3$\" 已被占用,是否将其覆盖? " \ "是 (&Y)" "否 (&N)" Pop $R0 ${if} $R0 != 1 ;;放弃覆盖 SendMessage $HWND_TXT_HOST ${EM_SETSEL} 255 0 System::Call "user32::SetFocus(i $HWND_TXT_HOST)i" Abort ${endif} ;;覆盖 ${else} ${if} $COUNTER_HOSTNUM < 1 ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND" SendMessage $1 ${CB_GETCURSEL} "" "" $2 SendMessage $1 ${CB_DELETESTRING} "$2" "" ;;删除旧主机标识 ${endif} !insertmacro AddHostNum 1 ;;全局计数器+1 ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND" SendMessage $1 ${CB_ADDSTRING} 0 "STR:$3" SendMessage $1 ${CB_SELECTSTRING} -1 "STR:$3" ${endif} ;;同步到窗体信息INI文件 WriteINIStr ${MUI_INIFILE} "Field ${DL_HOST}" State "$3" !insertmacro EnableGlobalBtn $2 1 !insertmacro EnableTXTEdit $2 0 ;;禁用编辑文本框 !insertmacro SaveTxt2Reg $3 $2 $1 ;;保存并处理文本显示 ${endif} !insertmacro ShowReg2Txt $1 $2 $3 ${Break} ############################################################## ${Case} ${BTN_CHANGE_MAC} ;MessageBox MB_OK "BTN_CHANGE_MAC" # 按下 [修改MAC] 按钮 ############################################################## ReadINIStr $2 "${MUI_INIFILE}" "Field ${TXT_MAC}" "State" StrCpy $4 "更改为 $\"$2$\"" ${if} $2 == "${STR_UNSETTED}" ${orif} $2 == "${STR_ERRORFORMAT}" StrCpy $2 "" StrCpy $4 "还原为 $\"网卡缺省值$\"" ${endif} ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_NETCARD}" "State" ReadINIStr $1 "${MUI_INIFILE}" "$1" "RegKeyIndex" ReadRegStr $3 HKLM "${REG_NETWORK_ADAPTERS}\$1" "NetworkAddress" ${if} $3 == $2 System::Call 'user32::MessageBeep(i) i (0x00000002)' MessageBox::show MB_ICONHAND|MB_TOPMOST "提示" "0,103" \ "当前 MAC 信息 已经是你要修改的值,无需重复修改。$\r$\n$\r$\n提示:你可以 [开启/禁用网络连接] 以刷新 MAC 信息。 $\r$\n" \ "哦 (&O)" Pop $R0 Abort ${orif} $3 == "" StrCpy $3 "网卡缺省值" ${endif} System::Call 'user32::MessageBeep(i) i (0x00000001)' MessageBox::show MB_ICONHAND|MB_DEFBUTTON2|MB_TOPMOST "修改 MAC 确认" "$SYSDIR\shell32.dll,24" \ "你确定要将当前 MAC 信息 $\"$3$\" $4 吗?" \ "确定 (&O)" "不要 (&C)" Pop $R0 ${if} $R0 != 1 ;;不修改 Abort ${endif} ${if} $2 == "" DeleteRegValue HKLM "${REG_NETWORK_ADAPTERS}\$1" "NetworkAddress" ${else} WriteRegStr HKLM "${REG_NETWORK_ADAPTERS}\$1" "NetworkAddress" "$2" ${endif} System::Call 'user32::MessageBeep(i) i (0x00000001)' MessageBox::show MB_ICONHAND|MB_DEFBUTTON2|MB_TOPMOST "MAC 修改成功" "$SYSDIR\shell32.dll,137" \ "MAC 信息已经成功更改,是否要立刻 [开启/禁用网络连接] 以生效更新? " \ "是 (&Y)" "否 (&N)" Pop $R0 ${if} $R0 == 1 StrCpy $R0 "ExecTwice" Call RefreshConnection StrCpy $R0 "" ${endif} Abort ;${Break} ############################################################## ${Case} ${BTN_CHANGE_IP} ;MessageBox MB_OK "BTN_CHANGE_MAC" # 按下 [修改IP] 按钮 ############################################################## ReadINIStr $2 ${MUI_INIFILE} "Field ${DL_NETCARD}" State ReadINIStr $2 ${MUI_INIFILE} "$2" "InstanceId" ReadRegStr $3 HKLM "${REG_NETWORK_CONNECTIONS}\$2\Connection" "Name" System::Call 'user32::MessageBeep(i) i (0x00000001)' MessageBox::show MB_ICONHAND|MB_DEFBUTTON2|MB_TOPMOST "TCP/IP信息修改确认" "0,103" \ "确定要将当前主机包含的 TCP/IP 信息修改到 “$3” 属性设置吗? " \ "是 (&Y)" "否 (&N)" Pop $R0 ${if} $R0 != 1 Abort ${endif} StrCpy $1 "netsh interface ip set address $\"$3$\" static" !insertmacro SetOneInfoTXT $2 "TXT_IP" " IP 地址" StrCpy $1 "$1 $2" !insertmacro SetOneInfoTXT $2 "TXT_MASK" "子网掩码" StrCpy $1 "$1 $2" !insertmacro SetOneInfoTXT $2 "TXT_NETGATE" "默认网关" StrCpy $1 "$1 $2 1" !insertmacro SetOneInfoTXT $2 "TXT_DNS" "首选DNS" StrCpy $2 "netsh interface ip set dns $\"$3$\" static $2 primary" ;;最小化窗口,防止用户等待乱点 FindWindow $4 '#32770' '${STR_CAPTION}' ShowWindow $4 2 Sleep 200 Banner::show /NOUNLOAD "STR:正在校验 TCP/IP 信息的正确性……" Banner::getWindow /NOUNLOAD Pop $R0 GetDlgItem $R1 $R0 1030 SendMessage $R1 ${WM_SETTEXT} 0 "STR:正在校验 TCP/IP 信息的正确性……" nsExec::ExecToStack "$1" Pop $3 Pop $3 StrCpy $3 $3 -4 ${if} $3 == "Ok." ${orif} $3 == "确定。" nsExec::ExecToStack "$2" Pop $3 Pop $3 StrCpy $3 $3 -4 ${if} $3 == "Ok." ${orif} $3 == "确定。" SendMessage $R1 ${WM_SETTEXT} 0 "STR:正在更改当前网络连接的 TCP/IP 信息……" Sleep 4000 ReadINIStr $2 ${MUI_INIFILE} "Field ${DL_NETCARD}" State Push $2 Call GetTcpIpInfo SendMessage $R1 ${WM_SETTEXT} 0 "STR:正在校验操作结果……" Sleep 3000 Banner::destroy System::Call 'user32::MessageBeep(i) i (0x00000001)' MessageBox::show MB_ICONHAND|MB_DEFBUTTON2|MB_TOPMOST "修改 IP 成功" "$SYSDIR\shell32.dll,14" \ "当前网卡的 TCP/IP 信息已经成功更改! " \ "谢谢 (&T)" Pop $R0 ShowWindow $4 1 Abort ${else} Banner::destroy System::Call 'user32::MessageBeep(i) i (0x00000001)' MessageBox::show MB_ICONHAND|MB_DEFBUTTON2|MB_TOPMOST "更改失败" "$SYSDIR\shell32.dll,18" \ "DNS 更改失败:$3 " \ "确定 (&O)" Pop $R0 ShowWindow $4 1 Abort ${endif} ${endif} Banner::destroy System::Call 'user32::MessageBeep(i) i (0x00000001)' MessageBox::show MB_ICONHAND|MB_DEFBUTTON2|MB_TOPMOST "更改失败" "$SYSDIR\shell32.dll,18" \ "更改失败:$3 " \ "确定 (&O)" Pop $R0 ShowWindow $4 1 Abort ;${Break} ############################################################## ${Case} ${BTN_MINIMIZE} ;MessageBox MB_OK "BTN_MINIMIZE" # 按下 [全部更改] 按钮 ############################################################## FindWindow $4 '#32770' '${STR_CAPTION}' ShowWindow $4 2 ${Break} ############################################################## ${Case} ${BTN_RF_CONNECTION} ;MessageBox MB_OK "BTN_RF_CONNECTION" # 按下 [开启禁用网络] 按钮 ############################################################## Call RefreshConnection Abort ;${Break} ${EndSwitch} Abort ;; ;;页面回调检测结束 FunctionEnd ;LeaveCustom ############################################################################## ############################################################## # 功能 -- 获取当前 TCP/IP 信息 ;!macro GetRegMultiStr --(预先)子宏 ;Function SubCallBack --(预先)子函数 ;Function GetTcpIpInfo --主功能 ############################################################## !macro GetRegMultiStr Arg_reg.value Arg_ini.value StrCpy $3 "${Arg_ini.value}" GetFunctionAddress $2 SubCallBack ${ReadRegMultiStr} ${HKLM} "${REG_NETWORK_TCPIP}\$1" "${Arg_reg.value}" $2 ClearErrors !macroend Function SubCallBack Exch $2 ${if} $2 == "" GetErrorLevel $2 ;MessageBox MB_OK "Error Level: $2" ${else} ;MessageBox MB_OK "$3: $2" WriteINIStr ${MUI_INIFILE} "$0" "$3" "$2" ${endif} Pop $2 FunctionEnd ;SubCallBack Function GetTcpIpInfo Exch $0 Push $1 Push $2 Push $3 ReadINIStr $1 ${MUI_INIFILE} "$0" "InstanceId" !insertmacro GetRegMultiStr "IPAddress" "IP" !insertmacro GetRegMultiStr "SubnetMask" "MASK" !insertmacro GetRegMultiStr "DefaultGateway" "NETGATE" ReadRegStr $2 HKLM "${REG_NETWORK_TCPIP}\$1" "NameServer" StrCpy $1 0 ${Do} StrCpy $3 $2 1 $1 ${IfThen} $3 == ',' ${|} ${ExitDo} ${|} IntOp $1 $1 + 1 ${LoopUntil} $3 == "" StrCpy $2 $2 $1 WriteINIStr ${MUI_INIFILE} "$0" "DNS" "$2" Pop $3 Pop $2 Pop $1 Pop $0 FunctionEnd ;GetTcpIpInfo ############################################################## # 功能 -- 初始化数据 # Function InitNetCardInfo # Function InitHostList # Function InitLastHostInfo ############################################################## Function InitNetCardInfo Push $0 Push $1 Push $2 Push $3 StrCpy $0 0 WriteINIStr ${MUI_INIFILE} "Settings" NetCardNum 0 WriteINIStr ${MUI_INIFILE} "Field ${DL_NETCARD}" ListItems "" ${Do} EnumRegKey $1 HKLM "${REG_NETWORK_ADAPTERS}" $0 ${IfThen} $1 == "" ${|} ${ExitDo} ${|} ReadRegStr $2 HKLM "${REG_NETWORK_ADAPTERS}\$1\Ndi\Interfaces" "LowerRange" ${if} $2 == "ethernet" ReadRegStr $2 HKLM "${REG_NETWORK_ADAPTERS}\$1" "DriverDesc" WriteINIStr ${MUI_INIFILE} "Field ${DL_NETCARD}" State "$2" WriteINIStr ${MUI_INIFILE} "$2" "RegKeyIndex" "$1" ReadRegStr $3 HKLM "${REG_NETWORK_ADAPTERS}\$1" "NetworkAddress" ${if} $3 == "" StrCpy $3 "${STR_UNSETTED}" ${endif} WriteINIStr ${MUI_INIFILE} "$2" "Mac" "$3" ReadRegStr $3 HKLM "${REG_NETWORK_ADAPTERS}\$1" "NetCfgInstanceId" WriteINIStr ${MUI_INIFILE} "$2" "InstanceId" "$3" Push $2 Call GetTcpIpInfo ReadINIStr $3 ${MUI_INIFILE} "Field ${DL_NETCARD}" ListItems ${if} $3 != "" StrCpy $2 "$2|$3" ${endif} WriteINIStr ${MUI_INIFILE} "Field ${DL_NETCARD}" ListItems "$2" ReadINIStr $3 ${MUI_INIFILE} "Settings" NetCardNum IntOp $3 $3 + 1 WriteINIStr ${MUI_INIFILE} "Settings" NetCardNum $3 ${endif} IntOp $0 $0 + 1 ${Loop} Pop $3 Pop $2 Pop $1 Pop $0 FunctionEnd ;;InitNetCardInfo Function InitHostList Push $0 Push $1 Push $2 StrCpy $0 0 WriteINIStr ${MUI_INIFILE} "Field ${DL_HOST}" ListItems "" ;;初始化主机列表 ${Do} EnumRegKey $1 HKLM "${REG_ME_HOSTLIST}" $0 ${IfThen} $1 == "" ${|} ${ExitDo} ${|} ;MessageBox MB_OK "$1" ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}\$1" "" ${if} $2 == "Setted" ;;检验是否合法 WriteINIStr ${MUI_INIFILE} "Field ${DL_HOST}" State "$1" ReadINIStr $2 ${MUI_INIFILE} "Field ${DL_HOST}" ListItems ${if} $2 != "" StrCpy $1 "$1|$2" ;合并/主机标识项目 ${endif} WriteINIStr ${MUI_INIFILE} "Field ${DL_HOST}" ListItems "$1" !insertmacro AddHostNum 1 ${endif} IntOp $0 $0 + 1 ${Loop} Pop $2 Pop $1 Pop $0 FunctionEnd ;;InitHostList Function ResetSelectHost Push $0 Push $1 Push $2 ReadINIStr $2 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND" ${if} $COUNTER_HOSTNUM 0 ;有主机信息 WriteINIStr ${MUI_INIFILE} "Field ${GB_SELHOST}" Text "选择主机 ( 当前共 $COUNTER_HOSTNUM 个主机信息 )" WriteINIStr ${MUI_INIFILE} "Field ${DL_HOST}" Flags "Notify" ;初始可用主机下拉列表控件 ReadRegStr $0 HKLM "${REG_ME_HOSTLIST}" "LastHost" ReadRegStr $1 HKLM "${REG_ME_HOSTLIST}\$0" "" ${if} $1 == "Setted" WriteINIStr ${MUI_INIFILE} "Field ${DL_HOST}" State "$0" ${endif} ReadINIStr $0 ${MUI_INIFILE} "Field ${DL_HOST}" State WriteINIStr ${MUI_INIFILE} "Field ${TXT_HOST}" State $0 ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}\$0" "MAC" ${if} $2 == "" ${orif} $2 == "${STR_UNSETTED}" StrCpy $2 "${STR_UNSETTED}" ${else} StrLen $3 "$2" ${if} $3 != 12 StrCpy $2 "${STR_ERRORFORMAT}" ${endif} ${endif} WriteINIStr ${MUI_INIFILE} "Field ${TXT_MAC}" State $2 ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}\$0" "IP" ${if} $2 == "" StrCpy $2 "${STR_UNSETTED}" ${endif} WriteINIStr ${MUI_INIFILE} "Field ${TXT_IP}" State $2 ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}\$0" "MASK" ${if} $2 == "" StrCpy $2 "${STR_UNSETTED}" ${endif} WriteINIStr ${MUI_INIFILE} "Field ${TXT_MASK}" State $2 ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}\$0" "NETGATE" ${if} $2 == "" StrCpy $2 "${STR_UNSETTED}" ${endif} WriteINIStr ${MUI_INIFILE} "Field ${TXT_NETGATE}" State $2 ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}\$0" "DNS" ${if} $2 == "" StrCpy $2 "${STR_UNSETTED}" ${endif} WriteINIStr ${MUI_INIFILE} "Field ${TXT_DNS}" State $2 ${else} ;无主机信息 WriteINIStr ${MUI_INIFILE} "Field ${DL_HOST}" State "${STR_DEFAULT_HOST}" WriteINIStr ${MUI_INIFILE} "Field ${DL_HOST}" ListItems "${STR_DEFAULT_HOST}" ReadRegStr $2 HKLM "${REG_WINLOGON}" "AltDefaultDomainName" WriteINIStr ${MUI_INIFILE} "Field ${TXT_HOST}" State $2 ReadINIStr $1 ${MUI_INIFILE} "Field ${DL_NETCARD}" State ReadINIStr $2 ${MUI_INIFILE} "$1" "MAC" WriteINIStr ${MUI_INIFILE} "Field ${TXT_MAC}" State $2 ReadINIStr $2 ${MUI_INIFILE} "$1" "IP" WriteINIStr ${MUI_INIFILE} "Field ${TXT_IP}" State $2 ReadINIStr $2 ${MUI_INIFILE} "$1" "MASK" WriteINIStr ${MUI_INIFILE} "Field ${TXT_MASK}" State $2 ReadINIStr $2 ${MUI_INIFILE} "$1" "NETGATE" WriteINIStr ${MUI_INIFILE} "Field ${TXT_NETGATE}" State $2 ReadINIStr $2 ${MUI_INIFILE} "$1" "DNS" WriteINIStr ${MUI_INIFILE} "Field ${TXT_DNS}" State $2 ${endif} Pop $2 Pop $1 Pop $0 FunctionEnd ;;InitLastHostInfo ############################################################## # 功能 -- 刷新(开启/禁用) 网络连接 # Function RefreshConnection ############################################################## Function RefreshConnection Push $0 Push $1 Push $2 Push $3 Push $4 System::Call "advapi32::GetUserName(t .r0, *i ${NSIS_MAX_STRLEN} r1) i.r2" ;MessageBox MB_OK "UserName: $0 | CharsNm: $1" StrCpy $2 $0 2 Loop: IfFileExists "$TEMP\$2$1.tmp" 0 Pass IntOp $1 $1 + 100 Goto Loop Pass: StrCpy $1 "$TEMP\$2$1.tmp" ReadINIStr $2 ${MUI_INIFILE} "Field ${DL_NETCARD}" State ReadINIStr $2 ${MUI_INIFILE} "$2" "InstanceId" ReadRegStr $2 HKLM "${REG_NETWORK_CONNECTIONS}\$2\Connection" "Name" ReadRegStr $3 HKCR "${REG_NETWORK_FOLDERNAME}" "" !insertmacro CreateVBScript "$1" "$2" "$3" Sleep 50 ;;稍等I/O ;FindWindow $4 '#32770' '${STR_CAPTION}' ;ShowWindow $4 2 ;MessageBox MB_OK "VB脚本已经生成完毕,点击确定打开,查看:$1" ;ExecWait `"$SYSDIR\notepad.exe" "$1"` ;Quit ;ShowWindow $4 1 ExecWait `"$SYSDIR\WScript.exe" /B /E:vbs "$1"` ${If} $R0 == "ExecTwice" Sleep 5000 ;;等待系统5秒 ExecWait `"$SYSDIR\WScript.exe" /B /E:vbs "$1"` ${endif} Delete "$1" Pop $4 Pop $3 Pop $2 Pop $1 Pop $0 FunctionEnd ;;RefreshConnection ############################################################## # 功能 -- 导出主机列表备份 / 导入主机列表备份 # # Function SaveHostlist2INI # Function ImprotHostlist2REG ############################################################## Function SaveHostlist2INI Push $0 Push $1 Push $2 Push $3 FileOpen $2 "${VAR_OPENSAVE}" w FileSeek $2 0 END FileWrite $2 "${STR_SAVE_FILE_NOTE}" FileClose $2 StrCpy $0 0 WriteINIStr ${VAR_OPENSAVE} "Main" HostNum 0 WriteINIStr ${MUI_INIFILE} "Field ${DL_HOST}" ListItems "" ${Do} EnumRegKey $1 HKLM "${REG_ME_HOSTLIST}" $0 ${IfThen} $1 == "" ${|} ${ExitDo} ${|} ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}\$1" "" ${if} $2 == "Setted" ;${orif} $2 == "Hidden" ReadINIStr $3 ${VAR_OPENSAVE} "Main" HostNum IntOp $3 $3 + 1 WriteINIStr ${VAR_OPENSAVE} "Main" HostNum $3 FileOpen $2 "${VAR_OPENSAVE}" a FileSeek $2 0 END FileWrite $2 "$\r$\n" FileClose $2 WriteINIStr ${VAR_OPENSAVE} "Host $3" FLAG "Setted" WriteINIStr ${VAR_OPENSAVE} "Host $3" NAME "$1" ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}\$1" "MAC" ${if} $2 == "${STR_ERRORFORMAT}" ${orif} $2 == "${STR_UNSETTED}" StrCpy $2 "" ${endif} WriteINIStr ${VAR_OPENSAVE} "Host $3" MAC "$2" ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}\$1" "IP" ${if} $2 == "${STR_UNSETTED}" StrCpy $2 "" ${endif} WriteINIStr ${VAR_OPENSAVE} "Host $3" IP "$2" ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}\$1" "MASK" ${if} $2 == "${STR_UNSETTED}" StrCpy $2 "" ${endif} WriteINIStr ${VAR_OPENSAVE} "Host $3" MASK "$2" ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}\$1" "NETGATE" ${if} $2 == "${STR_UNSETTED}" StrCpy $2 "" ${endif} WriteINIStr ${VAR_OPENSAVE} "Host $3" NETGATE "$2" ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}\$1" "DNS" ${if} $2 == "${STR_UNSETTED}" StrCpy $2 "" ${endif} WriteINIStr ${VAR_OPENSAVE} "Host $3" DNS "$2" ${endif} IntOp $0 $0 + 1 ${Loop} ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}" "LastHost" WriteINIStr ${VAR_OPENSAVE} "Main" "RectHost" "$2" WriteINIStr ${VAR_OPENSAVE} "Main" "Type" "HostList Backup File" Pop $3 Pop $2 Pop $1 Pop $0 FunctionEnd ;;SaveHostlist2INI Function ImprotHostlist2REG Push $0 Push $1 Push $2 Push $3 Push $4 StrCpy $R4 -1 ;;临时选择标记容器 StrCpy $0 0 ;成功导入计数器 ReadINIStr $4 ${VAR_OPENSAVE} "Main" HostNum ${if} $4 <= 0 MessageBox MB_OK|MB_ICONEXCLAMATION|MB_TOPMOST "主机列表备份文件中没有任何主机信息,无法导入! " ${else} ${if} $COUNTER_HOSTNUM 0 MessageBox MB_OK|MB_ICONINFORMATION|MB_TOPMOST "导入完成: 从备份文件中成功导入 $0 个主机项目。 " ${else} MessageBox MB_OK|MB_ICONINFORMATION|MB_TOPMOST "没有导入任何主机。 " ${endif} ${endif} Pop $4 Pop $3 Pop $2 Pop $1 Exch $0 FunctionEnd ;;ImprotHostlist2REG Section -Nop Quit SectionEnd
点击另存资源文件。