Как связать расширение файла с программой, не делая ее программой по умолчанию - PullRequest
7 голосов
/ 02 июня 2010

Я развернул небольшой инструмент преобразования на некоторых системах и хочу, чтобы пользователи могли запускать его из меню Open with, вызываемого правой кнопкой мыши. Но я не хочу менять программы по умолчанию, связанные с этим типом файлов.

Легко связать расширение / тип файла с программой, но как это сделать (программно, конечно), не изменяя программу по умолчанию?

Ответы [ 5 ]

5 голосов
/ 06 июня 2010

У меня сработали настройки следующих клавиш:

key HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/App Paths/<progname>: "" = <appPath>

key HKCR/Applications/<progname>/SupportedTypes: <fileExt> = ""
key HKCR/<fileExt>: "" = <progID>

key HKCR/<progID>/OpenWithList/<progName>
key HKCR/<fileExt>/OpenWithList/<progName>
key HKCR/SystemFileAssociations/<fileExt>/OpenWithList/<progName>

delete key and subkey at HKCU/SOFTWARE/Microsoft/Windows/CurrentVersion/Explorer/fileExts/<fileExt>
1 голос
/ 02 июня 2010

Вы можете добавить сценарии в контекстное меню (ниже Открыть с помощью), добавив его в реестр Windows:

  1. Открыть regedit
  2. Перейти HKEY_CLASSES_ROOT\your_class\Shell
  3. Добавить новый ключ и дать ему имя
  4. Отредактируйте значение (Default) этой клавиши и вставьте текст, который вы хотите отобразить, в контекстное меню
  5. Добавьте новый ключ с именем Command под вновь созданным ключом
  6. Отредактируйте значение (Default) этого ключа и вставьте команду, которую хотите выполнить
  7. Наслаждайтесь!
0 голосов
/ 05 июля 2013

Я добился правильного объединения файлов с помощью этих команд cmd. (просто пример):

REG ADD "HKEY_CLASSES_ROOT\Applications\notepad++.exe\shell\open\command" /v @ /t REG_SZ /d "\"C:\\Program Files\\Noteepad++\\notepad++.exe\" \"%1\"" /f
REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt" /v "Application" /t REG_SZ /d "notepad++.exe" /f
REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\OpenWithList" /v "g" /t REG_SZ /d "notepad++.exe" /f

assoc .txt=MyCustomType
ftype MyCustomType="C:\Program Files\Noteepad++\notepad++.exe" "%1"

(лучше поместить их в файл .bat)

0 голосов
/ 02 июня 2010

Вот рабочий пример для XP, добавляющей опцию командной строки в папки. Создать файл .reg

Редактор реестра Windows, версия 5.00

[HKEY_CLASSES_ROOT \ Directory \ shell \ Command Prompt]

[HKEY_CLASSES_ROOT \ Directory \ shell \ Command Prompt \ command] @ = "cmd.exe / k cd \"% 1 \ ""

0 голосов
/ 02 июня 2010

В диалоговом окне Windows «Типы файлов» вы можете нажать «Дополнительно» в вашем типе файла и создать собственное действие, привязанное к вашему приложению.

Возможно, вы также можете найти способ сделать это программным способом или, по крайней мере, создать файл .REG с эквивалентными параметрами реестра.

...