; 2015-06-29 ; KiXtart v. 4.53 ; ------- Основная программа -------{ SetTitle ("@DOMAIN") If $MODE<>"L" $DOMAIN_INI = @LDRIVE+"\"+"Domain.ini" $Root_dir="@LDRIVE" EndIf; По умолчанию режим =домен, если не локально (L) $STARTUP_FOLDER = ReadValue ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", "Startup") $APPL_FOLDER = ReadValue ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", "Start Menu") $PRG_FOLDER = ReadValue ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", "Programs") $AppData_FOLDER = ReadValue ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", "AppData") $TIME_SERVER = ReadProfileString($DOMAIN_INI, "Domain","TIME_SERVER") $LOCAL_USR_PRFL = "%UserProfile%" Cls GoSub SET_MSG ; Получим значения для сообщений Cls ? $MSG_WELCOME ; Удаление информации о членстве в группах (действие аналогично /f = flush token cache) DelTree("HKEY_CURRENT_USER\Software\KiXtart\TokenCache") ; Синхронизация времени SetTime $TIME_SERVER If @Error "$ERR_FATAL" Else "$MSG_OK" Endif ? $MSG_SYNCTIME GoSub SYNC_Admin ; Синхронизация Admin GoSub SYNC_Programs ; Синхронизация Programs GoSub DELETE_OLD ; Удаляем старые папки и файлы ; Размонтируем все сетевые диски GoSub DRV_Del_ALL If @Error "$ERR_FATAL" Else "$MSG_OK" Endif ; Очистка ветки реестра с насройками ODBC $LNK_USR_GRP=ReadProfileString($DOMAIN_INI, "Domain","REG_ODBC_USER_CLEAR") If InGroup($LNK_USR_GRP) OR $LNK_USR_GRP="*" DelTree("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI") EndIf ; 1C 7.7 { $LNK_USR_GRP=ReadProfileString($DOMAIN_INI, "Domain","USR_GRP_OneS77") If InGroup($LNK_USR_GRP) OR $LNK_USR_GRP="*" GoSub MOXEL DelKey("HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Titles") AddKey("HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Titles") WriteValue ("HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Options\Files", "SourceTemplateFile", ".\\1cv7srct.st", "REG_SZ") EndIf ; 1C 7.7 } ; Создание папки TEMP, HOME в Локальном профиле пользователя и определение соответствующих переменных { $DIR_NAME=$LOCAL_USR_PRFL+"\"+"TEMP" GoSub CRT_DIR $ENV_VAR="TMP" $ENV_VAR_VAL=$DIR_NAME GoSub SET_ENV_VAR $ENV_VAR="TEMP" $ENV_VAR_VAL=$DIR_NAME GoSub SET_ENV_VAR $DIR_NAME=$LOCAL_USR_PRFL+"\"+"HOME" GoSub CRT_DIR $ENV_VAR="HOME" $ENV_VAR_VAL=$DIR_NAME GoSub SET_ENV_VAR ; Создание папки TEMP, HOME в Локальном профиле пользователя и определение соответствующих переменных } ;Выполняем скрипты, которые определены в пользовательском файле GoSub SET_CONNECTIONS If $SCRIPT_1 <> "" $SCRIPT_NAME = "Script1" $SCRIPT_FILE=$Root_dir+"\"+$SCRIPT_1 GoSub RUN_SCRIPT Endif If $SCRIPT_2 <> "" $SCRIPT_NAME = "Script2" $SCRIPT_FILE=$Root_dir+"\"+$SCRIPT_2 GoSub RUN_SCRIPT Endif If $SCRIPT_3 <> "" $SCRIPT_NAME = "Script3" $SCRIPT_FILE=$Root_dir+"\"+$SCRIPT_3 GoSub RUN_SCRIPT Endif If $SCRIPT_4 <> "" $SCRIPT_NAME = "Script4" $SCRIPT_FILE=$Root_dir+"\"+$SCRIPT_4 GoSub RUN_SCRIPT Endif If $SCRIPT_5 <> "" $SCRIPT_NAME = "Script5" $SCRIPT_FILE=$Root_dir+"\"+$SCRIPT_5 GoSub RUN_SCRIPT Endif If $SCRIPT_6 <> "" $SCRIPT_NAME = "Script6" $SCRIPT_FILE=$Root_dir+"\"+$SCRIPT_6 GoSub RUN_SCRIPT Endif If $SCRIPT_7 <> "" $SCRIPT_NAME = "Script7" $SCRIPT_FILE=$Root_dir+"\"+$SCRIPT_7 GoSub RUN_SCRIPT Endif If $SCRIPT_8 <> "" $SCRIPT_NAME = "Script8" $SCRIPT_FILE=$Root_dir+"\"+$SCRIPT_8 GoSub RUN_SCRIPT Endif GoSub Menu_All_Delete ; Удаление меню GoSub Menu_Create ; Создание меню ; Меню: удаление пустого { $Menu_Flag="Empty_Delete" GoSub Menu_Create ; Уровень 1 $Menu_Flag="Empty_Delete" GoSub Menu_Create ; Уровень 2 $Menu_Flag="" ; Меню: удаление пустого } ; Клиент банк { $USR_GRP_BC=ReadProfileString($DOMAIN_INI, "ClientBank","USR_GRP") If InGroup($USR_GRP_BC) $SHARE_BC=ReadProfileString($DOMAIN_INI, "ClientBank","SHARE") $DRV_BC=ReadProfileString($DOMAIN_INI, "ClientBank","DRV") $DRV="$DRV_BC" $SHARE=$SHARE_BC GoSub DRV_ASSIGN EndIf ; Клиент банк } GoSub APPLY_REGISTRY_FILES ; Загрузка данных из файлов реестра Exit ; ------- Основная программа -------} :SET_CONNECTIONS If $DRV_D <> "" $DRV="D:" $SHARE=$DRV_D GoSub DRV_ASSIGN Endif If $DRV_E <> "" $DRV="E:" $SHARE=$DRV_E GoSub DRV_ASSIGN Endif If $DRV_F <> "" $DRV="F:" $SHARE=$DRV_F GoSub DRV_ASSIGN Endif If $DRV_G <> "" $DRV="G:" $SHARE=$DRV_G GoSub DRV_ASSIGN Endif If $DRV_H <> "" $DRV="H:" $SHARE=$DRV_H GoSub DRV_ASSIGN Endif If $DRV_I <> "" $DRV="I:" $SHARE=$DRV_I GoSub DRV_ASSIGN Endif If $DRV_J <> "" $DRV="J:" $SHARE=$DRV_J GoSub DRV_ASSIGN Endif If $DRV_K <> "" $DRV="K:" $SHARE=$DRV_K GoSub DRV_ASSIGN Endif If $DRV_L <> "" $DRV="L:" $SHARE=$DRV_L GoSub DRV_ASSIGN Endif If $DRV_M <> "" $DRV="M:" $SHARE=$DRV_M GoSub DRV_ASSIGN Endif If $DRV_N <> "" $DRV="N:" $SHARE=$DRV_N GoSub DRV_ASSIGN Endif If $DRV_O <> "" $DRV="O:" $SHARE=$DRV_O GoSub DRV_ASSIGN Endif If $DRV_P <> "" $DRV="P:" $SHARE=$DRV_P GoSub DRV_ASSIGN Endif If $DRV_Q <> "" $DRV="Q:" $SHARE=$DRV_Q GoSub DRV_ASSIGN Endif If $DRV_R <> "" $DRV="R:" $SHARE=$DRV_R GoSub DRV_ASSIGN Endif If $DRV_S <> "" $DRV="S:" $SHARE=$DRV_S GoSub DRV_ASSIGN Endif If $DRV_T <> "" $DRV="T:" $SHARE=$DRV_T GoSub DRV_ASSIGN Endif If $DRV_U <> "" $DRV="U:" $SHARE=$DRV_U GoSub DRV_ASSIGN Endif If $DRV_V <> "" $DRV="V:" $SHARE=$DRV_V GoSub DRV_ASSIGN Endif If $DRV_W <> "" $DRV="W:" $SHARE=$DRV_W GoSub DRV_ASSIGN Endif If $DRV_X <> "" $DRV="X:" $SHARE=$DRV_X GoSub DRV_ASSIGN Endif ; USERHOME { $USERHOME = ReadProfileString($DOMAIN_INI, "Domain","USERHOME") If $USERHOME $DRV="Y:" $SHARE=$USERHOME GoSub DRV_ASSIGN ;Монтируем общий UserHome на Y: ;; Если Win 2000 или выше, то монтируем на Z: персональный UserHome, иначе на общий { $WIN_VER=SUBSTR (@DOS, 1, 1) $DRV="Z:" If $WIN_VER >= 5 $SHARE="$USERHOME\@UserID" Else $SHARE=$USERHOME EndIf GoSub DRV_ASSIGN ;; Если Win 2000 или выше, то монтируем на Z: персональный UserHome, иначе на общий } EndIF ; USERHOME } ;Delete PRN's connections If $PRN_Del_1 <> "" $PRN=$PRN_Del_1 GoSub PRN_Del Endif If $PRN_Del_2 <> "" $PRN=$PRN_Del_2 GoSub PRN_Del Endif If $PRN_Del_3 <> "" $PRN=$PRN_Del_3 GoSub PRN_Del Endif If $PRN_Del_4 <> "" $PRN=$PRN_Del_4 GoSub PRN_Del Endif If $PRN_Del_5 <> "" $PRN=$PRN_Del_5 GoSub PRN_Del Endif If $PRN_Del_6 <> "" $PRN=$PRN_Del_6 GoSub PRN_Del Endif If $PRN_Del_7 <> "" $PRN=$PRN_Del_7 GoSub PRN_Del Endif If $PRN_Del_8 <> "" $PRN=$PRN_Del_8 GoSub PRN_Del Endif ;Add PRN's connections If $PRN_1 <> "" $PRN=$PRN_1 GoSub PRN_ADD Endif If $PRN_2 <> "" $PRN=$PRN_2 GoSub PRN_ADD Endif If $PRN_3 <> "" $PRN=$PRN_3 GoSub PRN_ADD Endif If $PRN_4 <> "" $PRN=$PRN_4 GoSub PRN_ADD Endif If $PRN_5 <> "" $PRN=$PRN_5 GoSub PRN_ADD Endif If $PRN_6 <> "" $PRN=$PRN_6 GoSub PRN_ADD Endif If $PRN_7 <> "" $PRN=$PRN_7 GoSub PRN_ADD Endif If $PRN_8 <> "" $PRN=$PRN_8 GoSub PRN_ADD Endif ;Set default PRN If $PRN_DEF <> "" $PRN=$PRN_DEF GoSub PRN_DEF Endif ;PRN port connections If $LPT1 <> "" $DRV="LPT1:" $SHARE=$LPT1 GoSub PORT_ASSIGN Endif If $LPT2 <> "" $DRV="LPT2:" $SHARE=$LPT2 GoSub PORT_ASSIGN Endif Return ;Assign drive :DRV_ASSIGN ? "$MSG_MOUNT $DRV $SHARE" If @Error And @Error <> 2250 "$ERR_UNMOUNT" Endif Use "$DRV" /Delete Use "$DRV" "$SHARE" If @Error "$ERR_BAD_SHARE" Else "$MSG_OK" Endif Return ;Assign port :PORT_ASSIGN ? "$MSG_MOUNT $DRV $SHARE" Use "$DRV" /Delete If @Error And @Error <> 2250 "$ERR_UNMOUNT" Endif Use "$DRV" "$SHARE" If @Error "$ERR_FATAL" Endif Return ;--- Delete all drive :DRV_Del_ALL Use * /Delete ? $MSG_DRVDALL If @Error "$ERR_FATAL" Endif Return ;--- Delete drive :DRV_Del Use "$DRV" /Delele ? $MSG_DRV_DEL If @Error "$ERR_FATAL" Else "$MSG_OK" Endif Return ;--- Run script :RUN_SCRIPT ? "$MSG_RUN_SCR $SCRIPT_NAME" If exist( $SCRIPT_FILE ) Call $SCRIPT_FILE If $SCR_TYPE = "1" GoSub SET_CONNECTIONS $SCR_TYPE = "" Endif If @Error "$ERR_FATAL" Else "$MSG_OK" Endif Else Beep $ERR_NOT_FILE Endif Return ;--- Add PRN connection :PRN_ADD If AddPrinterConnection ($PRN) = 0 ? "$MSG_PRN_ADD $PRN" If @Error "$ERR_FATAL" Else "$MSG_OK" Endif Endif Return ;--- Set default PRN connection :PRN_DEF If AddPrinterConnection ($PRN) <> 0 GoSub PRN_ADD Endif If SetDefaultPRN ($PRN) = 0 ? "$MSG_PRN_DEF $PRN" If @Error "$ERR_FATAL" Else "$MSG_OK" Endif Endif Return :PRN_Del ;--- Delete PRN connection If DelPrinterConnection ($PRN) = 0 ? "$MSG_PRN_Del $PRN" If @Error "$ERR_FATAL" Else "$MSG_OK" Endif Endif Return :SET_ENV_VAR ;Установка переменной окружения, заданой в переменной VARIABLE -------{ Set $ENV_VAR +"="+$ENV_VAR_VAL Return ; Установка переменной окружения, заданой в переменной VARIABLE -------} :CREATE_LNK_GRP MD "$PRG_FOLDER\$LNK_GRP" Return :Del_LNK_GRP Del "$PRG_FOLDER\$LNK_GRP\*" RD "$PRG_FOLDER\$LNK_GRP\" Return :LNK_FOLDER_CREATE MD "$APPL_FOLDER\$LNK_FOLDER" Return :LNK_FOLDER_DELETE SHELL '%COMSPEC% /C RD "$APPL_FOLDER\$LNK_FOLDER" /S /Q' Return :MOXEL ;Изменение принтера для 1С\Moxel -------{ ;Проверим наличие ключа $ReturnCode = KeyExist(HKEY_CURRENT_User\Software\1C\1Cv7\7.7\) If $ReturnCode ? "Изменение принтера для 1С\Moxel" ? "Состояние:" Dim $USR_LST_1S [1] $MOXEL_1S_PRT="" ;;;ReadValue("HKEY_CURRENT_User\Kix32", "DefaultPrinter") $USR_LST_1S [0] = "Default" $USR_LST_1S [1] = @UserID $DB_I_1S = 0 ;---DB'S Dim $DB_LST_1S[128] While @Error <> 259 $LNK_NAME_1S = EnumKey("HKEY_CURRENT_User\Software\1C\1Cv7\7.7\", $DB_I_1S) $DB_I_1S = $DB_I_1S + 1 $DB_LST_1S[$DB_I_1S]=$LNK_NAME_1S Loop $DB_LST_1S[$DB_I_1S+1]="Default" For Each $UseR_NAME In $USR_LST_1S ;---FORM'S For Each $LNK_NAME_1S In $DB_LST_1S If $LNK_NAME_1S $FORM_I_1S = 0 :FORMS_1S $FORM_NAME= EnumKey("HKEY_CURRENT_UseR\Software\1C\1Cv7\7.7\"+$LNK_NAME_1S+"\V7\"+$UseR_NAME+"\Moxel\",$FORM_I_1S) If @Error = 0 $CUR_MOXEL_1S_PRT = ReadValue("HKEY_CURRENT_UseR\Software\1C\1Cv7\7.7\"+$LNK_NAME_1S+"\V7\"+$UseR_NAME+"\Moxel\"+$FORM_NAME+"\", "DefaultPrinter") If $CUR_MOXEL_1S_PRT $RegSubkey = "HKEY_CURRENT_UseR\Software\1C\1Cv7\7.7\"+$LNK_NAME_1S+"\V7\"+$UseR_NAME+"\Moxel\"+$FORM_NAME+"\" If WriteValue($RegSubkey, "DefaultPrinter" ,$MOXEL_1S_PRT,"REG_SZ") <> 0 ? "Moxel Value written to the registry Error: "+@Error Endif EndIf $FORM_I_1S=$FORM_I_1S+1 Goto FORMS_1S Endif EndIf Next Next Endif Return ;Изменение принтера для 1С\Moxel -------} :LNK_CREATE_1C ;Создание ярлыка 1C ------- { If InGroup($LNK_USR_GRP) OR $LNK_USR_GRP="*" WriteValue("Software\1C\1Cv7\7.7\Titles", $LNK_ARG, $LNK_DSCR, "REG_SZ") $LNK_ARG="ENTERPRISE"+" /D "+$LNK_ARG+" /N @UserID" +" /P @UserID" GoSub LNK_CREATE EndIf Return ;Создание ярлыка 1C ------- } :LNK_CREATE_XMING ;Создание ярлыка Xming ------- { If InGroup($LNK_USR_GRP) OR $LNK_USR_GRP="*" $LNK_ARG=$LNK_ARG+ReadValue ("HKEY_CURRENT_USER\Keyboard Layout\Toggle","Hotkey" ) GoSub LNK_CREATE EndIf Return ;Создание ярлыка Xming ------- } :LNK_CREATE_SHARE ;Создание ярлыка Сетевого ресурса ------- { If InGroup($LNK_USR_GRP) OR $LNK_USR_GRP="*" Shell '$Root_dir\bin\shortcut.exe /F:"$LNK_FOLDER\$LNK_NAME.lnk" /T:"$LNK_APPL" /I:"$LNK_ICON" /W:"$LNK_DIR" /P:"$LNK_ARG" /D:"$LNK_DSCR" /R:$LNK_RSTL /A:c' EndIf Return ;Создание ярлыка Сетевого ресурса ------- } :LNK_CREATE ;Создание ярлыка ------- { If InGroup($LNK_USR_GRP) OR $LNK_USR_GRP="*" If Exist ("$LNK_APPL") Shell '$Root_dir\bin\shortcut.exe /F:"$LNK_FOLDER\$LNK_NAME.lnk" /T:"$LNK_APPL" /I:"$LNK_ICON" /W:"$LNK_DIR" /P:"$LNK_ARG" /D:"$LNK_DSCR" /R:$LNK_RSTL /A:c' EndIf EndIf If (@Error=0) ;;? "LNK_CREATE : Ok" Else ? "LNK_CREATE ($LNK_NAME) $LNK_NAME ERROR: "+@Error EndIf Return ;Создание ярлыка ------- } :DEL_LNK ;Удаление ярлыка ------- { If Exist ("$LNK_GRP\$LNK_NAME.lnk") DEL "$LNK_GRP\$LNK_NAME.lnk" EndIf If (@Error=0) ;;? "$LNK_NAME : Ok" Else ? "$LNK_NAME ERROR: "+@Error EndIf Return ;Удаление ярлыка ------- } :COPY_FILE ;Копирование файла ------- { If InGroup($LNK_USR_GRP) OR $LNK_USR_GRP="*" Copy '$Root_dir\files\$LNK_NAME' '$PRG_FOLDER\$LNK_GRP\$LNK_NAME' EndIf If (@Error=0) ;;? "$LNK_NAME: Ok" Else ? "$LNK_NAME Error: "+@Error EndIf Return ; Копирование файла ------- } :APPLY_REGISTRY_FILES ; Загрузка данных из файлов реестра ------- { $Registry_Number = ReadProfileString($DOMAIN_INI, "Registry","Registry_Number") For $Registry_N = 1 to $Registry_Number $Reg_File = $Root_dir+ReadProfileString($DOMAIN_INI, "Registry_"+$Registry_N,"Reg_File") $Reg_USR_GRP = ReadProfileString($DOMAIN_INI, "Registry_"+$Registry_N,"USR_GRP") If InGroup($Reg_USR_GRP) If Exist ($Reg_File) Shell '%SystemRoot%\regedit.exe -s $Reg_File' EndIf EndIf Next Return ;Загрузка данных из файлов реестра ------- { :RoboCopy_Sync ;Синхронизация с испозованием RoboCopy ------- { If InGroup($LNK_USR_GRP) OR $LNK_USR_GRP="*" ? "Синхронизация $SYNC_FILES_NAME ..." ? "" Shell '$Root_dir\bin\RoboCopy.exe $SYNC_FILES_SRC $SYNC_FILES_DST /MIR /njh /njs /ndl /nc /ns /np /nfl' Select Case @Error = 0 ? $MSG_SYNC_FILES+$SYNC_FILES_NAME+" обработка не требуется" Case @Error = 1 ? $MSG_SYNC_FILES+$SYNC_FILES_NAME+" без ошибок" EndSelect ? "" EndIf Return ;Синхронизация с испозованием RoboCopy ------- } :CRT_DIR ;Создание каталога { CD $DIR_NAME If @Error MD $DIR_NAME EndIf Return ;Создание каталога } :ConsultantPlus ; Консультант Плюс { $RegSubkey="HKEY_CURRENT_User\Software\ConsultantPlus\ConsultantPlus\3000\" $RegValue="WrkDir" $RegExp="Y:\@UserID" $RegType="REG_SZ" AddKey($RegSubkey) WriteValue($RegSubkey, $RegValue ,$RegExp,$RegType) If (@Error=0) ;;? "Ok" Else ? "Cons REG Error: "+@Error EndIf GoSub LNK_CREATE Return ; Консультант Плюс } :Menu_Create ; Меню: cоздание { ; Очистка ветки реестра с насройками расположения ярлыков DelTree("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Start Menu") ;Кол-во меню уровня 1 $Menu1_Number = ReadProfileString($DOMAIN_INI, "Menu","Menu_Number") ;? "Menu1_Number=$Menu1_Number" ; Цикл по меню уровня 1 { For $Menu1_N = 1 to $Menu1_Number $Menu_Name = ReadProfileString($DOMAIN_INI, "Menu_"+$Menu1_N,"Name") $File_Number = ReadProfileString($DOMAIN_INI, "Menu_"+$Menu1_N,"File_Number") $LNK_FOLDER="$Menu_Name" If $Menu_Flag="Empty_Delete" GoSub Menu_Empty_Delete Else GoSub LNK_FOLDER_CREATE ; Создание папки GoSub Menu_Files ; Цикл по файлам EndIf ;Кол-во меню уровня 2 $Menu2_Number = ReadProfileString($DOMAIN_INI, "Menu_"+$Menu1_N,"Menu_Number") ; Цикл по меню уровня 2 { For $Menu2_N = 1 to $Menu2_Number $Menu2_Name = ReadProfileString($DOMAIN_INI, "Menu_"+$Menu1_N+"_"+$Menu2_N,"Name") $File2_Number = ReadProfileString($DOMAIN_INI, "Menu_"+$Menu1_N+"_"+$Menu2_N,"File_Number") ;? "Menu2_Name = $Menu2_Name" ;? "File2_Number = $File2_Number" $LNK_FOLDER="$Menu_Name"+"\"+"$Menu2_Name" If $Menu_Flag="Empty_Delete" GoSub Menu_Empty_Delete Else GoSub LNK_FOLDER_CREATE ; Cоздание папки GoSub Menu_Files2 ; Цикл по файлам2 EndIf Next ; Цикл по меню уровня 2} Next ; Цикл по меню уровня 1} Return ; Меню: cоздание } :Menu_All_Delete ; Меню: удаление всех { $FileName = Dir("$APPL_FOLDER") While $FileName <> "" and @ERROR = 0 If $FileName = Right ($PRG_FOLDER, LEN($PRG_FOLDER) - LEN($APPL_FOLDER) -1) or $FileName = "." or $FileName = ".." ; Не удаляем Else ; Удаляем $LNK_FOLDER="$FileName" GoSub LNK_FOLDER_DELETE EndIf $FileName = Dir() ; Следущий элемент списка Loop Return ; Меню: удаление всех } :Menu_Empty_Delete ; Меню: удаление пустого { $FileName = Dir("$APPL_FOLDER\$LNK_FOLDER") $n1=0 While $FileName <> "" and @ERROR = 0 $n1=$n1+1 $FileName = Dir() ; Следущий элемент списка Loop If $n1 = 2 GoSub LNK_FOLDER_DELETE ; Удаление пустой папки EndIf ;? "$APPL_FOLDER\$LNK_FOLDER --- n1=$n1 " Return ; Меню: удаление пустого } :Menu_Files; Меню: Цикл по файлам { For $File_N = 1 to $File_Number $Section = "File_"+$Menu1_N+"_"+$File_N $LNK_APPL = ReadProfileString($DOMAIN_INI, $Section, "APPL") $LNK_ICON = ReadProfileString($DOMAIN_INI, $Section,"ICON") $LNK_NAME = ReadProfileString($DOMAIN_INI, $Section,"NAME") $LNK_DIR = ReadProfileString($DOMAIN_INI, $Section,"DIR") $LNK_ARG = ReadProfileString($DOMAIN_INI, $Section,"ARG") $LNK_RSTL = ReadProfileString($DOMAIN_INI, $Section,"RSTL") $LNK_DSCR = ReadProfileString($DOMAIN_INI, $Section,"DSCR") $LNK_USR_GRP = ReadProfileString($DOMAIN_INI, $Section,"USR_GRP") $LNK_SUB_PRG = ReadProfileString($DOMAIN_INI, $Section,"SUB_PRG") $LNK_FOLDER="$APPL_FOLDER"+"\"+"$Menu_Name" ;При наличии подпрограммы в SUB_PRG выполняем ее If $LNK_SUB_PRG <> "" Gosub $LNK_SUB_PRG Else Gosub LNK_CREATE EndIf Next Return ; Меню: Цикл по файлам } :Menu_Files2; Меню: Цикл по файлам2 { For $File_N = 1 to $File2_Number $Section = "File_"+$Menu1_N+"_"+$Menu2_N+"_"+$File_N $LNK_APPL = ReadProfileString($DOMAIN_INI, $Section,"APPL") $LNK_ICON = ReadProfileString($DOMAIN_INI, $Section,"ICON") $LNK_NAME = ReadProfileString($DOMAIN_INI, $Section,"NAME") $LNK_DIR = ReadProfileString($DOMAIN_INI, $Section,"DIR") $LNK_ARG = ReadProfileString($DOMAIN_INI, $Section,"ARG") $LNK_RSTL = ReadProfileString($DOMAIN_INI, $Section,"RSTL") $LNK_DSCR = ReadProfileString($DOMAIN_INI, $Section,"DSCR") $LNK_USR_GRP = ReadProfileString($DOMAIN_INI, $Section,"USR_GRP") $LNK_SUB_PRG = ReadProfileString($DOMAIN_INI, $Section,"SUB_PRG") $LNK_FOLDER="$APPL_FOLDER"+"\"+"$Menu_Name"+"\"+$Menu2_Name ;При наличии подпрограммы в SUB_PRG выполняем ее If $LNK_SUB_PRG <> "" Gosub $LNK_SUB_PRG Else Gosub LNK_CREATE EndIf Next Return ; Меню: Цикл по файлам2 } :DELETE_OLD ; Удаляем старые папки и файлы { $LNK_GRP="Интернет" GoSub Del_LNK_GRP $LNK_GRP="Почта" GoSub Del_LNK_GRP $LNK_GRP="Клиент-Банк" GoSub Del_LNK_GRP $LNK_GRP="1С-Предприятие" GoSub Del_LNK_GRP ; Удаляем старые ярлыки в Программы Del "$PRG_FOLDER\Внешние отчеты.lnk" Del "$PRG_FOLDER\Интернет.lnk" Del "$PRG_FOLDER\Foxit PDF Reader.lnk" Del "$PRG_FOLDER\7-Zip File Manager.lnk" Del "$PRG_FOLDER\Far Manager v3.0.lnk" Return ; Удаляем старые папки и файлы } :SYNC_Programs ; Синхронизация Programs { $LNK_USR_GRP = ReadProfileString($DOMAIN_INI, "Programs","USR_GRP") If $LNK_USR_GRP If InGroup($LNK_USR_GRP) OR $LNK_USR_GRP="*" $VER_FILE_NAME = ReadProfileString($DOMAIN_INI, "Programs","VERSION_FILE") $Programs_ROOT = ReadProfileString($DOMAIN_INI, "Programs","Programs_ROOT") $Programs_DIR = ReadProfileString($DOMAIN_INI, "Programs", LCase(@WkSta)) If $Programs_DIR ="" $Programs_DIR="Default" EndIf $Programs_LOCAL = ReadProfileString($DOMAIN_INI, "Programs","Programs_LOCAL") If $Programs_LOCAL ="" $Programs_LOCAL="C:\Programs" EndIf $SYNC_FILES_NAME="Programs" $SYNC_FILES_SRC="$Programs_ROOT$Programs_DIR" $SYNC_FILES_DST="$Programs_LOCAL" If CompareFileTimes($SYNC_FILES_DST+"\"+$VER_FILE_NAME, $Programs_ROOT+"\"+$VER_FILE_NAME) <> 0 GoSub RoboCopy_Sync ; Синхронизация GoSub Update_Firefox_Profile ; Обновление профиля FireFox Else ? $MSG_SYNC_FILES+$SYNC_FILES_NAME+" нет необходимости" ? "" EndIf EndIf EndIf Return ; Синхронизация Programs } :SYNC_Admin ; Синхронизация Admin { $LNK_USR_GRP = ReadProfileString($DOMAIN_INI, "Admin","USR_GRP") If $LNK_USR_GRP If InGroup($LNK_USR_GRP) OR $LNK_USR_GRP="*" $SYNC_FILES_NAME="Admin" $SYNC_FILES_SRC = ReadProfileString($DOMAIN_INI, "Admin","SRC") $SYNC_FILES_DST = ReadProfileString($DOMAIN_INI, "Admin","DST") $VER_FILE_NAME = ReadProfileString($DOMAIN_INI, "Admin","VERSION_FILE") If CompareFileTimes($SYNC_FILES_DST+"\"+$VER_FILE_NAME, $SYNC_FILES_SRC+"\"+$VER_FILE_NAME) <> 0 GoSub RoboCopy_Sync Else ? $MSG_SYNC_FILES+$SYNC_FILES_NAME+" нет необходимости" ? "" EndIf EndIf EndIf Return ; Синхронизация Admin } :Inventory ; Инвентаризация { ? "Инвентаризация..." Shell '$Root_dir\bin\Checkcfg.cmd $Root_dir\bin\' Return ; Инвентаризация } :Update_Firefox_Profile ; Обновление профиля FireFox { ;Профиль по умолчанию $Firefox_defaults_profile = ReadProfileString($DOMAIN_INI, "Programs","Firefox_DefaultProfile") ;Профиль пользователя $Firefox_profile0 = ReadProfileString("$AppData_FOLDER"+"\Mozilla\Firefox\profiles.ini", "Profile0","Path") $Firefox_profile = $AppData_FOLDER+"\Mozilla\Firefox\"+$Firefox_profile0+"\" If $Firefox_profile And $Firefox_defaults_profile Copy "$Firefox_defaults_profile*.*" "$Firefox_profile" EndIf Return ; Обновление профиля FireFox } :SET_MSG ; ------ Определение сообщений ------- { $ERR_FATAL = " - Ошибка: @Error !" $ERR_NOT_FILE = " - Файл не найден !" $ERR_UNMOUNT = " - Ошибка при размонтировании !" $ERR_BAD_SHARE = " - Такой ресурс не существует !" $MSG_WELCOME = "@FullName (@UserID), добро пожаловать в домен @Domain" $MSG_SYNCTIME = "Синхронизируется время" $MSG_OK = " - Ok" $MSG_RUN_SCR = "Выполняется :" $MSG_MOUNT = "Монтирование" $MSG_DRVDALL = "Размонтируются все сетевые соединения" $MSG_DRV_Del = "Размонтируется: " $MSG_PRN_ADD = "Подключается принтер: " $MSG_PRN_DEF = "Принтер по умолчанию: " $MSG_PRN_Del = "Отключается принтер : " $MSG_SYNC_FILES = "Синхронизация: " Return ; ------ Определение сообщений ------- { ;;;;;;; Конец файла ;;;;;;;;