Как связать тип файла, который будет открыт с параметрами командной строки?

Мне нужно открыть файлы типа .unitypackage используя команду Unity.exe -openfile "%1", но если я "щелкну правой кнопкой мыши -> открыть с помощью", это позволит мне выбрать только программу, а не параметры командной строки.

Что я могу сделать, чтобы исправить это на Windows 8.1?

2 ответа

Решение

В Windows 8 существует несколько различных вариантов установки файловой связи. К сожалению, встроенные методы не поддерживают такие причудливые аргументы, как пользовательские аргументы командной строки.

  • Вы можете щелкнуть правой кнопкой мыши файл и выбрать " Открыть с помощью", а затем " Выбрать программу по умолчанию", чтобы найти программу. Скорее всего, вам нужно будет вручную отредактировать реестр, чтобы добавить -openfile переключатель.

  • Вы можете установить ассоциации файлов с помощью приложения Set Default Programs; снова вам нужно будет вручную изменить реестр, чтобы включить переключатель.

    Если вы идете по этому пути, то вы можете сделать это следующим образом:

    1. Выберите Настройки
    2. Тип associate
    3. Выберите Изменить тип файла, связанный с расширением файла.
    4. Выберите расширение файла
    5. Нажмите на [Change Program] кнопка

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

  • Используйте стороннюю программу, такую ​​как FileTypesMan, для создания ассоциации файлов. С FileTypesMan вы можете сделать это так:

    1. Изменить → Новое расширение файла (или Ctrl + T)
    2. Заполните диалоговое окно, чтобы создать расширение .unitypackage: Снимок экрана: диалоговое окно
    3. Действия → Новое действие (или Ctrl + N)
    4. Заполните диалоговое окно: Снимок экрана: диалоговое окно
  • Вручную создайте записи реестра для ассоциации. Я взял на себя смелость взяться за тебя. Просто скопируйте его в простой текстовый файл, сохраните его с расширением .reg не .reg.txt (Вы можете сделать это, выбрав All Files (*.*) в раскрывающемся списке типов файлов в диалоговом окне " Сохранить как "). Затем запустите сохраненный сценарий реестра и подтвердите слияние. Вы можете использовать жестко запрограммированные пути (которые вы можете редактировать при необходимости в текстовом редакторе) или использовать переменные, раскомментировав указанные строки (вам нужно будет отредактировать их в Regedit, так как они закодированы как шестнадцатеричные).

    REGEDIT4
    
    [HKEY_CLASSES_ROOT\.unitypackage]
    @="UnityPackage"
    
    [HKEY_CLASSES_ROOT\UnityPackage]
    @="Unity Package"
    
    [HKEY_CLASSES_ROOT\UnityPackage\Shell\DefaultIcon]
    @="\"C:\\Program Files (x86)\\Unity\\Editor\\Unity.exe\",1"
    ; Uncomment the line below by removing the leading semi-colon to use an environment variable ("%ProgramFiles(x86)%\Unity\Editor\Unity.exe",1) instead of the hard-coded path above.
    ;@=hex(2):22,25,50,72,6f,67,72,61,6d,46,69,6c,65,73,28,78,38,36,29,25,5c,55,6e,69,74,79,5c,45,64,69,74,6f,72,5c,55,6e,69,74,79,2e,65,78,65,22,2c,31,00
    
    [HKEY_CLASSES_ROOT\UnityPackage\Shell\Open]
    @="&Open"
    
    [HKEY_CLASSES_ROOT\UnityPackage\Shell\Open\Command]
    @="\"C:\\Program Files (x86)\\Unity\\Editor\\Unity.exe\" -openfile \"%1\""
    ; Uncomment the line below by removing the leading semi-colon to use an environment variable ("%ProgramFiles(x86)%\Unity\Editor\Unity.exe") instead of the hard-coded path above.
    ;@=hex(2):22,25,50,72,6f,67,72,61,6d,46,69,6c,65,73,28,78,38,36,29,25,5c,55,6e,69,74,79,5c,45,64,69,74,6f,72,5c,55,6e,69,74,79,2e,65,78,65,22,20,2d,6f,70,65,6e,66,69,6c,65,20,22,25,31,22,00
    

(Примечание: Unity не установлен на моем текущем компьютере, поэтому я не могу проверить значки, включенные в двоичный файл, поэтому вам может потребоваться изменить ,1 в настройках DefaultIcon в скрипте реестра и диалогах на что то более подходящее вроде ,3 или же ,10 или что-то, если он вообще не включает в себя значки документов, то либо используйте ,0 или вообще уберите эту часть.)

В Windows 7 они регистрируют ключ HKEY_CLASSES_ROOT \ txtfile \ shell \ print \ command, содержащий "% SystemRoot% \ system32 \ NOTEPAD.EXE / p% 1". Если вы найдете ключ для своего типа файла, возможно, изменив его на Unity.exe -openfile% 1 будет работать даже в Windows 8.1

Другие вопросы по тегам