Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Автоматическая установка Windows 2000/XP/2003 (http://forum.oszone.net/forumdisplay.php?f=32)
-   -   [тестируем] Утилита для сохранения и восстановления ассоциаций файлов (http://forum.oszone.net/showthread.php?t=94636)

Bulba_S 22-11-2007 08:16 683145

[тестируем] Утилита для сохранения и восстановления ассоциаций файлов
 
Вложений: 4
Благодаря отпуску в ноябре 2007 года увлекся темой автоматической установки Windows и приложений и с удивлением обнаружил, что не могу найти ничего подходящего для сохранения и восстановления ассоциаций файлов. Процедура сама по себе очень простая, поэтому решил написать небольшую утилитку для командной строки.

Для отладки сделал GUI-версию на Delphi 7, но когда получил желаемые CMD-файлы, интерес к проекту ослаб. Чтобы не пропало добро, выкладываю здесь вместе с исходниками.

Программа требует полное имя файла, просматривает реестр, выискивая ассоциации, показывает их и предлагает записать в CMD-файл, INF или REG-файлы. В CMD и INF вместо абсолютных путей есть возможность сохранить переменные среды.

Сделана также версия для командной строки.

Новая версия 0.1:
1) добавлен поиск и сохранение ассоциаций по shell\view (использует ArtIcons Pro);
2) исправлена ошибка: кавычка для команды REG в CMD-файле теперь утраивается;
3) команды ASSOC и FTYPE в CMD-файле заменены на REG ADD;
4) более наглядное отображение ассоциаций в AssView;
5) проект теперь компилируется во FreePascal/Lazarus.

Образец генерируемых файлов для версии 0.1 beta (7-Zip 4.56) и версии 0.1 (7-Zip 4.58) прилагается. Когда версия 0.1 "приживется", 0.1 beta будет удалена.

wadimus 23-11-2007 10:16 683794

Bulba_S,
AssView - название!! Это пять!! ;)

Bulba_S 23-11-2007 11:28 683825

:-)

samsobi 23-11-2007 15:45 684015

Да уж поменяй название, а то программа ассоциации вызывает другие ассоциации :D

Bulba_S 24-11-2007 07:31 684410

Ну, если появится необходимость доработать что-то еще, кроме названия, постараюсь поменять. Хотя, честно говоря, мне теперь название еще больше нравится, чем когда я его придумал ;)

... Ay_Emul: Mumiy Troll - Yadovitaya zvezda

aset 25-11-2007 16:18 685016

Bulba_S,
особенно перевод клевый))) получается у сабжа)

LonerD 02-12-2007 23:15 689192

СПАСИБО
СПАСИБО
СПАСИБО
Именно подобной программки и не хватало.
Утилитка Associate.exe работает кривовато, ручками каждый раз лазить по реестру нет желания...
Надеюсь, проект будет развиваться.

Bulba_S 03-12-2007 11:21 689407

Цитата:

Цитата DPavlik82
Надеюсь, проект будет развиваться. »

TODO пока пуст, предлагайте ;) Наверное имеет смысл сделать командлайновый вариант типа:

GetAss "ProgramPath" "Dest.cmd"

Если название устроит ;)

... Ay_Emul: Track 09 - Ennio Morricone - Deborah's Theme

LonerD 03-12-2007 21:45 689861

Предлагаю:
1. Добавить выбор приложения через поиск (чтобы каждый раз путь к приложению ручками не вбивать)
2. Оформить конечный результат через cmd-файл и через reg-файл
3. Добавить возможность анти-регистрации (удаление ассоциаций, сделать расширение файла"ничейным")

Bulba_S 05-12-2007 12:26 690969

DPavlik82, для третьего пункта есть команда Assoc (которую я и использую в конечном CMD). Остальное добавил в TODO, постараюсь в долгий ящик не откладывать ;)

Bulba_S 05-12-2007 14:25 691077

Пункт 1 более-менее сделал (можно задавать строку для поиска, например "." покажет все ассоциации, так как точка есть в имени любого исполняемого файла). Пока не выкладываю, так как по пункту 2 есть проблема:

