Я изменил ассоциацию для использования после запуска a .py
файл, через Windows Explorer:
.py
.Теперь, когда я ввожу имя 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 легко).
Беспорядок здесь между тем, что используется для открытия файла и что используется для петляния. Ключ реестра
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py\Application
\.py\Application
то, что говорит окна, как открыть файл. Двойной щелчок по файлу откроет файл с этим приложением.
Поскольку файл не является исполняемым файлом, командная строка предполагает, что Вы хотите открыть файл с приложением по умолчанию, как будто Вы дважды щелкнули по нему.
Возврат ассоциации к C:\Program\Python27\python.exe или редактирование ключа реестра для указания на Python должны возвратить его тому, как это раньше было, где окна предполагают, что Вы хотите открыть файл с программой по умолчанию, которая является python.exe, который затем запускает программу.
Проводник (оболочка 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).
В зависимости от того, как Вы звоните, файл будет зависеть от того, какой глагол используется. Глагол, который Вы используете, определяет то, что 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
. Я не попытался перезагрузить, как бы то ни было.
я не знаю, как может Вы делать соответствие между реестром и что появляется в 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. Я рекомендую первое, потому что синтаксис намного более прост.