AZJIO
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_OutFile=assotiations.exe #AutoIt3Wrapper_icon=assotiations.ico #AutoIt3Wrapper_Compression=4 #AutoIt3Wrapper_UseAnsi=y #AutoIt3Wrapper_Res_Comment=- #AutoIt3Wrapper_Res_Description=assotiations.exe #AutoIt3Wrapper_Res_Fileversion=1.1.0.0 #AutoIt3Wrapper_Res_Fileversion_AutoIncrement=n #AutoIt3Wrapper_Res_LegalCopyright=AZJIO #AutoIt3Wrapper_Res_Language=1049 #AutoIt3Wrapper_Run_AU3Check=n #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** ; @AZJIO 8.04.2010 #NoTrayIcon ;скрыть в системной панели индикатор AutoIt ; Код для включения файлов в скомпилированный скрипт. Такой расклад позволяет стартовать скомпилированный скрипт на незаписываемом носителе. Перед компиляцией нужно единожды использовать скрипт, чтоб скопировались dll в системные каталоги и оттуда добавлялись в скомпилированный скрипт. И при условии системы на диске C. If @compiled=1 Then FileInstall("C:\WINDOWS\system32\assot.dll", @TempDir & '\assot.dll') FileInstall("C:\WINDOWS\system32\mpcicons.dll", @TempDir & '\mpcicons.dll') FileInstall("C:\WINDOWS\system32\imageicons.dll", @TempDir & '\imageicons.dll') $Dir=@TempDir Else FileInstall("C:\WINDOWS\system32\assot.dll", "*") FileInstall("C:\WINDOWS\system32\mpcicons.dll", "*") FileInstall("C:\WINDOWS\system32\imageicons.dll", "*") $Dir=@ScriptDir EndIf Global $Data='' $EXE='' ; начало создания окна $Gui = GUICreate("Ассоциатор программ, v1.1", 380, 150, -1, -1, -1, 0x00000010) GUICtrlCreateLabel("", -1, -1, 380, 150) GUICtrlSetState(-1, 136) GUICtrlCreateLabel("Кинь сюда программу или её ярлык, чтобы ассоциировать с ней файлы", 4, 3, 370, 20) $Label23=GUICtrlCreateLabel ("Тип программы:", 20,25,90,20) GUICtrlSetTip(-1, "Выбрать тип для определения"&@CRLF&"какие файлы требуется ассоциировать,"&@CRLF&"в случае, если программа отсутствует"&@CRLF&"в списке авто-детектирования") $type=GUICtrlCreateCombo ("", 110,22,120,18) GUICtrlSetData(-1,'авто|музыка|видео|текст|гарфика|iso, mdf, img|bin|dll, res|nfo, diz|xls, doc, ppt|архивы|htm, html', 'авто') $info=GUICtrlCreateButton ("Инфо", 240, 22, 60, 22) $warning=GUICtrlCreateButton ("Readme", 310,22,60,22) GUICtrlSetTip(-1, "Посмотреть список расширений"&@CRLF&"для выбранного в списке типа") $checkcfg=GUICtrlCreateButton ("дополнения", 300,55,75,22) GUICtrlSetTip(-1, "Добавить всплывающие сообщения о типе файлов"&@CRLF&"bak, tmp, gid, srs, tbk, rpb, csc, nib, gso и др.") $saveBK=GUICtrlCreateCheckbox ("Индивидуальный бэкап", 10,55,150,22) GUICtrlSetTip(-1, "Только для принимаемой"&@CRLF&"программы") $saveall=GUICtrlCreateButton ("Бэкап всех ассоциаций", 160,55,130,22) GUICtrlSetTip(-1, "Создание reg-файла"&@CRLF&"для восстановления") $autoicons=GUICtrlCreateCheckbox ("Автообновление иконок", 10,85,150,22) $Updateicon=GUICtrlCreateButton ("Обновить кэш иконок", 160,85,130,22) GUICtrlSetTip(-1, "Смена иконок происходит"&@CRLF&"только после обновления кэша") GUICtrlCreateGroup("", 10, 110, 350, 30) $Label10=GUICtrlCreateLabel ("Строка состояния автор AZJIO 8.04.2010", 15,120,340,15) GUISetState(@SW_SHOW, $Gui) While 1 $msg = GUIGetMsg() Select Case $msg = $checkcfg $add = MsgBox(4, "Выгодное предложение", "Желаете в реестр добавить всплывающие"&@CRLF&"сообщения о типе файлов"&@CRLF&"bak, tmp, gid, srs, tbk, rpb, csc, nib, gso и др?") If $add = "6" Then RegWrite("HKCR\.bak","InfoTip","REG_SZ",'Бэкап файла, копия оригинального файла перед изменением') RegWrite("HKCR\.gid","InfoTip","REG_SZ",'Генерируется при открытии справки *.hlp') RegWrite("HKCR\.tmp","InfoTip","REG_SZ",'Временный файл') RegWrite("HKCR\.tbk","InfoTip","REG_SZ",'Резервная копия почтовых ящиков The Bat!') RegWrite("HKCR\.srs","InfoTip","REG_SZ",'Скрипт Search and Replace, градиент текста HTML') RegWrite("HKCR\.rpb","InfoTip","REG_SZ",'Список контактов radmin') RegWrite("HKCR\.sxp","InfoTip","REG_SZ",'Сохранённый профиль StatistXP') RegWrite("HKCR\.csc","InfoTip","REG_SZ",'Список дубликатов CloneSpy') RegWrite("HKCR\.ctl","InfoTip","REG_SZ",'База CD Collection') RegWrite("HKCR\.nib","InfoTip","REG_SZ",'Файл органайзера Блокнотик') RegWrite("HKCR\.gso","InfoTip","REG_SZ",'Файл органайзера WinOrganizer') If FileExists(@SystemDir&'\assot.dll') Then RegWrite("HKCR\.gso\DefaultIcon","","REG_SZ",'assot.dll,6') RegWrite("HKCR\.nib\DefaultIcon","","REG_SZ",'assot.dll,6') RegWrite("HKCR\.ctl\DefaultIcon","","REG_SZ",'assot.dll,6') RegWrite("HKCR\.csc\DefaultIcon","","REG_SZ",'assot.dll,6') RegWrite("HKCR\.sxp\DefaultIcon","","REG_SZ",'assot.dll,6') RegWrite("HKCR\.tbk\DefaultIcon","","REG_SZ",'assot.dll,6') RegWrite("HKCR\.srs\DefaultIcon","","REG_SZ",'assot.dll,6') RegWrite("HKCR\.rpb\DefaultIcon","","REG_SZ",'assot.dll,6') RegWrite("HKCR\swffile\DefaultIcon","","REG_SZ",'assot.dll,3') RegWrite("HKCR\ShockwaveFlash.ShockwaveFlash\DefaultIcon","","REG_SZ",'assot.dll,3') EndIf GUICtrlSetData($Label10, 'Всплывающие сообщения добавлены') ;$typeall='bak|gid|tmp|tbk|srs|rpb|sxp|csc|ctl|nib|gso' ;$EXE='' ;If GUICtrlRead($saveBK)=1 Then _backup($typeall, $EXE) EndIf Case $msg = -13 $typeall='' GUICtrlSetColor($Label10,0x000000) $accepted = StringRegExp(@GUI_DRAGFILE, "(^.*)\\(.*)$", 3) ; для строки состояния "не приянто" If StringRight(@GUI_DRAGFILE, 4) = ".lnk" Or StringRight(@GUI_DRAGFILE, 4) = ".exe" Then If StringRight( @GUI_DRAGFILE, 4 ) = ".lnk" Then ; принятие если lnk (ярлык) и объект (exe) в переменную $aLNK = FileGetShortcut(@GUI_DRAGFILE) $EXE=$aLNK[0] EndIf If StringRight( @GUI_DRAGFILE, 4 ) = ".exe" Then $EXE=@GUI_DRAGFILE ; принятие exe-файла Else GUICtrlSetData($Label10, 'Не принят - "'&$accepted[1]&'"') GUICtrlSetColor($Label10,0xEE0000) $answer = MsgBox(4, "Выгодное предложение", "Хотите открыть каталог ассоциированной программы") ; вытаскиваем из реестра путь If $answer = "6" Then $typeF=StringRegExp(@GUI_DRAGFILE, "(^.*)\.(.*)$", 3) If @error=1 Then ContinueLoop $astype = RegRead('HKEY_CLASSES_ROOT\.'&$typeF[1], "") $astype = RegRead('HKEY_CLASSES_ROOT\'&$astype&'\shell\open\command', "") If @error=1 Then ContinueLoop $aPathexe=StringRegExp($astype, "(^.*)exe(.*)$", 3) If @error=1 Then ContinueLoop $Pathexe1 = StringReplace($aPathexe[0], '"', '') If FileExists($Pathexe1&'exe') Then Run('Explorer.exe /select,"'&$Pathexe1&'exe"') EndIf ContinueLoop EndIf GUICtrlSetData($Label10, 'Не принят - "'&$accepted[1]&'"') ; копирование необходимых файлов содержащих иконки ассоциаций If Not FileExists(@SystemDir&'\assot.dll') and FileExists($Dir & '\assot.dll') Then FileCopy($Dir & '\assot.dll', @SystemDir&'\', 0) If Not FileExists(@SystemDir&'\mpcicons.dll') and FileExists($Dir & '\mpcicons.dll') Then FileCopy($Dir & '\mpcicons.dll', @SystemDir&'\', 0) If Not FileExists(@SystemDir&'\imageicons.dll') and FileExists($Dir & '\imageicons.dll') Then FileCopy($Dir & '\imageicons.dll', @SystemDir&'\', 0) $assot=0 If FileExists(@SystemDir&'\assot.dll') Then $assot=1 $aEXE = StringRegExp($EXE, "(^.*)\\(.*)$", 3) $EXENAME = StringTrimRight($aEXE[1], 4) If StringRight( $EXE, 4 ) <> ".exe" Then ContinueLoop ; проверка возвращаемого из LNK обьекта, иногда это не exe-файл ; Добавление к файлу всплывающей подсказки о типе файла. ; Добавление программы в список "Выбор программы" для неассоциированных файлов. RegWrite("HKCR\Applications\"&$EXENAME&".exe\shell\open\command","","REG_SZ",'"'&$EXE&'" "%1"') $type1=GUICtrlRead ($type) ;проверка для видеофайлов If $type1 = "видео" Or $EXENAME = "mplayerc" Or $EXENAME = "kmplayer" Then ; удаление из реестра веток, возможно это повлияет на успешную регистрацию. ;$aTypeV0 = StringSplit( "avi|mpg|mpeg|asf|wmv", "|") ;For $i = 1 To $aTypeV0[0] ; RegDelete("HKCR\."&$aTypeV0[$i]) ; RegDelete("HKCR\."&$aTypeV0[$i]&"file") ;Next $typeall="avi|mpg|mpeg|mp4|asx|asf|wmv|3gp|mov|mkv|ifo|vob|flv" $aTypeV = StringSplit( $typeall, "|") For $i = 1 To $aTypeV[0] RegDelete("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\."&$aTypeV[$i],"ProgID") ;RegWrite("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\."&$aTypeV[$i],"ProgID","REG_SZ",$aTypeV[$i]&"file") ;RegDelete("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\."&$aTypeV[$i]) RegDelete("HKCR\"&$aTypeV[$i]&"file\shell\open\DropTarget") RegWrite("HKCR\."&$aTypeV[$i],"","REG_SZ",$aTypeV[$i]&'file') RegWrite("HKCR\"&$aTypeV[$i]&"file","","REG_SZ",'видео') RegWrite("HKCR\"&$aTypeV[$i]&"file\shell\open","","REG_SZ",'Открыть в '&$EXENAME) RegWrite("HKCR\"&$aTypeV[$i]&"file\shell\open\command","","REG_SZ",'"'&$EXE&'" "%1"') $play = RegRead("HKCR\"&$aTypeV[$i]&"file\shell\play", "") If @error=0 Then RegWrite("HKCR\"&$aTypeV[$i]&"file\shell\play","","REG_SZ",'Воспроизвести в '&$EXENAME) RegWrite("HKCR\"&$aTypeV[$i]&"file\shell\play\command","","REG_SZ",'"'&$EXE&'" "%1"') EndIf Next If FileExists(@SystemDir&'\mpcicons.dll') Then RegWrite("HKCR\avifile\DefaultIcon","","REG_SZ",'mpcicons.dll,14') RegWrite("HKCR\mpgfile\DefaultIcon","","REG_SZ",'mpcicons.dll,11') RegWrite("HKCR\mpegfile\DefaultIcon","","REG_SZ",'mpcicons.dll,11') RegWrite("HKCR\mp4file\DefaultIcon","","REG_SZ",'mpcicons.dll,28') RegWrite("HKCR\bikfile\DefaultIcon","","REG_SZ",'mpcicons.dll,26') RegWrite("HKCR\asxfile\DefaultIcon","","REG_SZ",'mpcicons.dll,27') RegWrite("HKCR\asffile\DefaultIcon","","REG_SZ",'mpcicons.dll,12') RegWrite("HKCR\wmvfile\DefaultIcon","","REG_SZ",'mpcicons.dll,13') RegWrite("HKCR\3gpfile\DefaultIcon","","REG_SZ",'mpcicons.dll,30') RegWrite("HKCR\movfile\DefaultIcon","","REG_SZ",'mpcicons.dll,18') RegWrite("HKCR\mkvfile\DefaultIcon","","REG_SZ",'mpcicons.dll,16') RegWrite("HKCR\ifofile\DefaultIcon","","REG_SZ",'mpcicons.dll,22') RegWrite("HKCR\vobfile\DefaultIcon","","REG_SZ",'mpcicons.dll,10') RegWrite("HKCR\flvfile\DefaultIcon","","REG_SZ",'mpcicons.dll,31') EndIf GUICtrlSetData($Label10, 'Видео-файлы ассоциированы с '&$aEXE[1]) EndIf ;проверка для файлов музыки If $type1 = "музыка" Or $EXENAME = "AIMP2" Or $EXENAME = "winamp" Then ; удаление из реестра веток, возможно это повлияет на успешную регистрацию. ;$aTypeA0 = StringSplit( "mp3|wma", "|") ;For $i = 1 To $aTypeA0[0] ; RegDelete("HKCR\."&$aTypeA0[$i]) ; RegDelete("HKCR\."&$aTypeA0[$i]&"file") ;Next ; удаление из реестра веток, это повлияло на успешную регистрацию. возможно эти ветки являются ключевыми. $typeall="mp3|wav|wma|ogg|m3u|pls" $aTypeM = StringSplit( $typeall, "|") For $i = 1 To $aTypeM[0] RegDelete("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\."&$aTypeM[$i],"ProgID") ;RegDelete("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\."&$aTypeM[$i]&"\OpenWithProgids") ;RegWrite("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\."&$aTypeM[$i],"ProgID","REG_SZ",$aTypeM[$i]&"file") ;RegWrite("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\."&$aTypeM[$i],"ProgID","REG_SZ",$aTypeM[$i]&"file") RegWrite("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\."&$aTypeM[$i]&"\OpenWithProgids",$aTypeM[$i]&"file","REG_SZ",'') RegDelete("HKCR\"&$aTypeM[$i]&"file\shell\open\DropTarget") RegWrite("HKCR\."&$aTypeM[$i],"","REG_SZ",$aTypeM[$i]&'file') RegWrite("HKCR\"&$aTypeM[$i]&"file","","REG_SZ",$aTypeM[$i]&' - аудиофайл') RegWrite("HKCR\"&$aTypeM[$i]&"file\shell\open","","REG_SZ",'Открыть в '&$EXENAME) RegWrite("HKCR\"&$aTypeM[$i]&"file\shell\open\command","","REG_SZ",'"'&$EXE&'" "%1"') $play = RegRead("HKCR\"&$aTypeM[$i]&"file\shell\play", "") If @error=0 Then RegWrite("HKCR\"&$aTypeM[$i]&"file\shell\play","","REG_SZ",'Воспроизвести в '&$EXENAME) RegWrite("HKCR\"&$aTypeM[$i]&"file\shell\play\command","","REG_SZ",'"'&$EXE&'" "%1"') EndIf Next RegWrite("HKCR\plsfile","","REG_SZ",'pls - плэй лист') RegWrite("HKCR\m3ufile","","REG_SZ",'m3u - плэй лист') If FileExists(@SystemDir&'\mpcicons.dll') Then RegWrite("HKCR\mp3file\DefaultIcon","","REG_SZ",'mpcicons.dll,1') RegWrite("HKCR\SoundRec\DefaultIcon","","REG_SZ",'mpcicons.dll,0') RegWrite("HKCR\wavfile\DefaultIcon","","REG_SZ",'mpcicons.dll,4') RegWrite("HKCR\wmafile\DefaultIcon","","REG_SZ",'mpcicons.dll,3') RegWrite("HKCR\oggfile\DefaultIcon","","REG_SZ",'mpcicons.dll,5') RegWrite("HKCR\m3ufile\DefaultIcon","","REG_SZ",'mpcicons.dll,21') RegWrite("HKCR\plsfile\DefaultIcon","","REG_SZ",'mpcicons.dll,21') EndIf GUICtrlSetData($Label10, 'Файлы музыки ассоциированы с '&$aEXE[1]) EndIf ;проверка для файлов гарфики If $type1 = "гарфика" Or $EXENAME = "Imagine" Or $EXENAME = "mspaint" Or $EXENAME = "HprSnap6" Or $EXENAME = "PhotoFiltre" Or $EXENAME = "Photoshop" Or $EXENAME = "GIMP" Then $typeall="bmp|gif|jpg|png|tga|tif|psd" $aTypeP = StringSplit( $typeall, "|") For $i = 1 To $aTypeP[0] RegDelete("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\."&$aTypeP[$i],"ProgID") ;RegWrite("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\."&$aTypeP[$i],"ProgID","REG_SZ",$aTypeP[$i]&"file") ;RegDelete("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\."&$aTypeP[$i]&"\OpenWithProgids") RegWrite("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\."&$aTypeP[$i]&"\OpenWithProgids",$aTypeP[$i]&"file","REG_SZ",'') ;RegDelete("HKCR\."&$aTypeP[$i]&"\OpenWithProgids") ;RegWrite("HKCR\."&$aTypeP[$i]&"\OpenWithProgids",$aTypeP[$i]&"file","REG_SZ",'') RegDelete("HKCR\"&$aTypeP[$i]&"file\shell\open\DropTarget") RegWrite("HKCR\."&$aTypeP[$i],"","REG_SZ",$aTypeP[$i]&'file') RegWrite("HKCR\"&$aTypeP[$i]&"file","","REG_SZ",'рисунок') RegWrite("HKCR\"&$aTypeP[$i]&"file\shell\open","","REG_SZ",'Открыть в '&$EXENAME) RegWrite("HKCR\"&$aTypeP[$i]&"file\shell\open\command","","REG_SZ",'"'&$EXE&'" "%1"') Next RegDelete("HKCR\giffile\shell\open\ddeexec") If FileExists(@SystemDir&'\imageicons.dll') Then RegWrite("HKCR\bmpfile\DefaultIcon","","REG_SZ",'imageicons.dll,0') RegWrite("HKCR\giffile\DefaultIcon","","REG_SZ",'imageicons.dll,1') RegWrite("HKCR\jpgfile\DefaultIcon","","REG_SZ",'imageicons.dll,2') RegWrite("HKCR\pngfile\DefaultIcon","","REG_SZ",'imageicons.dll,3') RegWrite("HKCR\tgafile\DefaultIcon","","REG_SZ",'imageicons.dll,4') RegWrite("HKCR\tiffile\DefaultIcon","","REG_SZ",'imageicons.dll,5') RegWrite("HKCR\psdfile\DefaultIcon","","REG_SZ",'imageicons.dll,6') EndIf GUICtrlSetData($Label10, 'Файлы графики ассоциированы с '&$aEXE[1]) EndIf ;проверка для бинарных файлов (чаще загрузчики WinPE, бутсекторы hdd/cd,dvd/flash) If $type1 = "bin" Or $EXENAME = "WinHex" Or $EXENAME = "uedit32" Then $typeall='bin|bif|bim' RegWrite("HKCR\.bin","","REG_SZ",'binfile') RegWrite("HKCR\binfile","","REG_SZ",'бинарный файл') RegWrite("HKCR\binfile\shell\Open","","REG_SZ",'Открыть в '&$EXENAME) RegWrite("HKCR\binfile\shell\Open\command","","REG_SZ",'"'&$EXE&'" "%1"') RegWrite("HKCR\binfile\DefaultIcon","","REG_SZ",'%SystemRoot%\System32\certmgr.dll,11') RegWrite("HKCR\.bif","","REG_SZ",'binfile') RegWrite("HKCR\.bim","","REG_SZ",'binfile') RegWrite("HKCR\Unknown\shell\Open_with_"&$EXENAME,"","REG_SZ","Открыть в "&$EXENAME) RegWrite("HKCR\Unknown\shell\Open_with_"&$EXENAME&"\command","","REG_SZ",'"'&$EXE&'" "%1"') GUICtrlSetData($Label10, 'Бинарные файлы ассоциированы с '&$aEXE[1]) EndIf ;проверка для файлов содержащих ресурсы If $type1 = "dll, res" Or $EXENAME = "ResHacker" Or $EXENAME = "pexplorer" Or $EXENAME = "ARTICONS" Or $EXENAME = "IconWorkshop" Then $typeall='dll|res|cpl|ax|exe|apl' RegWrite("HKCR\.dll","","REG_SZ",'dllfile') RegWrite("HKCR\dllfile\shell\Open_with_"&$EXENAME,"","REG_SZ","Открыть в "&$EXENAME) RegWrite("HKCR\dllfile\shell\Open_with_"&$EXENAME&"\command","","REG_SZ",'"'&$EXE&'" "%1"') RegWrite("HKCR\.cpl","","REG_SZ",'cplfile') RegWrite("HKCR\cplfile\shell\Open_with_"&$EXENAME,"","REG_SZ","Открыть в "&$EXENAME) RegWrite("HKCR\cplfile\shell\Open_with_"&$EXENAME&"\command","","REG_SZ",'"'&$EXE&'" "%1"') RegWrite("HKCR\.ax","","REG_SZ",'DirectShowFilter') RegWrite("HKCR\DirectShowFilter\shell\Open_with_"&$EXENAME,"","REG_SZ","Открыть в "&$EXENAME) RegWrite("HKCR\DirectShowFilter\shell\Open_with_"&$EXENAME&"\command","","REG_SZ",'"'&$EXE&'" "%1"') RegWrite("HKCR\.exe","","REG_SZ",'exefile') RegWrite("HKCR\exefile\shell\Open_with_"&$EXENAME,"","REG_SZ","Открыть в "&$EXENAME) RegWrite("HKCR\exefile\shell\Open_with_"&$EXENAME&"\command","","REG_SZ",'"'&$EXE&'" "%1"') RegWrite("HKCR\.apl","","REG_SZ",'aplfile') RegWrite("HKCR\aplfile\shell\Open_with_"&$EXENAME,"","REG_SZ","Открыть в "&$EXENAME) RegWrite("HKCR\aplfile\shell\Open_with_"&$EXENAME&"\command","","REG_SZ",'"'&$EXE&'" "%1"') RegWrite("HKCR\dllfile\shell\register","","REG_SZ",'Зарегистрировать') RegWrite("HKCR\dllfile\shell\register\command","","REG_SZ",'regsvr32.exe "%1"') RegWrite("HKCR\dllfile\shell\s_unregister","","REG_SZ",'Отмена регистрации') RegWrite("HKCR\dllfile\shell\s_unregister\command","","REG_SZ",'regsvr32.exe /u "%1"') ; для регистрации (и отмены регистрации) кодеков *.ax в OS RegWrite("HKCR\DirectShowFilter\shell\register","","REG_SZ",'Зарегистрировать') RegWrite("HKCR\DirectShowFilter\shell\register\command","","REG_SZ",'regsvr32.exe "%1"') RegWrite("HKCR\DirectShowFilter\shell\s_unregister","","REG_SZ",'Отмена регистрации') RegWrite("HKCR\DirectShowFilter\shell\s_unregister\command","","REG_SZ",'regsvr32.exe /u "%1"') ; родной файл ресурсов ResHacker RegWrite("HKCR\.res","","REG_SZ",'resfile') RegWrite("HKCR\resfile","","REG_SZ",'Сохранённые ресурсы dll, exe') RegWrite("HKCR\resfile\shell\Open","","REG_SZ",'Открыть в '&$EXENAME) RegWrite("HKCR\resfile\shell\Open\command","","REG_SZ",'"'&$EXE&'" "%1"') If $assot=1 Then RegWrite("HKCR\resfile\DefaultIcon","","REG_SZ",'assot.dll,7') GUICtrlSetData($Label10, 'Файлы ресурсов ассоциированы с '&$aEXE[1]) EndIf ;проверка для текстовых файлов If $type1 = "текст" Or $EXENAME = "notepad++" Or $EXENAME = "notepad" Or $EXENAME = "akelpad" Or $EXENAME = "bred3_2k" Or $EXENAME = "EmEditor" Or $EXENAME = "PSPad" Or $EXENAME = "SciTE" Or $EXENAME = "Texter2" Or $EXENAME = "uedit32" Then $typeall='txt|log|ion|cfg|inc|lst|shl|sif|ini|php|bat|cmd|html|reg|inf' RegWrite("HKCR\.txt","","REG_SZ",'txtfile') RegWrite("HKCR\.log","","REG_SZ",'txtfile') RegWrite("HKCR\.ion","","REG_SZ",'txtfile') RegWrite("HKCR\txtfile\Shell\Open\Command","","REG_SZ",'"'&$EXE&'" "%1"') RegWrite("HKCR\.cfg","","REG_SZ",'inifile') ; конфигурационный файл в играх RegWrite("HKCR\.inc","","REG_SZ",'inifile') ; файл настройки gfxboot-меню для grub4dos RegWrite("HKCR\.lst","","REG_SZ",'inifile') ; файл-меню для grub4dos RegWrite("HKCR\.shl","","REG_SZ",'inifile') ; текстовый файл описывающий старт программы RegWrite("HKCR\.sif","","REG_SZ",'inifile') ; файл ответов и файл начальной загрузки OS RegWrite("HKCR\inifile\Shell\Open\Command","","REG_SZ",'"'&$EXE&'" "%1"') RegWrite("HKCR\.php","","REG_SZ",'phpfile') ; скрипт движка форума If $assot=1 Then RegWrite("HKCR\phpfile\DefaultIcon","","REG_SZ",'assot.dll,14') RegWrite("HKCR\phpfile\Shell\Open\Command","","REG_SZ",'"'&$EXE&'" "%1"') ; пункт контекстного меню "Изменить" RegWrite("HKCR\batfile\shell\edit\command","","REG_SZ",'"'&$EXE&'" "%1"') RegWrite("HKCR\cmdfile\shell\edit\command","","REG_SZ",'"'&$EXE&'" "%1"') RegWrite("HKCR\htmlfile\shell\Edit\command","","REG_SZ",'"'&$EXE&'" "%1"') RegWrite("HKCR\regfile\shell\edit\command","","REG_SZ",'"'&$EXE&'" "%1"') RegWrite("HKCR\inffile\shell\open\command","","REG_SZ",'"'&$EXE&'" "%1"') RegWrite("HKLM\SOFTWARE\Microsoft\Internet Explorer\View Source Editor\Editor Name","","REG_SZ",'"'&$EXE&'"') GUICtrlSetData($Label10, 'Текстовые файлы ассоциированы с '&$aEXE[1]) EndIf ;проверка для файлов CD,DVD-образов If $type1 = "iso, mdf, img" Or $EXENAME = "UltraISO" Then $typeall='iso|mdf|img|mds|md0|md1|md2|md3|md4|md5' RegWrite("HKCR\.iso","","REG_SZ",'isofile') RegWrite("HKCR\isofile\shell\open\command","","REG_SZ",'"'&$EXE&'" "%1"') If $assot=1 Then RegWrite("HKCR\isofile\DefaultIcon","","REG_SZ",'assot.dll,16') RegWrite("HKCR\.mds","","REG_SZ",'mdsfile') RegWrite("HKCR\mdsfile\shell\open\command","","REG_SZ",'"'&$EXE&'" "%1"') If $assot=1 Then RegWrite("HKCR\mdsfile\DefaultIcon","","REG_SZ",'assot.dll,18') RegWrite("HKCR\.mdf","","REG_SZ",'mdffile') RegWrite("HKCR\mdffile\shell\open\command","","REG_SZ",'"'&$EXE&'" "%1"') If $assot=1 Then RegWrite("HKCR\mdffile\DefaultIcon","","REG_SZ",'assot.dll,17') RegWrite("HKCR\.img","","REG_SZ",'imgfile') RegWrite("HKCR\imgfile\shell\open\command","","REG_SZ",'"'&$EXE&'" "%1"') If $assot=1 Then RegWrite("HKCR\imgfile\DefaultIcon","","REG_SZ",'assot.dll,15') RegWrite("HKCR\.md0","","REG_SZ",'md0file') RegWrite("HKCR\md0file","","REG_SZ",'md0 - файл, часть образа') If $assot=1 Then RegWrite("HKCR\md0file\DefaultIcon","","REG_SZ",'assot.dll,4') RegWrite("HKCR\.md1","","REG_SZ",'md0file') RegWrite("HKCR\.md2","","REG_SZ",'md0file') RegWrite("HKCR\.md3","","REG_SZ",'md0file') RegWrite("HKCR\.md4","","REG_SZ",'md0file') RegWrite("HKCR\.md5","","REG_SZ",'md0file') GUICtrlSetData($Label10, 'Файлы CD,DVD-образов ассоциированы с '&$aEXE[1]) EndIf ;проверка для файлов diz, nfo If $type1 = "nfo, diz" Or $EXENAME = "AsciiArtStudio" Then $typeall='nfo|diz' RegWrite("HKCR\.diz","","REG_SZ",'dizfile') RegWrite("HKCR\dizfile","","REG_SZ",'Сопроводительный файл к дистрибутиву программы') If $assot=1 Then RegWrite("HKCR\dizfile\DefaultIcon","","REG_SZ",'assot.dll,10') RegWrite("HKCR\dizfile\shell\open\command","","REG_SZ",'"'&$EXE&'" "%1"') RegWrite("HKCR\.nfo","","REG_SZ",'dizfile') GUICtrlSetData($Label10, 'Файлы diz, nfo ассоциированы с '&$aEXE[1]) EndIf ;проверка для файлов htm, html If $type1 = "htm, html" Or $EXENAME = "Maxthon" Or $EXENAME = "firefox" Or $EXENAME = "opera" Or $EXENAME = "iexplore" Then $typeall='htm|html' If $EXENAME = "iexplore" Then RegWrite("HKCR\.htm","","REG_SZ",'htmlfile') RegWrite("HKCR\.html","","REG_SZ",'htmlfile') RegWrite("HKCR\htmlfile\shell\open\command","","REG_SZ",'"'&$EXE&'" -nohome') RegWrite("HKCR\htmlfile\shell\opennew\command","","REG_SZ",'"'&$EXE&'" "%1"') Else RegWrite("HKCR\.htm","","REG_SZ",$EXENAME) RegWrite("HKCR\.html","","REG_SZ",$EXENAME) RegWrite("HKCR\"&$EXENAME&"\DefaultIcon","","REG_SZ",'%SystemRoot%\System32\url.dll,0') RegWrite("HKCR\"&$EXENAME&"\shell\open\command","","REG_SZ",'"'&$EXE&'" "%1"') EndIf ; клик на ссылках RegWrite("HKCR\HTTP\shell\open\command","","REG_SZ",'"'&$EXE&'" "%1"') RegWrite("HKCR\HTTP\DefaultIcon","","REG_SZ",'%SystemRoot%\System32\url.dll,0') RegWrite("HKCR\htmlfile\DefaultIcon","","REG_SZ",'%SystemRoot%\System32\url.dll,0') GUICtrlSetData($Label10, 'Файлы htm, html ассоциированы с '&$aEXE[1]) EndIf ;проверка для файлов xls, doc, rtf, pps If $type1 = "xls, doc, ppt" And StringInStr($EXENAME, "Excel")>0 Then $typeall='xls' RegWrite("HKCR\.xls","","REG_SZ",'xlsfile') RegWrite("HKCR\xlsfile","","REG_SZ",'Документ Excel') RegWrite("HKCR\xlsfile\shell\open\command","","REG_SZ",'"'&$EXE&'" "%1"') If $assot=1 Then RegWrite("HKCR\xlsfile\DefaultIcon","","REG_SZ",'assot.dll,9') GUICtrlSetData($Label10, 'Файл xls ассоциирован с '&$aEXE[1]) EndIf If $type1 = "xls, doc, ppt" And StringInStr($EXENAME, "Word")>0 Then $typeall='doc|rtf' ; doc RegWrite("HKCR\.doc","","REG_SZ",'docfile') RegWrite("HKCR\docfile","","REG_SZ",'Документ Word') RegWrite("HKCR\docfile\shell\open\command","","REG_SZ",'"'&$EXE&'" "%1"') If $assot=1 Then RegWrite("HKCR\docfile\DefaultIcon","","REG_SZ",'assot.dll,8') ; rtf RegWrite("HKCR\.rtf","","REG_SZ",'rtffile') RegWrite("HKCR\rtffile","","REG_SZ",'Документ Word') RegWrite("HKCR\rtffile\shell\open\command","","REG_SZ",'"'&$EXE&'" "%1"') If $assot=1 Then RegWrite("HKCR\rtffile\DefaultIcon","","REG_SZ",'assot.dll,8') GUICtrlSetData($Label10, 'Файлы doc, rtf ассоциированы с '&$aEXE[1]) EndIf If $type1 = "xls, doc, ppt" And StringInStr($EXENAME, "PowerPoint")>0 Then $typeall='pps|ppt' ; pps RegWrite("HKCR\.pps","","REG_SZ",'ppsfile') RegWrite("HKCR\ppsfile","","REG_SZ",'Документ PowerPoint') RegWrite("HKCR\ppsfile\shell\open\command","","REG_SZ",'"'&$EXE&'" "%1"') RegWrite("HKCR\ppsfile\DefaultIcon","","REG_SZ",$EXE&',0') ; ppt RegWrite("HKCR\.ppt","","REG_SZ",'ppsfile') GUICtrlSetData($Label10, 'Файлы pps, ppt ассоциированы с '&$aEXE[1]) EndIf ;проверка для файлов архивов If $type1 = "архивы" Then $typeall="bootskin|ip|ksf|rar|zip|7z|cab|gz|ace|arj|bzip2|bz|bz2|cpio|deb|dmg|gzip|hfs|jar|lha|lzh|lzma|rpm|split|swm|tar|taz|tbz|tbz2|tgz|tpz|uu|uue|xxe|z|wim|xar" $aTypeA1 = StringSplit( $typeall, "|") For $i = 1 To $aTypeA1[0] RegWrite("HKCR\."&$aTypeA1[$i],"","REG_SZ",'archive') Next RegWrite("HKCR\archive","","REG_SZ",'Архив '&$aEXE[1]) RegWrite("HKCR\archive\DefaultIcon","","REG_SZ",$EXE) RegWrite("HKCR\archive\shell\open\command","","REG_SZ",'"'&$EXE&'" "%1"') GUICtrlSetData($Label10, 'Файлы архивов ассоциированы с '&$aEXE[1]) EndIf ;проверка для файлов Ghostexp If $EXENAME = "Ghostexp" Then $typeall='gho|ghs' ;gho RegWrite("HKCR\.gho","","REG_SZ",'GHOST') RegWrite("HKCR\GHOST","","REG_SZ",'Файл GHOST') If $assot=1 Then RegWrite("HKCR\GHOST\DefaultIcon","","REG_SZ",'assot.dll,0') RegWrite("HKCR\GHOST\shell\open\command","","REG_SZ",'"'&$EXE&'" "%1"') ;ghs RegWrite("HKCR\.ghs","","REG_SZ",'ghsfile') RegWrite("HKCR\ghsfile","","REG_SZ",'ghs - файл, часть образа') If $assot=1 Then RegWrite("HKCR\ghsfile\DefaultIcon","","REG_SZ",'assot.dll,1') GUICtrlSetData($Label10, 'Файлы gho, ghs ассоциированы с '&$aEXE[1]) EndIf ;проверка для файлов ArtIcons If $EXENAME = "ARTICONS" Then $typeall='ico|cur|ani' RegWrite("HKCR\icofile","","REG_SZ",'icofile') RegWrite("HKCR\icofile\DefaultIcon","","REG_SZ",'%1') RegWrite("HKCR\icofile\shell","","REG_SZ",'open') RegWrite("HKCR\icofile\shell\open\command","","REG_SZ",'"'&$EXE&'" "%1"') RegWrite("HKCR\.ico","","REG_SZ",'icofile') RegWrite("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ico","Progid","REG_SZ",'icofile') RegWrite("HKCR\.cur","","REG_SZ",'icofile') RegWrite("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.cur","Progid","REG_SZ",'icofile') RegWrite("HKCR\.ani","","REG_SZ",'icofile') RegWrite("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ani","Progid","REG_SZ",'icofile') GUICtrlSetData($Label10, 'Файлы ico, cur, ani ассоциированы с '&$aEXE[1]) EndIf ;проверка для файлов WinImage If $EXENAME = "WinImage" Then $typeall='ima' RegWrite("HKCR\.ima","","REG_SZ",'WinImage') If $assot=1 Then RegWrite("HKCR\WinImage\DefaultIcon","","REG_SZ",'assot.dll,2') RegWrite("HKCR\WinImage\shell\Extract\command","","REG_SZ",'"'&$EXE&'" /e "%1"') RegWrite("HKCR\WinImage\shell\open\command","","REG_EXPAND_SZ",'"'&$EXE&'" "%1"') GUICtrlSetData($Label10, 'Файл ima ассоциированы с '&$aEXE[1]) EndIf ;проверка для файлов vmidi If $EXENAME = "vmidi" Then $typeall='kar|mid|rmi' RegWrite("HKCR\.kar","","REG_SZ",'vanBasco.MIDI') RegWrite("HKCR\.mid","","REG_SZ",'vanBasco.MIDI') RegWrite("HKCR\.rmi","","REG_SZ",'vanBasco.MIDI') RegWrite("HKCR\vanBasco.MIDI","","REG_SZ",'vanBasco''s Karaoke Player MIDI Sequence') RegWrite("HKCR\vanBasco.MIDI","EditFlags","REG_DWORD",'65536') RegWrite("HKCR\vanBasco.MIDI\DefaultIcon","","REG_SZ",'%SystemRoot%\System32\mmsys.cpl,19') RegWrite("HKCR\vanBasco.MIDI\shell","","REG_SZ",'play') RegWrite("HKCR\vanBasco.MIDI\shell\open","","REG_SZ",'&Open') RegWrite("HKCR\vanBasco.MIDI\shell\open\command","","REG_SZ",'"'&$EXE&'" "%1"') RegWrite("HKCR\vanBasco.MIDI\shell\open\ddeexec","","REG_SZ",'[load("%1")]') RegWrite("HKCR\vanBasco.MIDI\shell\play","","REG_SZ",'&Play') RegWrite("HKCR\vanBasco.MIDI\shell\play\command","","REG_SZ",'"'&$EXE&'" "%1"') RegWrite("HKCR\vanBasco.MIDI\shell\play\ddeexec","","REG_SZ",'[load("%1")][play]') GUICtrlSetData($Label10, 'Файлы kar, mid ассоциированы с '&$aEXE[1]) EndIf ;проверка для файлов WinRAR If $type1<>"архивы" and $EXENAME = "WinRAR" Then $typeall="rar|cab|gz|ace|arj|bz|bz2|jar|lha|lzh|tar|tbz|tbz2|tgz|uu|uue|xxe|z|r00|r01|r02|r03|r04|r05|r06|r07|r08|r09|r10|r11|r12|r13|r14|r15|r16|r17|r18|r19|r20|r21|r22|r23|r24|r25|r26|r27|r28|r29" $aTypeR1 = StringSplit( $typeall, "|") For $i = 1 To $aTypeR1[0] RegWrite("HKCR\."&$aTypeR1[$i],"","REG_SZ",'WinRAR') Next ; отсебятина RegWrite("HKCR\.bootskin","","REG_SZ",'WinRAR.ZIP') RegWrite("HKCR\.ip","","REG_SZ",'WinRAR.ZIP') RegWrite("HKCR\.ksf","","REG_SZ",'WinRAR.ZIP') ; популярные типы файлов RegWrite("HKCR\.zip","","REG_SZ",'WinRAR.ZIP') RegWrite("HKCR\.7z","","REG_SZ",'7zfile') If $assot=1 Then RegWrite("HKCR\WinRAR\DefaultIcon","","REG_SZ",'assot.dll,5') RegWrite("HKCR\WinRAR\shell\open\command","","REG_SZ",'"'&$EXE&'" "%1"') If $assot=1 Then RegWrite("HKCR\WinRAR.ZIP\DefaultIcon","","REG_SZ",'assot.dll,22') RegWrite("HKCR\WinRAR.ZIP\shell\open\command","","REG_SZ",'"'&$EXE&'" "%1"') If $assot=1 Then RegWrite("HKCR\7zfile\DefaultIcon","","REG_SZ",'assot.dll,21') RegWrite("HKCR\7zfile\shell\open\command","","REG_SZ",'"'&$EXE&'" "%1"') GUICtrlSetData($Label10, 'Файлы архивов ассоциированы с '&$aEXE[1]) EndIf ;проверка для файлов 7zip If $type1<>"архивы" and $EXENAME = "7zFM" Then $typeall="rar|zip|7z|cab|gz|arj|bzip2|bz2|cpio|deb|dmg|gzip|hfs|lha|lzh|lzma|rpm|split|swm|tar|taz|tbz|tbz2|tgz|tpz|z|wim|xar" ; отсебятина RegWrite("HKCR\.bootskin","","REG_SZ",'7-Zip.zip') RegWrite("HKCR\.ip","","REG_SZ",'7-Zip.zip') RegWrite("HKCR\.ksf","","REG_SZ",'7-Zip.zip') $aType7 = StringSplit( $typeall, "|") For $i = 1 To $aType7[0] RegWrite("HKCR\."&$aType7[$i],"","REG_SZ",'7-Zip.'&$aType7[$i]) RegWrite("HKCR\7-Zip."&$aType7[$i],"","REG_SZ",$aType7[$i]&' - архив') RegWrite("HKCR\7-Zip."&$aType7[$i]&"\shell","","REG_SZ",'') RegWrite("HKCR\7-Zip."&$aType7[$i]&"\shell\open","","REG_SZ",'') RegWrite("HKCR\7-Zip."&$aType7[$i]&"\shell\open\command","","REG_SZ",'"'&$EXE&'" "%1"') Next RegWrite("HKCR\7-Zip.7z\DefaultIcon","","REG_SZ",$aEXE[0]&'\7z.dll,0') RegWrite("HKCR\7-Zip.arj\DefaultIcon","","REG_SZ",$aEXE[0]&'\7z.dll,4') RegWrite("HKCR\7-Zip.bz2\DefaultIcon","","REG_SZ",$aEXE[0]&'\7z.dll,2') RegWrite("HKCR\7-Zip.bzip2\DefaultIcon","","REG_SZ",$aEXE[0]&'\7z.dll,2') RegWrite("HKCR\7-Zip.cab\DefaultIcon","","REG_SZ",$aEXE[0]&'\7z.dll,7') RegWrite("HKCR\7-Zip.cpio\DefaultIcon","","REG_SZ",$aEXE[0]&'\7z.dll,12') RegWrite("HKCR\7-Zip.deb\DefaultIcon","","REG_SZ",$aEXE[0]&'\7z.dll,11') RegWrite("HKCR\7-Zip.dmg\DefaultIcon","","REG_SZ",$aEXE[0]&'\7z.dll,17') RegWrite("HKCR\7-Zip.gz\DefaultIcon","","REG_SZ",$aEXE[0]&'\7z.dll,14') RegWrite("HKCR\7-Zip.gzip\DefaultIcon","","REG_SZ",$aEXE[0]&'\7z.dll,14') RegWrite("HKCR\7-Zip.hfs\DefaultIcon","","REG_SZ",$aEXE[0]&'\7z.dll,18') RegWrite("HKCR\7-Zip.lha\DefaultIcon","","REG_SZ",$aEXE[0]&'\7z.dll,6') RegWrite("HKCR\7-Zip.lzh\DefaultIcon","","REG_SZ",$aEXE[0]&'\7z.dll,6') RegWrite("HKCR\7-Zip.lzma\DefaultIcon","","REG_SZ",$aEXE[0]&'\7z.dll,16') RegWrite("HKCR\7-Zip.rar\DefaultIcon","","REG_SZ",$aEXE[0]&'\7z.dll,3') RegWrite("HKCR\7-Zip.rpm\DefaultIcon","","REG_SZ",$aEXE[0]&'\7z.dll,10') RegWrite("HKCR\7-Zip.split\DefaultIcon","","REG_SZ",$aEXE[0]&'\7z.dll,9') RegWrite("HKCR\7-Zip.swm\DefaultIcon","","REG_SZ",$aEXE[0]&'\7z.dll,15') RegWrite("HKCR\7-Zip.tar\DefaultIcon","","REG_SZ",$aEXE[0]&'\7z.dll,13') RegWrite("HKCR\7-Zip.taz\DefaultIcon","","REG_SZ",$aEXE[0]&'\7z.dll,5') RegWrite("HKCR\7-Zip.tbz\DefaultIcon","","REG_SZ",$aEXE[0]&'\7z.dll,2') RegWrite("HKCR\7-Zip.tbz2\DefaultIcon","","REG_SZ",$aEXE[0]&'\7z.dll,2') RegWrite("HKCR\7-Zip.tgz\DefaultIcon","","REG_SZ",$aEXE[0]&'\7z.dll,14') RegWrite("HKCR\7-Zip.tpz\DefaultIcon","","REG_SZ",$aEXE[0]&'\7z.dll,14') RegWrite("HKCR\7-Zip.wim\DefaultIcon","","REG_SZ",$aEXE[0]&'\7z.dll,15') RegWrite("HKCR\7-Zip.xar\DefaultIcon","","REG_SZ",$aEXE[0]&'\7z.dll,19') RegWrite("HKCR\7-Zip.z\DefaultIcon","","REG_SZ",$aEXE[0]&'\7z.dll,5') RegWrite("HKCR\7-Zip.zip\DefaultIcon","","REG_SZ",$aEXE[0]&'\7z.dll,1') GUICtrlSetData($Label10, 'Файлы архивов ассоциированы с '&$aEXE[1]) EndIf If GUICtrlRead($autoicons)=1 and $typeall<>'' Then DllCall("shell32.dll", "none", "SHChangeNotify", "long", '0x8000000', "uint", '0x1000', "ptr", '0', "ptr", '0') If GUICtrlRead($saveBK)=1 and $typeall<>'' Then _backup($typeall, $EXE) Case $msg = $saveall $typeall="avi|mpg|mpeg|mp4|asx|asf|wmv|3gp|mov|mkv|ifo|vob|flv" & _ "mp3|wav|wma|ogg|m3u|pls" & _ "bmp|gif|jpg|png|tga|tif|psd" & _ 'bin|bif|bim' & _ 'dll|res|cpl|ax|exe|apl' & _ 'txt|log|ion|cfg|inc|lst|shl|sif|ini|php|bat|cmd|html|reg|inf' & _ 'iso|mdf|img|mds|md0|md1|md2|md3|md4|md5' & _ 'nfo|diz' & _ 'htm|html' & _ 'xlsdoc|rtf|pps|ppt' & _ 'gho|ghs' & _ 'ico|cur|ani' & _ 'ima' & _ 'kar|mid|rmi' & _ "bootskin|ip|ksf|rar|zip|7z|cab|gz|ace|arj|bzip2|bz|bz2|cpio|deb|dmg|gzip|hfs|jar|lha|lzh|lzma|rpm|split|swm|tar|taz|tbz|tbz2|tgz|tpz|uu|uue|xxe|z|wim|xar" ;MsgBox(4, "gf", $typeall) ;Exit $EXE='' _backup($typeall, $EXE) Case $msg = $Updateicon DllCall("shell32.dll", "none", "SHChangeNotify", "long", '0x8000000', "uint", '0x1000', "ptr", '0', "ptr", '0') Case $msg = $info $type1=GUICtrlRead ($type) If $type1 = "авто" Then MsgBox(0, "Информация", 'Если установлено "авто", то утилита автоматически определяет с какими файлами ассоциировать программу.'&@CRLF&'Если программы не оказалось в списке авто-детектирования, то выбираем тип программы и она будет ассоциированна с указанным типом.'&@CRLF&'Недостатки: возможно мои предпочтения не совпадают с вашими, иногда даже изменяются со временем. Здесь поможет только редактирование скрипта добавлением или удалением строк параметров для реестра.'&@CRLF&'В "авто" утилита дополнительно принимает индивидуально программы: Ghostexp, ArtIcons, vanBasco''s Karaoke Player, WinImage, WinRAR, 7zFM, для которых делает ассоциации.') If $type1 = "видео" Then MsgBox(0, "Информация", "Авто-детектируемые плееры:"&@CRLF&"mplayerc, kmplayer"&@CRLF&""&@CRLF&"Расширения:"&@CRLF&"avi, mpg, mpeg, mp4, asx, asf,"&@CRLF&"wmv, 3gp, mov, mkv, ifo, vob, flv") If $type1 = "bin" Then MsgBox(0, "Информация", "Авто-детектируемые:"&@CRLF&"WinHex, uedit32"&@CRLF&""&@CRLF&"Расширения:"&@CRLF&"bin, bif, bim, Unknown") If $type1 = "текст" Then MsgBox(0, "Информация", "Авто-детектируемые редакторы:"&@CRLF&"notepad++, notepad, akelpad, bred3_2k,"&@CRLF&"EmEditor, PSPad, SciTE, Texter2, uedit32"&@CRLF&""&@CRLF&"Расширения:"&@CRLF&"txt, log, ion, ini, cfg, inc, lst, shl, sif, php, inf"&@CRLF&"А также пункт ""Изменить"" для:"&@CRLF&"bat, cmd, htm, reg"&@CRLF&"И просморщик HTML-кода.") If $type1 = "музыка" Then MsgBox(0, "Информация", "Авто-детектируемые плееры:"&@CRLF&"AIMP2, winamp"&@CRLF&""&@CRLF&"Расширения:"&@CRLF&"mp3, wav, wma, ogg, m3u, pls") If $type1 = "dll, res" Then MsgBox(0, "Информация", "Авто-детектируемые программы:"&@CRLF&"ResHacker, pexplorer, ARTICONS, IconWorkshop"&@CRLF&""&@CRLF&"Расширения:"&@CRLF&"dll, res, cpl, ax, exe, apl"&@CRLF&"В контекстное меню добавляется пункты:"&@CRLF&"Открыть в %программе%"&@CRLF&"а также ""Регистрировать"" и ""Отмена регистрации""") If $type1 = "iso, mdf, img" Then MsgBox(0, "Информация", "Авто-детектируемые:"&@CRLF&"UltraISO"&@CRLF&""&@CRLF&"Расширения:"&@CRLF&"iso, mds, mdf, img") If $type1 = "nfo, diz" Then MsgBox(0, "Информация", "Авто-детектируемые: AsciiArtStudio"&@CRLF&""&@CRLF&"Расширения: diz, nfo"&@CRLF&""&@CRLF&"Для этих файлов можно"&@CRLF&"использовать любой блокнот.") If $type1 = "xls, doc, ppt" Then MsgBox(0, "Информация", "Без авто-детектирования:"&@CRLF&"принимаются только портабельные сборки"&@CRLF&"содержащие в именах файлов Excel, Word, PowerPoint"&@CRLF&"и обязательно при условии выбора xls, doc, ppt"&@CRLF&""&@CRLF&"Расширения: xls, doc, rtf, ppt, pps") If $type1 = "архивы" Then MsgBox(0, "Информация", "Без авто-детектирования"&@CRLF&"WinRAR и 7zFM лучше принимать в авто"&@CRLF&"здесь универсальный способ"&@CRLF&"дающий одинаковую иконку программы всем архивам"&@CRLF&""&@CRLF&"Расширения: (bootskin, ip, ksf) rar, zip, 7z, cab, gz, ace, arj,"&@CRLF&"bzip2, bz, bz2, cpio, deb, dmg, gzip, hfs, jar, lha, lzh, lzma,"&@CRLF&"rpm, split, swm, tar, taz, tbz, tbz2, tgz, tpz, uu, uue, xxe, z, wim, xar") If $type1 = "htm, html" Then MsgBox(0, "Информация", "Авто-детектируемые"&@CRLF&"Maxthon, Firefox, Opera, iexplore"&@CRLF&@CRLF&"Расширения: htm, html") If $type1 = "гарфика" Then MsgBox(0, "Информация", "Авто-детектируемые"&@CRLF&"Imagine, mspaint, HprSnap6,"&@CRLF&"PhotoFiltre, Photoshop, GIMP"&@CRLF&@CRLF&"Расширения:"&@CRLF&"bmp, gif, jpg, png, tga, tif, psd") Case $msg = $warning MsgBox(0, "Напутствие", "Перед использованием программы сделайте точку восстановления, данные изменяются только в реестре, поэтому легко будет сделать откат системы."&@CRLF&"Когда появится доверие к программе и сделанные изменения будут устраивать, тогда можно будет пользоваться и без контрольных точек."&@CRLF&"После выполнения операций проверяйте открытие, иконки и контекстное меню у ассоциированных файлов."&@CRLF&"Программа тестирована на - WindousXP SP3 (SP1 и SP2 - аналогичны).") Case $msg = -3 ExitLoop EndSelect WEnd Func _backup($typeall, $EXE) If $EXE<>'' Then $EXE0 = StringRegExp($EXE, "(^.*)\\(.*)$", 3) $EXE='before_'&$EXE0[1] Else $EXE='all_assot' EndIf $razdelit='#==========================' ; разделяет экспортированные ветки $filename=@ScriptDir&'\backup_'&$EXE ; генерируем имя нового файла с номером копии на случай если файл существует $i = 1 While FileExists($filename&$i&'.reg') $i +=1 WEnd $filename=$filename&$i&'.reg' $filename0 = StringRegExp($filename, "(^.*)\\(.*)$", 3) $aTypeAll = StringSplit( $typeall, "|") If $razdelit<>'' Then $razdelit&=@CRLF $Data='' $TypeFileData='1none1' ; для отфильтровки повторного обращения к классу ассоциаций $timer = TimerInit() ; засекаем время ;оболочка сообщений о ходе процесса если reg-файл 100кб и более ProgressOn("Бэкапирование", $filename0[1], "Экспорт из реестра, 0 % "&$aTypeAll[0]&' типов',-1,-1,18) For $i=1 To $aTypeAll[0] ; статистика: рассчёт полосы прогресса $ps=Ceiling ($i*100/$aTypeAll[0]) ProgressSet( $ps, "Экспорт из реестра, "&$ps & " %, ветка: "&$i&' / '&$aTypeAll[0]&@CRLF&Ceiling(TimerDiff($timer) / 1000) & " сек") $TypeFile = RegRead("HKCR\."&$aTypeAll[$i], "") If @error Then ContinueLoop Else RegReplace('HKEY_CLASSES_ROOT\.'&$aTypeAll[$i]) $count1 = StringRegExp($TypeFileData, $TypeFile, 0) RegRead("HKCR\"&$TypeFile, "") If @error or $count1=1 Then ContinueLoop Else $TypeFileData &='|'&$TypeFile RegReplace('HKEY_CLASSES_ROOT\'&$TypeFile) EndIf EndIf Next ProgressOff() $filebackup = FileOpen($filename, 2) ; открываем бэкап-файл $Data=StringTrimRight (StringRegExpReplace($Data & "[","\[[^\]]*\]\s*(?=\[)",""),1) FileWrite($filebackup, 'Windows Registry Editor Version 5.00'&@CRLF&@CRLF&$Data&@CRLF) ;FileWrite($filebackup, 'REGEDIT4'&@CRLF&@CRLF&$Data) ; для win98 FileClose($filebackup) EndFunc Func RegReplace($sKey) ;$sKey - исходная ветка Local $i, $sTemp, $sValuename, $sValue, $sValuetype, $Re='' $i = 0 While 1 $i += 1 $sValuename = RegEnumVal($sKey, $i) If @error Then ExitLoop $sValue = RegRead($sKey, $sValuename) If @error=1 or @error=-1 or @error=-2 Then ContinueLoop $sValuetype = @extended ;здесь идет модификация реестра $sValuename=StringRegExpReplace($sValuename,'[\\]',"\\$0") ; всегда заменяем в параметре наклонную черту на двойную Switch $sValuetype Case 1, 2, 7 $sValue=StringRegExpReplace($sValue,'["\\]',"\\$0") $sValue=StringRegExpReplace($sValue,'=\\"\\"','="\\"') $sValue=StringRegExpReplace($sValue,'\\"\\"','\\""') If $Re=$sKey Then $Data&='"'&$sValuename&'"="'&$sValue&'"'&@CRLF Else $Data&=@CRLF&'['&$sKey&']'&@CRLF&'"'&$sValuename&'"="'&$sValue&'"'&@CRLF $Re=$sKey EndIf Case 4 If $Re=$sKey Then $Data&='"'&$sValuename&'"=dword:'&StringLower(Hex ( $sValue ))&@CRLF Else $Data&=@CRLF&'['&$sKey&']'&@CRLF&'"'&$sValuename&'"=dword:'&StringLower(Hex ( $sValue ))&@CRLF $Re=$sKey EndIf Case 3 $hex='' $len = StringLen($sValue) $lenVN = StringLen($sValuename)-1 If $lenVN>=69 Then $lenVN=66 $s0=22-($lenVN-mod($lenVN, 3))/3 ; количество символов для первой строки reg-данных $s=0 $r=0 For $h = 3 To $len Step 2 $hex2 = StringMid($sValue, $h, 2) If $s=$s0 or $r=24 Then $hex&=$hex2&',\'&@CRLF&' ' $s=24 $r=0 Else $hex&=$hex2&',' $s+=1 $r+=1 EndIf Next $hex = StringTrimRight($hex,1) $hex = StringLower($hex) ; преобразование в строчные If $Re=$sKey Then $Data&='"'&$sValuename&'"=hex:'&$hex&@CRLF Else $Data&=@CRLF&'['&$sKey&']'&@CRLF&'"'&$sValuename&'"=hex:'&$hex&@CRLF $Re=$sKey EndIf Case Else $Data&='# error... ключ:"'&$sKey&'" параметр:"'&$sValuename&'" значение:"'&$sValue&'" тип:"'&$sValuetype&'"'&@CRLF EndSwitch WEnd ;рекурсия $i = 0 While 1 $i += 1 $sTemp = RegEnumKey($sKey, $i) If @error Then ExitLoop RegReplace($sKey & '\' & $sTemp) WEnd $Data=StringReplace($Data, '""=', '@=') Return EndFunc |