в отличие от CMD файла, в котором переменные среды автоматом преобразуются в их значения, в REG-файле надо либо сохранять уже развернутый путь, что затрудняет его использование при автоматической установке Windows (системный диск может быть не "C:"), либо использовать строки реестра типа EXPAND_SZ, но тогда в реестре хранится не чистый путь, а например

%sysvar%\MyProgs\Prog.exe,

а сам REG-файл становится не читаемым (@=hex(2):25,53,79 и т.д.).

Надо ли городить огород, может CMD-файла достаточно?

... Ay_Emul: Океан Эльзы - Я до тебе

-devICE- 05-12-2007 21:20 691341

Bulba_S, молодец. хорошую утилиту сделал! с reg-файлом было бы интереснее... но может попробовать в inf-файл???

Bulba_S 08-12-2007 08:39 693151

Цитата:

Цитата tracers.devICE
reg-файлом было бы интереснее... но может попробовать в inf-файл??? »

REG-файл с жесткими путями я сделаю, это не универсальное, но работоспособное решение. На счет inf я даже не думал, если там есть такая секция, постараюсь сделать. Не плохо бы найти пример такого inf-файла или описание. Сегодня вечером попробую в дистрибутиве windows порыться, какой-нибудь блокнот или paint наверняка inf для регистрации типов используют.

... Ay_Emul: no song playing...

Real Root 08-12-2007 21:10 693479

Так целая статья об этом есть
Руководство по работе с inf-файлами

Bulba_S 15-12-2007 08:32 697600

Real Root, спасибо почитал. Не разобрался только, как переменные среды разворачивать внутри INF.

Прилагаю версию 0.1 alpha. Теперь пакет называется более благозвучно: AssTools ;)
В его состав входит:
AssSave - утилита для командной строки;
AssView - это уже все знают, что такое :)

Новое (постарался удовлетворить все просьбы):
1) можно указывать не только полный путь к программе, но и часть пути, например, "wordpad" или "7z";
2) добавлено сохранение в REG и INF (пути не преобразуются в переменные среды);
3) версия для командной строки.

В следствие пункта 1), команда вида

AssSave .

сохранит в .CMD практически все ассоциации из реестра (трудно представаить программу, в пути которой не содержится символа точки, хотя такое возможно).

Утилита для командной строки публикуется практически "с колес", да и новые функции пока усиленно не тестировались, поэтому жду ваших замечаний!

ЗЫ Исходники прилагаются.

... Ay_Emul: СПЛИH - SOS!

Vadikan 15-12-2007 23:41 697970

Bulba_S, спасибо! Лучше в шапке ссылки заменить, т.к. из нее люди все равно будут продолжать качать...

Bulba_S 16-12-2007 05:02 698061

Vadikan, не заметил, что есть возможность менять вложенные файлы (не догадался нажать кнопку "расширенное редактирование" ;) Сейчас поправлю.

... Ay_Emul: no song playing...

-devICE- 16-12-2007 21:09 698291

Bulba_S, переменную %systemdrive% в INF-файлах можно обозначить как %24%. Скачай тут хелп по INF в CHM формате.
Выдержка из мана:
Код:

DIRID_APPS        24          Неизвестно, но для Windows NT 4.0 и выше, установленной на диск C:\ - это директория C:\. Скорее всего, это аналог системной переменной %SystemDrive%
Пример:
Код:

HKCR,"FastStone.psd\DefaultIcon",,,"%24%\Program Files\FSViewer34\FSIcons.db,8"

Bulba_S 17-12-2007 14:48 698666

tracers.devICE, спасибо, посмотрю. Конечно, это выход, если в инсталляции папку Program Files не переименуют ;)

Bulba_S 08-01-2008 07:54 711577

Новая версия 0.1 beta (ссылка в шапке): добавлены аналоги переменных среды при сохранении в INF (спасибо tracers.devICE за информацию и за саму идею сохранения INF в этой утилите).

