Ни одно приложение не связано с указанным исключением файла.

StackOverflow https://stackoverflow.com/questions/2634198

Вопрос

UnhandledException: System.ComponentModel.Win32Exception: No application is associated with the specified file for this operation
   at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
   at System.Diagnostics.Process.Start()
   at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
   at System.Diagnostics.Process.Start(String fileName)

Всем привет,

Я получаю следующее исключение на одном компьютере, на котором я тестирую, при попытке использовать Process.Start для открытия файла .csv.Я думаю, это происходит потому, что для файлов .csv в этом поле не установлена ​​ассоциация файлов.

Итак, как бы вы могли избежать этой ситуации?

Принудительно открыть Process.Start в Блокноте?- В идеале его следует открыть в Excel, но что делать, если Excel не существует на этом компьютере?

Спасибо

Это было полезно?

Решение

Если правильность и эффективность вашего приложения зависит от установленного Excel, сообщите об этом пользователю.Перехватите исключение и отобразите всплывающее уведомление, чтобы сообщить им о проблеме, но затем в этом уведомлении дайте им возможность открыть его в альтернативном редакторе, например в блокноте.

Все это сводится к хорошему UX — скажите об этом пользователю, но делайте это так, чтобы вы давали ему возможность продолжить работу, а не просто мешали ему и останавливались, когда возникает такая небольшая проблема.

Редактировать: Делайте именно то, что делаете - не думайте, что у них есть Excel, у них может быть другой просмотрщик/редактор, например OpenOffice.Что бы ни было зарегистрировано в csv, пусть оно делает свое дело.Не пытайтесь самостоятельно проверить ассоциацию файлов, ваше приложение может не иметь (вероятно, не будет) достаточных привилегий, чтобы копаться в реестре.

Вам также необходимо проверить другие очевидные причины исключений, например, у пользователя нет прав на открытие целевого файла, это может быть связано с ограничениями, наложенными на папку или сам файл.Возможно, файл заблокирован, поскольку он все еще открыт в другом процессе.Существует множество причин, по которым ваш Process.Start может выйти из строя.

Перехватите исключение и, если причиной не является приложение, связанное с файлом, предложите им эту возможность.Если пользователь решит использовать Блокнот, попробуйте открыть файл в Блокноте, но при этом следите за исключениями.Блокнот — хороший вариант, он не блокирует файл, но на него по-прежнему распространяются списки ACL для папок/файлов.

Другие советы

Если вы установите ProcessStartInfo.ErrorDialog = true, пользователю будет предложено стандартное диалоговое окно Windows:видеть здесь

Прежде чем выполнять процесс.start, прочтите реестр и проверьте, существует ли программа, связанная с расширением файла.Заглянуть HKEY_CLASSES_ROOT\.csv чтобы узнать, кто зарегистрирован для обработки этого расширения файла, если таковое имеется.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top