Ассоциация файлов в Windows

Обсуждение любых программ, не имеющих отношения к Total Commander.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

Ответить
Аватара пользователя
Andrey_A
Сообщения: 394
Зарегистрирован: Пт апр 10, 2009 06:28
Откуда: Сочи
Контактная информация:

Ассоциация файлов в Windows

Сообщение Andrey_A »

Что нужно внести в реестр, чтобы тот или иной файл открывался нужной программой в проводнике?
В тотале я настроил ассоциации, но в проводнике проблема. У некоторых любителей тотала, как и у меня, есть полностью Портабельский, настроеный тотал.
Я, к примеру после установки системы просто копирую тотал и работаю, все файлы запускаются тем чем надо через тотал, но хотелоь, чтобы открыв проводник происходило тоже самое.
Я пытался сделать .reg файл, но у меня не получается... помогите чем можете...
И ещё в эту же тему, хотелось, чтобы значки в проводнике, отображались как мне надо (для этого тоже можно наверное создать .reg файл, один раз запустил и всё), а то получается в тотале привык к одному, открываешь проводник, а там ужас...
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

Andrey_A
Вот самый простой REG-файл:

Код: Выделить всё

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.ext]
@="extfile"

[HKEY_CLASSES_ROOT\extfile]

[HKEY_CLASSES_ROOT\extfile\DefaultIcon]
@="C:\\Program Files\\TotalCmd\\wcmicons.dll,26"

[HKEY_CLASSES_ROOT\extfile\shell]

[HKEY_CLASSES_ROOT\extfile\shell\open]

[HKEY_CLASSES_ROOT\extfile\shell\open\command]
@="\"C:\\Program Files\\Some Program\\program.exe\" \"%1\""
.ext — требуемое расширение;
extfile — имя типа (произвольное, но уникальное для ветки HKCR);
C:\Program Files\TotalCmd\wcmicons.dll,26 — значок файла;
C:\Program Files\Some Program\program.exe — программа, которой надо открывать файл.


PS: Это для WinXP. В Висте и, соответственно, Семёрке MS чего-то дикого наворотила с этими ассоциациями, так что там я не экспериментировал, и вышеприведённый вариант может не сработать.
Почему же, ё-моё, ты нигде не пишешь "ё"?
Аватара пользователя
Andrey_A
Сообщения: 394
Зарегистрирован: Пт апр 10, 2009 06:28
Откуда: Сочи
Контактная информация:

Сообщение Andrey_A »

Спасибо за подсказку, файлы стали открываться, тем чем надо, но значки стали появляться некорректно, ситуация такая
я создал три reg файла inc.reg, ini.reg, txt.reg - по описанному выше сценарию, все эти три расширения открываются в АкелПад, но значки у них разные, что и прописал в .reg... Нажимаю сначала на
inc.reg, потом ini.reg, затем txt.reg, все открываются, но значки у всех от .txt
Сначала не мог понять, но потом понял: какой последний .reg файл запускаешь, те значки и у всех файлов
Вопрос: Может что-то добавить в выше описаный сценарий, потому что расширение в нём прописано только один раз, в начале и всё, может ещё где-то прописать для точности
Аватара пользователя
Andrey_A
Сообщения: 394
Зарегистрирован: Пт апр 10, 2009 06:28
Откуда: Сочи
Контактная информация:

Сообщение Andrey_A »

... через полчаса
По-моему разобрался, хотя и сомневаюсь, надо ли было менять extfile на (к примеру) txtfile - я везде заменил и получилось,

Код: Выделить всё

Windows Registry Editor Version 5.00 

[HKEY_CLASSES_ROOT\.txt] 
@="txtfile" 

[HKEY_CLASSES_ROOT\txtfile] 

[HKEY_CLASSES_ROOT\txtfile\DefaultIcon] 
@="C:\\Total Commander Image\\Files\\МуTotalIcons.dll,2" 

[HKEY_CLASSES_ROOT\txtfile\shell] 

[HKEY_CLASSES_ROOT\txtfile\shell\open] 

[HKEY_CLASSES_ROOT\txtfile\shell\open\command] 
@="\"C:\\Total Commander Image\\Plugins\\exe\\AkelPad\\AkelPad.exe\" \"%1\""
и файл открывается, и значок нужный
только вот гложет, корректно ли это, или всё правильно
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

Andrey_A
Совершенно правильно. В реестре должны быть созданы два поддерева, первое из которых (HKCR\.txt) тривиально и состоит лишь из расширения файла и имени типа, а второе поддерево (HKCR\txtfile) полностью определяет этот тип, задавая и значок, и программу обработки.
Почему же, ё-моё, ты нигде не пишешь "ё"?
Аватара пользователя
Andrey_A
Сообщения: 394
Зарегистрирован: Пт апр 10, 2009 06:28
Откуда: Сочи
Контактная информация:

Сообщение Andrey_A »

Спасибо CaptainFlint!
Аватара пользователя
Andrey_A
Сообщения: 394
Зарегистрирован: Пт апр 10, 2009 06:28
Откуда: Сочи
Контактная информация:

Сообщение Andrey_A »

Кстати, почвился ещё вопросик по теме:
можно ли в реестр посылать переменную %COMMANDER_PATH%
или реестр её не распознает?
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Andrey_A писал(а):или реестр её не распознает?
Конечно, нет.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

Andrey_A писал(а):можно ли в реестр посылать переменную %COMMANDER_PATH%
или реестр её не распознает?
Реестру-то по барабану, чего хранить. Вопрос правильно ставить так, распознает ли эту переменную программа, которая считает этот ключ. Но проблема в том, что переменная %COMMANDER_PATH% определена локально лишь для самого Тотала и порождённых им процессов, а Проводник к таковым не относится, так что этой переменной он попросту не увидит. И даже если явным образом добавить эту переменную глобально в систему, не факт что он вообще станет их разворачивать, это надо экспериментировать.
Почему же, ё-моё, ты нигде не пишешь "ё"?
Аватара пользователя
Andrey_A
Сообщения: 394
Зарегистрирован: Пт апр 10, 2009 06:28
Откуда: Сочи
Контактная информация:

Сообщение Andrey_A »

И даже если явным образом добавить эту переменную глобально в систему
Есть ли способ, чтобы Windows ВСЕГДА ассоциировал переменную
%COMMANDER_PATH%=c:\Total Commander
чтобы в командной строке по команде cmd /k set ВСЕГДА отображалось
COMMANDER_PATH=c:\Total Commander
т.к. я Тотал после установки системы просто копирую (а не устанавливаю), то думаю, что что-то необходимо внести в реестр чтобы переменная где-то в реестре зафиксировалась
При экспериментах в командной строке то появляется эта запись, то исчезает...!?
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

Andrey_A писал(а):Есть ли способ, чтобы Windows ВСЕГДА ассоциировал переменную
Да. Добавить её явным образом к переменным окружения (Панель управления — Система). С одним исключением: если запустить Тотал из другого каталога, то он переопределит эту переменную в своём окружении и в окружении всех дочерних процессов, и для них, соответственно, значение переменной будет не c:\Total Commander, а другим.
Andrey_A писал(а):При экспериментах в командной строке то появляется эта запись, то исчезает...!?
Самопроизвольно появляться и исчезать она не может. Просто, как я уже сказал, переменная задаётся самим Тоталом в своём личном окружении. Если запускаешь cmd из Тотала, то переменная отнаследуется, если из винды, то не отнаследуется. Всё просто.
Почему же, ё-моё, ты нигде не пишешь "ё"?
Аватара пользователя
Andrey_A
Сообщения: 394
Зарегистрирован: Пт апр 10, 2009 06:28
Откуда: Сочи
Контактная информация:

Сообщение Andrey_A »

Да. Добавить её явным образом к переменным окружения (Панель управления — Система)
А можно поподробнее об этом, т.е. куда и где добавляют переменные... а может быть через реестр?
Аватара пользователя
Rodny
Сообщения: 949
Зарегистрирован: Ср янв 24, 2007 00:59
Откуда: Могилёв, Беларусь

Сообщение Rodny »

Andrey_A
Про реестр не скажу, подробнее вот:
Изображение
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

А если задействовать скрипт, ассоциирующий файлы с программами, расположенными в среде %COMMANDER_PATH%.

Скрипт, имея в наличии конкретные:

- список расширений:
669,aac,aiff,amf,au,avr,caf,cda,far,flac,htk,iff,it,itz,kar,m4a,mat,mdz,mid,
midi,miz,mod,mp1,mp2,mp3,mtm,nst,ogg,okt,paf,ptm,pvf,raw,rf64,rmi,
s3m,s3z,sd2,sds,sf,stm,stz,ult,vlb,voc,w64,wav,wma,wve,xi,xm,xmz

- путь к программе: %COMMANDER_PATH%\SOFT\Winamp\winamp.exe

- значок: %COMMANDER_PATH%\SOFT\Winamp\winamp.exe,0

создает рег-файл, определив, меняет в нем пути с %COMMANDER_PATH% на полные и отправляет с подтверждением в реестр.

Собственно, реквест :roll:.

[mod="Avada"]Список расширений, в реальности занимаюший одну строку, разбил на три. Исключительно для удобства чтения.[/mod]
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Ответить