Imago_ 09-02-2008 12:59 736506

Так..на всякий случай: добавление в реестр нижеследующих строк упростит процедуру получения cmd с ассоциациями.
Код:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\exefile\shell\AssTools01b]
@="Бэкап ассоциаций"

[HKEY_CLASSES_ROOT\exefile\shell\AssTools01b\command]
@="\"<ваш путь к папке с AssSave.exe>\\AssSave.exe\" \"%1\""

учитывайте двойной слэш в пути.
Все просто - правой кнопкой мыши на любом *.exe и выбрать "Бэкап ассоциаций" - файл сохраняется в той же папке.

в todo: рекомендую добавить подобный контекст к gui (что-то типа кнопки "ассоциировать").

зы. ассоциации не всегда выковыриваются - пример ArtIcons Pro

Bulba_S 11-02-2008 13:21 737820

Imago_, хорошо, постараюсь сделать. Тем более что надо добавить на всякий случай обработку кавычек в Value (в CMD-варианте). " в реестре -> """ в CMD. Конечно, чисто гипотетически, но может встретиться.

ArtIcons Pro - не уверен, что в ближайшее время установлю у себя эту программу, может просто скопируете мне в личку, например, содержимое соответствующих веток реестра? Дело в том, что способов интегрироваться в оболочку великое множество, тот же XMPlay после первого запуска похоже настраивает механизм DDE и первый раз после AssTools ассоциированный файл не срабатывает.

Я уже не говорю о том, что AssTools не сохраняет массу подключей из тех же веток, только самый минимум (с моей точки зрения конечно) ;)

Bulba_S 16-02-2008 06:49 741283

Imago_, я посмотрел Ваш reg-файл. Там вместо shell\Open используется shell\View. Конечно, самое простое, сохранить все подключи ветки shell, но мне кажется, что это уже выходит за рамки простой ассоциации, это уже полноценная интеграция ;) Хотелось бы все таки более узкоспециализированную утилиту сделать, которая сохраняет ровно столько, сколько нужно для простого открытия нужного типа файла. Возможно я не прав, буду работать над новой версией, возможно поменяю свое мнение...

... Ay_Emul: Skull Chaser/THH/CTL: may 2ooO - SwirlOfSoul

omg_lol 02-05-2008 16:39 793234

Здраствуйте, у меня проблемма. Мне нужно с помощью вашей программы ассоциировать файлы формата *.wma и *.wmv к другому приложению. Я жму правой кнопкой на файл расширения *.wma, жму "изменить" изменяю программу, жму "ок". В плеере все отлчно открывается, потом запускаю вашу программу, выставляю полный путь до плеера, жму "просмотр ассоциации", а он мне выдает только фойлы формата "3gp" и файлы плэйлистов и скинов для моего плеера. что делать?

_Aspire_ 02-05-2008 16:50 793241

omg_lol, попробуй программу RegShot. Там сначала делаешь снимок реестра, затем делаешь что тебе нужно, потом делаешь снимок опять и программа выдает тебе практически готовый рег-файл, остается скопировать в тхт-файл и переименовать в рег.

omg_lol 02-05-2008 17:10 793255

_Aspire_ , спасибо, но для меня не проблемма это сделать самому, просто долго. Я уже сделал привязку к основным форматам, а сюда написал про это чисто для информации автора, потому как считаю это недороботкой.

Bulba_S 02-05-2008 17:42 793274

omg_lol, спасибо, добавил в todo ;)

Stas-Karabas 09-09-2008 10:50 894389

Тема жива ? Приветствую всех. а с XnView ничего не происходит, все 3 варианта не подходят...

Bulba_S 09-09-2008 11:53 894440

Stas-Karabas, пока не могу найти время на такие проекты, надеюсь осенью во время отпуска подобью все todo...

Narm 14-09-2008 15:26 898847

Bulba_S, огромное спасибо за прогу, облегчил жизнь :up .
У меня такое вот предложение: добавить регистрацию библиотек, относящихся к приложению. а то все как-то ручками приходится лазать... лазить не лень, но все равно было бы здорово :)
еще раз спасибо за программу...

