没有应用程序与指定的文件相关的例外
-
26-09-2019 - |
题
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,让它做的事情。不要试图去检查文件关联你自己,你的应用程序可能不会(可能不会)有足够的权限去注册表fossicking左右。
您还需要检查的例外等显而易见的原因,喜欢的用户没有权限打开目标文件,这可能是由于放在文件夹或文件本身的限制。可能是文件被锁定,因为它仍然在另一个进程打开。有一堆的理由,为什么你的Process.Start可能会失败。
捕捉该异常,并且如果原因是没有与该文件相关联的应用程序然后为他们提供的选项。如果用户选择使用记事本,试图用记事本打开该文件,但仍注意例外。记事本是一个不错的选择,它不会保持在文件上的锁,但它仍然是受制于文件夹/文件访问控制列表。
其他提示
如果设置了ProcessStartInfo.ErrorDialog = true,则用户将提示用一个标准的窗口对话框:在这里看到 一>
读取注册表,看看是否有你做的Process.Start之前与文件扩展名关联的程序。看在HKEY_CLASSES_ROOT\.csv
,看看谁被注册来处理文件扩展名,如果有的话。