В Windows, какие расширения файлов обозначают исполняемый файл?
Обозначать что?
Я знаю, что этот вопрос сейчас звучит немного запутанно, но вопрос имеет значение. Когда я объясню, почему это важно, вопрос станет более понятным.
Хотя ответ Кена Уайта о переменной PATHEXT (в «среде» командной строки) является хорошим и кратким ответом, и этот ответ может хорошо сработать для вас, ответ неполон. Неполная причина в том, что правильный ответ отличается в зависимости от того, что вы пытаетесь сделать.
Например, вы можете попробовать:
- Запустите программу из «традиционной командной строки» («CMD»), введя полное имя файла
- Запустите программу из «традиционной командной строки» («CMD»), введя базовое имя файла, но оставив его расширение
- Используйте команду «start», встроенную в «традиционную командную строку» («CMD»)
- Запустите программу из PowerShell
- Запустите программу из пункта меню «Выполнить», который находится в меню «Пуск».
- Запустите программу из Проводника, дважды щелкнув значок, связанный с файлом, заканчивающимся расширением.
- Скажите Microsoft Internet Explorer, чтобы открыть загруженный файл
- Запустите программу, используя функцию из Microsoft Windows API. (Это то, что конечные пользователи обычно не делают, но программисты могут сделать это, и поэтому информация имеет к ним отношение.)
Некоторые из этих методов запуска программ могут использовать разные методы определения того, какие расширения файлов могут поддерживаться. В частности, использование CMD может отличаться от меню «Выполнить».
Например, загадочный блог Уэса: Настройка Windows Run Command ... отмечает, что проверяются различные места, включая раздел реестра.
Ответ также может зависеть от того, какая версия Microsoft Windows используется. В Windows 10 я просто набрал имя zip-файла в командной строке, и он открыл Windows Explorer. Кажется, я помню, что не работал в Windows XP (хотя в Windows XP я мог набрать «start filename.zip» и получить такой же эффект). Так что либо моя память неисправна, либо Microsoft пытается улучшить новые версии Windows. (Надеюсь, для меня последняя.)
В традиционной командной строке Windows 10 (с запуском «CMD»), когда я иду в местоположение (используя команду «CD») zip-файла и набираю «filename.zip», файл открывается. Когда я иду в это место и набираю «имя файла» (без расширения «.zip»), то Windows не находит файл. Однако если я запускаю « ECHO %PATHEXT%
», а затем « SET PATHEXT=%PATHEXT%;.ZIP
» (а затем ECHO %PATHEXT%
снова « », чтобы убедиться, что у меня был нужный эффект), я могу ввести «имя файла», и в командной строке будет найден файл .ZIP. Итак, это эффект переменной% PATHEXT%.
Вы можете увидеть другой список расширений, запустив ASSOC
команду. Например, выполнение этой команды показывает несколько строк вывода, включая следующее (в моей системе) - " .zip=CompressedFolder
". Затем я могу увидеть, что это работает, набрав " FTYPE | FIND /I "CompressedFolder"
". (Это предназначено для традиционной командной строки. PowerShell не понравятся эти неэкранированные кавычки.) (Если вы просто наберете " FTYPE
" без остальной части этой командной строки, вы увидите намного больше вывода о других расширениях.)
Если я наберу " ASSOC | FIND /C "."
" на моем компьютере с Windows 10, то обнаружу, что у меня 339 строк вывода, когда я проверяю связи файлов таким образом.
MS KB 162059 посвящена настройке, как Internet Explorer открывает документы Office.
Таким образом, запрос списка исполняемых файлов по умолчанию слишком расплывчатый. Различные компоненты Microsoft Windows могут использовать разные ресурсы, поэтому вопрос должен быть более конкретным для точного ответа.
В вопросе упоминалось использование Проводника для двойного щелчка по значку. Чтобы увидеть список используемых для этого исполняемых файлов, я думаю, вы захотите проверить реестр. Вы можете запустить это из командной строки:
reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts
(Я не буду перечислять их здесь. На моем компьютере с Windows 10 их 286).
Это перечисляет расширения. Чтобы увидеть больше информации, включая информацию о расширениях:
reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts /s
Итак, как вы можете видеть, этот, казалось бы, невинный вопрос на самом деле может быть довольно сложной темой. Я полагаю, что я обосновал, почему вопрос должен быть достаточно конкретным, чтобы иметь возможность получить полный ответ, в котором полностью рассматривается, как один компонент Windows может определять расширения имени файла. В ореховой оболочке для Windows нет только одного единственного ответа, поскольку в Windows есть несколько компонентов, которые ведут себя по-разному. Надеюсь, я начал показывать это и указал на некоторые дополнительные ресурсы, которые показывают соответствующую информацию.