Bulba_S 16-09-2008 14:00 900685

Narm, о библиотеках я знаю только то, что деинсталляторы как-то определяют, что "библиотека ... больше не используется ни одним приложением, удалить?". Но как однозначно опредилить, зарегестрирована библиотека вручную, или каким-то конкретно приложением, я не знаю...

baton79 08-10-2008 15:51 918888

Stas-Karabas, по поводу XnView - возьми три файлика настроек с папки appl data в all users. у меня вроде бы работает

Bulba_S 17-11-2008 12:56 954800

За переход с Delphi на Lazarus просьба сильно не пинать, размер всего-то в три раза вырос ;)

XnView у меня в данный момент нет, плюс еще пару просьб по todo не сделал. Зато информация о способе передачи кавычек через командную строку позволила сделать CMD-вариант только через REG ADD. Все остальные изменения косметические.

Из программ, которые используют не open, а view, как ArtIcons Pro, я ничего не нашел, но тем не менее сделал, раз была заявка.

Куда именно прописываются ассоциации по вызову "Изменить приложение" я тоже пока не понял. В общем, есть еще что сделать в версии 0.2 ;)

... Ay_Emul игpает: Океан Эльзы - Кiшка

Imago_ 23-11-2008 04:16 960671

Насколько я понимаю ниже приведенные отличия и есть "CMD-вариант только через REG ADD"?
Код:

assoc .M3U=AIMP.M3U
ftype AIMP.M3U=%programfiles%\AIMP2\AIMP2.exe "%%1"

Код:

