PureBasic


assot_live_cd

Назначение

Программа предназначена для открытия файлов через контекстное меню или кликом на файле, взависимости от настроек (в LiveCD).

ВНИМАНИЕ! Не запускать на стационарной системе, так как будут поломаны все ассоциации файлов, а актуальности запуска нет никакой. Позже будет добавлена проверка, что текущая система WinPE. Если нет диска X:\ то программа ничего не делает.

Тестировалась на 2k10 со сборником программ.

Упрощённый способ добавление утилитки (3 файла) в программную папку и запуск reg-файла. При этом в контекстном меню файлов появится пункт "Открыть в автоассоциации". Кликнув на этому пункте утилитка проверит ini-файл (assot_live_cd.ini) на наличие связи с программой, далее эта программа ищется в списке программ assot_live_cd.lst. Список программ получен автоматически с помощью моей программы "Create_list_files", поиск EXE-файлов, относительные пути. В реальности нужно убрать программы, которые не открывают файлы, таких много.

Если не хочется открывать через контекстное меню совершая лишние клики, то нужно создать класс, например с именем утилитки "assot_live_cd" и во всех перечисленных в ini-файле ассоциациях указать класс "assot_live_cd". То есть в реестре ".txt" должен ссылаться на класс "assot_live_cd" и так для всех расширений. Недостаток этого метода в том что иконки файлу указываются в классе, если это не имеет значение и нет желания добавлять иконку, то этот метод приемлем. Но и это можно решить, указав в командной строке используемых классов "assot_live_cd.exe", то есть открываем "HKCR\txtfile\shell\open\command" и прописываем запуск "...\assot_live_cd.exe" "%1"

При тесте выяснилось, что Aimp распаковывается не как все, не по адресу "B:\TEMP\2K10\" из-за чего он запускается, но не открывается файл в нём. Даже если EXE-файл запущен, то уже проще кинуть в него файл. AkelPad разрешает несколько окон, из-за чего он первый раз запускается, а второй раз открывается файл в новом экземпляре программы. ResHacker не открывает файл из-за того, что имя запускаемого файла одно, а имя распакованного файла другое. Так что все эти проблемы проще исправить перепаковкой программы.

Формат ini-файла достаточно прост, программа ищет расширение ",txt," с запятыми как разделителями и с чем связано - имя "1", здесь вместо "1" можно списать имя "text", главное, чтобы в секции [assot] было такое же имя и связанные с ним программы. Программ может быть несколько, если первая не найдена, будет искаться вторая и т.д. Кстати, тут была идея выдавать меню-список программ, чтобы был выбор, но программа резко возрастёт на 80 кб, так как GUI потребует этот минимум.

Пример путей "assot_live_cd.lst", через вертикальную черту можно указать внутреннее имя программы или полный путь
Editors\ResHacker\ResHacker.exe|ResHackerFX.exe
Media\AIMP\Aimp2.exe|B:\TEMP\Aimp\AIMP2.exe
Чтобы было меньше проблем обязательно в списки доступных программ укажите системные блокноты, паинты, ворды.

Режимы:
1 - Добавляет пункт в меню. Этот режим требует открывать меню, чтобы открыть файл с помощью "assot_live_cd.exe". Другие два режима удобнее тем что достаточно кликать файл.
2 - Все расширения связывает с классом "assot_live_cd"
3 - В каждом классе прописывает путь к "assot_live_cd.exe". В этом режиме расширения самостоятельные, можно указать иконку каждому файлу.
При добавлении пункта "Автоассоциация" в режимах 2 и 3 этот пункт назначается главным, то есть работает при клике на файле, причём остальные пункты ("open") не перезаписываются, т.е. не ломаются системные пункты, такие как "Слияние" для reg-файлов и т.д.