Как я заставляю ftype и помощника соответствовать Windows Explorer?

Я изменил ассоциацию для использования после запуска a .py файл, через Windows Explorer:

  1. Инструменты-> Папки-> Типы файлов.
  2. Затем обзор к .py.
  3. Измените ассоциацию на Wordpad.

Теперь, когда я ввожу имя py файла в командной строке, Wordpad открывает его.

Но assoc и ftype в командной строке все еще возвращают следующее:

C:\> assoc .py
.py = Python.File

C:\> ftype Python.File
Python.File = "C:\Program\Python27\python.exe" "%1" %*

Каким образом ассоциация работает, но assoc и ftype не знают о нем?

Я действительно перезапускал подсказку.


Больше информации из моего реестра:

HKEY_CLASSES_ROOT\.py
= Python.File

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py\Application
= wordpad.exe

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py\OpenWithProgids\Python.File
= 

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.py\(Standard)
= Python.File

Больше реестра:

HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command\(Standard)
= "C:\Program\Python27\python.exe" "%1" %*`

Я предполагаю, что это - то, что обнаруживается в ftype Python.File. Но это, кажется, не привыкает.


(Я делаю это для тестирования, таким образом, я могу в конечном счете выбрать свою версию по умолчанию Python легко).

20
задан 26.02.2011, 01:37

2 ответа

Беспорядок здесь между тем, что используется для открытия файла и что используется для петляния. Ключ реестра

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py\Application
\.py\Application

то, что говорит окна, как открыть файл. Двойной щелчок по файлу откроет файл с этим приложением.

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

Возврат ассоциации к C:\Program\Python27\python.exe или редактирование ключа реестра для указания на Python должны возвратить его тому, как это раньше было, где окна предполагают, что Вы хотите открыть файл с программой по умолчанию, которая является python.exe, который затем запускает программу.

1
ответ дан 07.12.2019, 10:13

Проводник (оболочка Windows) всегда дает предпочтение приложению, указанному в ключе поставщика, который указан под значением по умолчанию расширения. (В Вашем случае .py расширение, Python.File ключ поставщика.)

ftype и assoc может считать их значения из других областей, я не знаю наверняка. Это, как Проводник делает это.

Править: Эта страница может представлять интерес для Вас: MSDN - Типы файлов

Особенно это:

Поддерево HKEY_CLASSES_ROOT является представлением, сформированным путем слияния HKEY_CURRENT_USER\Software\Classes и HKEY_LOCAL_MACHINE\Software\Classes.

Возможно, это - то, где различные части столкновения Windows, если существует ассоциация "по умолчанию" в HKEY_LOCAL_MACHINE, который становится переопределенным тем, который Вы определили на своей учетной записи (который будет затем сохранен в HKEY_CURRENT_USER).

3
ответ дан 07.12.2019, 10:13

В зависимости от того, как Вы звоните, файл будет зависеть от того, какой глагол используется. Глагол, который Вы используете, определяет то, что Windows сделает с ним. Стандартные глаголы Открыты, Редактирование, Печать, Игра и Предварительный просмотр. Однако возможно создать Ваши собственные глаголы. Обычно добавленный глагол является Открыть семейством With (включая OpenWithProgIDs), которые добавляют, что мало подменю контекста под "Открывает With", чтобы дать Вам возможные альтернативы. Если Вы установите Paint.NET, например, и затем щелкнете правой кнопкой по .jpg файлу, то Вы будете видеть, что Открыть запись With расширяется до подменю, которое перечисляет Paint.NET, Краску, и независимо от того, что Microsoft назвала средство просмотра изображения для Вашей версии Windows.

Кроме того, какой Неподписанный сказанный Labs Кода очень важен. При отладке классов необходимо посмотреть на HKLM\Software\Classes\ и HKCU\Software\Classes. HKCR очень полезно для запросов системы, но не так хорош для обнаружения, почему это неправильно себя ведет.

Я сделал немного тестирования в своей системе Windows 7 с procmon.exe, и assoc и ftype команды, кажется, пытаются записать непосредственно в HKCR, и система, по-видимому, интерпретирует это как пишущий в HKLM. Мой текущий счет является членом группы admin, но контроль учётных записей включен. Я получил доступ запрещен, когда я попробовал assoc .mytest=MyTest.File.

Странно, если я создаю ассоциацию путем щелчка правой кнопкой по названному файлу test.mytest и соединение его с Блокнотом, ни одним assoc ни ftype видит эту ассоциацию. Ассоциация находится определенно там в HKCU и HKCR. Я не попытался перезагрузить, как бы то ни было.

9
ответ дан 07.12.2019, 10:13

я не знаю, как может Вы делать соответствие между реестром и что появляется в ftype и помощнике мне и как я вижу Вам также, ftype и команда помощника бесполезны. Что я делаю для изменения, программа по умолчанию для данного расширения программным способом (по сравнению со стандартным и более простым способом использовать проводник), изменяют этот ключ реестра

HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.TheExtensionYouWantToModify\UserChoice\ProgID

Например, если я хочу открыть свой mp3s с mplayer, я вставил

HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.mp3\UserChoice\ProgID 

значение "mplayerc.mp3"

Что является сложностью выполнения этого: сначала необходимо знать, valids ProgIDs (используйте ftype), и второй, Вам нужен доступ для записи к тому улью. Windows автоматически поместил отклонять ACL для ключа UserChoice, таким образом, необходимо найти способ удалить, которые отклоняют правило для получения доступа для записи. Я использую программу subinacl, что Вы могли загрузить отсюда http://www.microsoft.com/downloads/en/details.aspx?FamilyID=e8ba3e56-d8fe-4a91-93cf-ed6985e3927b&displaylang=en для изменения полномочий. Также Вы могли использовать стороннюю программу SetACL. Я рекомендую первое, потому что синтаксис намного более прост.

5
ответ дан 07.12.2019, 10:13

Теги

Похожие вопросы