reg add "HKCR\.M3U" /ve /d "AIMP.M3U" /f
reg add "HKCR\AIMP.M3U\shell\open\command" /ve /d "%programfiles%\AIMP2\AIMP2.exe """%%1"""" /f

Если на секрет - с чем связано изменение? (в todo внятной информации нет :( ).
И еще такой вопрос -
"DPavlik82:
[сделано]1. Добавить выбор приложения через поиск (чтобы каждый раз путь к приложению ручками не вбивать)
"
- не нашел :(

Bulba_S 23-11-2008 05:23 960682

Цитата:

Цитата Imago_
Если на секрет - с чем связано изменение? »

assoc и ftype с самого начала было вынужденное решение, так как чтение втроенной справки cmd и поиски в инете так и не дали мне ответа, как команде reg передать в качестве параметра кавычку. Это первое. Во-вторых, своими глазами видел как команда assoc отрабатывает, по списку выдает новую ассоциацию, а в реестре все по-прежнему и открывается старое приложение. ftype сохраняет строку не reg_sz, как мне хотелось бы, а reg_expand_sz.

Цитата:

Цитата Imago_
[сделано]1. Добавить выбор приложения через поиск (чтобы каждый раз путь к приложению ручками не вбивать)"
- не нашел »

Это не от этой версии. В самой первой альфе нужно было самому найти приложение и скопировать его полный путь в поле для ввода. В следующей версии стало достаточно ввести часть пути к приложению (например, notepad).

... Ay_Emul игpает: тишина...

Imago_ 24-11-2008 21:23 962482

Не смог получить файл ассоциаций от IZArc, весьма неплохого архиватора.

upd.
Странно.. Если не вводить путь - все получается..

Bulba_S 25-11-2008 05:14 962725

Imago_, пришли пожалуйста regshot'ы соответствуюших веток реестра, попробую разобраться.

... Ay_Emul игpает: SPACEMAN

Подозреваю, что IZArc использует короткие пути, это в принципе можно учесть в следующей версии.

Bulba_S 27-11-2008 13:58 965170

Найден баг: AssView 0.1 не находит ассоциации при запуске из под Windows 98 SE (использовал функцию WideUpperCase, во Free Pascal она работает только на юникодной винде). AssSave работает.

... Ay_Emul игpает: А.Вивальди, H. Паганини - А. Вивальди - Концеpт Для Двух Скpипок и Basso Continuo с Оpкестpом D-Moll III Часть

AZJIO 02-02-2009 12:33 1027076

Bulba_S, Я тоже пытался сделать восстановление ассоциаций, но с учётом, что всё в ручную прописывать, вот здесь.

Bulba_S 02-02-2009 12:54 1027102

andsok, спасибо за ссылку. Там в ветке вроде есть ответ на мой вопрос:

Цитата:

Цитата Bulba_S
Куда именно прописываются ассоциации по вызову "Изменить приложение" »

Потом почитаю внимательнее.

... Ay_Emul игpает: тишина...

AZJIO 05-02-2009 08:55 1029914

Bulba_S, там немного устаревшие, вот новый my_assot_v0.6.exe.
Сразу скажу, устанавливать не нужно, так как пути к программам для моей подборки программ, но разархивировать sfx-архив и подправить пути в reg-файле для себя можно. В reg-файле есть подсказки, в отличии от старой версии более оптимизировал, удалив регистрацию расширений "для всех пользователей", оставив регистрацию только для текущего пользователя, также добавил количество расширений.

Enforcer2K 24-02-2009 15:05 1047480

Есть у меня один могильничек... Тьфу, идейка =) Небольшой сервис, а уже через него происходит открытие файлов. Со своей базой, настройками и т.д. ИМХО так будет лучше всего.

ЗЫ: Скоро займусь этим

R.M.L 24-03-2009 03:42 1072793

Bulba_S, спасибо тебе,особенно за исходники )) Мне было нужно функция експорт reg файла с форматированием параметров.Долго искал исходники,но были не те,случайно наткнулся сюда и увидев исходники попал просто в ШОК :)) Да и щас в том же духе,спасибо большое.

morismoss 12-04-2009 16:03 1091886

Bulba_S
Спасибо огромное, очень полезная программа.
Цитата:

Цитата Stas-Karabas
а с XnView ничего не происходит, все 3 варианта не подходят... »

И с XnView , и с Imagine и с другими просмоторщиками. Видимо где то ещё есть какой- то параметр.

camo 22-10-2009 20:31 1249799

Enforcer2K
Цитата:

Цитата Enforcer2K
ЗЫ: Скоро займусь этим »

А где же результат?

grishunin08 24-12-2009 08:04 1303109

А что необходимо для сохранения и восстановления ассоциаций файлов видео и аудио вот такими файлами

LonerD 25-12-2009 14:27 1304003

Цитата:

Цитата grishunin08
А что необходимо для сохранения и восстановления ассоциаций файлов видео и аудио вот такими файлами »

прежде всего нужен плеер, который их воспроизводит (по внешнему виду не понять что это за плеер)

grishunin08 26-12-2009 12:06 1304605

DPavlik82, windows media player 12 русская версия, но в адонах не нашол его.

seriych 18-01-2010 14:12 1323422

У меня пара вопросов.
1) Генерируемые рег-файлы отличаются для разных ОС? XP, Vista, 7? Или надо для каждой ОС свой рег-файл делать?
2) Для 64-битной ОС оно вообще правильно работает? Ибо переменной среды %programfiles (x86)% я в этой программе не обнаружил.

PS. Нашел 64-битную ОС. Там путь не заменяется на %programfiles (x86)% но работать насколько я понимаю будет, если пути стандартные?

PPS. Ну тогда просьба доделать прогу для 64-бит :-)

AZJIO 27-05-2010 19:17 1422393

Я для восстановления использую эту программу.

crushner 12-10-2011 11:52 1771661

СПАСИБООООО!!!!!

Seven213 29-01-2013 17:45 2077853

Спасибо, работает.

Vladimir_02 09-08-2014 13:58 2386979

очень полезная прога.... Спасибо!

zbz 11-04-2015 18:31 2494604

ОГРОМНОЕ СПАСИБО, пригодилась, на Windows 8.1 работает


Время: 19:11.

Время: 19:11.
© OSzone.net 2001-