Страница 1 из 1

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

Добавлено: Чт ноя 12, 2009 02:40
Andrey_A
Что нужно внести в реестр, чтобы тот или иной файл открывался нужной программой в проводнике?
В тотале я настроил ассоциации, но в проводнике проблема. У некоторых любителей тотала, как и у меня, есть полностью Портабельский, настроеный тотал.
Я, к примеру после установки системы просто копирую тотал и работаю, все файлы запускаются тем чем надо через тотал, но хотелоь, чтобы открыв проводник происходило тоже самое.
Я пытался сделать .reg файл, но у меня не получается... помогите чем можете...
И ещё в эту же тему, хотелось, чтобы значки в проводнике, отображались как мне надо (для этого тоже можно наверное создать .reg файл, один раз запустил и всё), а то получается в тотале привык к одному, открываешь проводник, а там ужас...

Добавлено: Чт ноя 12, 2009 09:46
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 чего-то дикого наворотила с этими ассоциациями, так что там я не экспериментировал, и вышеприведённый вариант может не сработать.

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

Добавлено: Чт ноя 12, 2009 15:47
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\""
и файл открывается, и значок нужный
только вот гложет, корректно ли это, или всё правильно

Добавлено: Чт ноя 12, 2009 18:42
CaptainFlint
Andrey_A
Совершенно правильно. В реестре должны быть созданы два поддерева, первое из которых (HKCR\.txt) тривиально и состоит лишь из расширения файла и имени типа, а второе поддерево (HKCR\txtfile) полностью определяет этот тип, задавая и значок, и программу обработки.

Добавлено: Чт ноя 12, 2009 21:38
Andrey_A
Спасибо CaptainFlint!

Добавлено: Вс ноя 15, 2009 00:51
Andrey_A
Кстати, почвился ещё вопросик по теме:
можно ли в реестр посылать переменную %COMMANDER_PATH%
или реестр её не распознает?

Добавлено: Вс ноя 15, 2009 10:36
Avada
Andrey_A писал(а):или реестр её не распознает?
Конечно, нет.

Добавлено: Вс ноя 15, 2009 11:56
CaptainFlint
Andrey_A писал(а):можно ли в реестр посылать переменную %COMMANDER_PATH%
или реестр её не распознает?
Реестру-то по барабану, чего хранить. Вопрос правильно ставить так, распознает ли эту переменную программа, которая считает этот ключ. Но проблема в том, что переменная %COMMANDER_PATH% определена локально лишь для самого Тотала и порождённых им процессов, а Проводник к таковым не относится, так что этой переменной он попросту не увидит. И даже если явным образом добавить эту переменную глобально в систему, не факт что он вообще станет их разворачивать, это надо экспериментировать.

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

Добавлено: Ср ноя 18, 2009 13:57
CaptainFlint
Andrey_A писал(а):Есть ли способ, чтобы Windows ВСЕГДА ассоциировал переменную
Да. Добавить её явным образом к переменным окружения (Панель управления — Система). С одним исключением: если запустить Тотал из другого каталога, то он переопределит эту переменную в своём окружении и в окружении всех дочерних процессов, и для них, соответственно, значение переменной будет не c:\Total Commander, а другим.
Andrey_A писал(а):При экспериментах в командной строке то появляется эта запись, то исчезает...!?
Самопроизвольно появляться и исчезать она не может. Просто, как я уже сказал, переменная задаётся самим Тоталом в своём личном окружении. Если запускаешь cmd из Тотала, то переменная отнаследуется, если из винды, то не отнаследуется. Всё просто.

Добавлено: Чт ноя 19, 2009 01:05
Andrey_A
Да. Добавить её явным образом к переменным окружения (Панель управления — Система)
А можно поподробнее об этом, т.е. куда и где добавляют переменные... а может быть через реестр?

Добавлено: Чт ноя 19, 2009 01:37
Rodny
Andrey_A
Про реестр не скажу, подробнее вот:
Изображение

Добавлено: Ср июн 30, 2010 11:24
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]