Как работает Windows "Открыть с"?

У меня создалось впечатление, что при двойном щелчке файла (или выберите "Открыть с" в меню правой кнопки мыши), Windows просто вызывает приложение с именем файла в качестве параметра. Что-то вроде этого:

C: \ > App.exe file.abc

Однако я просто дважды щелкнул файл .xls, а затем проверил PEB экземпляра Excel, который возник. К моему удивлению, в командной строке не было имени файла в качестве параметра.

Итак, это заставило меня задуматься. Каков именно механизм, который использует Windows для открытия файла соответствующим приложением? Есть ли специальный API, который должно раскрывать каждое приложение, поддерживающее такое средство?

Ответ 1

Как Windows передает файл в программу, оно варьируется от одного приложения к другому. Это поведение контролируется реестром.

В случае Excel они используют то, что называется DDE для этой цели. Вот почему вы ничего не видите в командной строке.

Ответ 2

имя файла не всегда передается как параметр в фактическом.

у вас есть с собой список программ, связанных с определенным типом файла в реестре ур. система проверяет расширение файла, а затем запускает процесс, связанный с., но всегда передавая его как параметр, не является истинным. Операционная система имеет собственную архитектуру для вызова программы из своей сборки.