Как я могу программно проверить файл, что существует файловая ассоциация, прежде чем пытаться его обработать.Start ()? - PullRequest
8 голосов
/ 22 мая 2011

Мое приложение .Net Windows Forms генерирует отчет в формате PDF, который я хочу показать пользователю.

Вместо того, чтобы просто предполагать, что на клиентском ПК установлена ​​программа просмотра PDF, и слепо выбрасывать PDF в операционной системе.Чтобы открыть, есть ли способ заранее проверить список сопоставлений файлов на клиенте , а затем показать ", вам необходимо установить приложение для просмотра PDF - вот несколько советов .."диалоговое окно, если PDF не зарегистрированный тип?

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

Мне бы хотелось, чтобы решение работало на Windows XP и более поздних версиях (WinXP, Vista, Win7).

Спасибо за помощь

Ответы [ 2 ]

9 голосов
/ 22 мая 2011

Лучше не использовать реестр напрямую, а вместо этого полагаться на Windows API.Вот ссылка на SO, которая дает решение .NET: Как получить информацию о типе файла в зависимости от расширения?(не MIME) в c #

0 голосов
/ 22 мая 2011

Я обнаружил, что в реестре есть ключ .pdf, возможно, он может вам помочь:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.pdf]
"Content Type"="application/pdf"
@="AcroExch.Document"

[HKEY_CLASSES_ROOT\.pdf\OpenWithList]
@=""

[HKEY_CLASSES_ROOT\.pdf\OpenWithList\AcroRd32.exe]
@=""

[HKEY_CLASSES_ROOT\.pdf\ShellEx]

[HKEY_CLASSES_ROOT\.pdf\ShellEx\{8895b1c6-b41f-4c1c-a562-0d564250836f}]
@="{DC6EFB56-9CFA-464D-8880-44885D7DC193}"
...