Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как настроить ассоциацию файлов Microsoft Edge для открытия файлов .htm?

Автор вопроса: c00000fdОтветов: 1

В своем программном обеспечении я использую ShellExecuteEx a>, чтобы открыть отчет, представленный в виде локального .htm файла. Иногда в некоторых системах конечных пользователей нет файловой ассоциации по умолчанию для файлов .htm.

Чтобы настроить такую ​​ассоциацию файлов в системе до Windows 10, я бы установил следующие разделы реестра для использования IE:

Key: HKEY_CURRENT_USER\Software\Classes\htm.file\Shell\open\Command
REG_SZ name: ""
REG_SZ value: "C:\Program Files (x86)\Internet Explorer\iexplore.exe" "%1"

Key: HKEY_CURRENT_USER\Software\Classes\.htm
REG_SZ name: ""
REG_SZ value: htm.file

Key: HKEY_CURRENT_USER\Software\Classes\.htm
REG_SZ name: PerceivedType
REG_SZ value: Document

Затем я уведомляю Windows Explorer об изменении:

SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL);

Это работает хорошо, но как сделать то же самое для Microsoft Edge в Windows 10?

PS.:
Я не хочу использовать IE там, потому что он всегда показывает дополнительную вкладку с клячкой для переключения на Edge, что очень сбивает с толку моих конечных пользователей.

  • Вместо этого вы можете запустить Edge с html-файлом в качестве параметра. bolov 17.10.2018
  • Возможно, ваше программное обеспечение изменяет ассоциации пользователей, это плохая идея. Вероятно, ваша программа нанесет вред некоторым пользователям. Я был бы склонен обнаружить сбой ShellExecuteEx, а затем напрямую открыть Edge. Конечно, Edge может и не быть. David Heffernan 17.10.2018
  • Windows 10 не позволяет приложениям произвольно изменять ассоциации файлов. Это должно быть сделано пользователем через настройки. Если вам нужны доказательства, установите Google Chrome в системе Windows 10, где он не был установлен ранее, и сообщите установщику, что хотите установить Chrome в качестве браузера по умолчанию; при этом он открывает соответствующую страницу настроек, чтобы вы могли сделать это самостоятельно. Кроме того, я только что участвовал в ручной миграции более 25 систем с Windows 7 на Windows 10 Корпоративная, включая несколько новых установок, и ни в одной из них не. Ken White 17.10.2018
  • @KenWhite: надеюсь, ты прав. Потому что очень неприятно иметь дело с отсутствующими ассоциациями файлов для основных расширений, таких как .htm. Хотя, обратите внимание, я не говорю об изменении веб-браузера по умолчанию. Речь идет об открытии локального файла с локальным путем, который имеет расширение .htm. PS. Возвращаясь к тому, что вы описали, я думаю, что антимонопольный иск в конце 90-х ничему не научил MS. ха. c00000fd 17.10.2018
  • Windows 10 не позволяет приложениям произвольно изменять ассоциации файлов. На самом деле, Рэймонд Чен вчера написал об этом в блоге: Почему Windows просит меня выбрать программу для открытия файла, даже если я уже указал, какую программу я хочу использовать для открытия файла? Remy Lebeau 17.10.2018
  • @DavidHeffernan: Хотел бы я, чтобы это было так просто. ShellExecute - комок боли. Он может возвращать, а иногда и не возвращать код ошибки. Я даже не могу его воспроизвести сообщение об ошибке, которое я получил в отчете. Кроме того, если нет никаких ассоциаций, он возвращает успех и вместо этого показывает это всплывающее окно, и нет никакого способа зная, что пользователь выбрал или не выбрал там из моего приложения. Или, что еще хуже, это может быть на Win7. c00000fd 17.10.2018

windows-10microsoft-edgewinapiwindows-shell

Ответы

Ответ 1 · Castorix

В Windows 10 это делается с помощью IApplicationAssociationRegistrationInternal ("2a848e25-d688-4aa3-8e55-0c16cb3a2dfb").

создано с помощью SHCreateAssociationRegistration

Установите "AppX4hxtad77fbk3jkkeerkrm0ze94wjf3s9" для Microsoft Edge ProgId.

(проверено на Windows 10-1803, 17134.820)

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы