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

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)

Привет все,

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

Таким образом, как Вы избежали бы этой ситуации?

Вызовите Процесс. Начать открываться в Блокноте? - Идеально это должно быть открыто в Excel, но что Вы делаете, если Excel затем не существует на том компьютере?

Спасибо

6
задан baron 14 April 2010 в 00:51
поделиться

2 ответа

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

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

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

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

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

4
ответ дан 9 December 2019 в 22:31
поделиться

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

2
ответ дан 9 December 2019 в 22:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: