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以正常有效地工作,那么就会让用户误解它.捕获异常,并弹出通知告诉他们有关问题的信息,然后在该通知中为他们提供一个选项,可以在备用编辑器(如记事本)中打开它.
这一切都归结为良好的用户体验 – 告诉用户,但这样做是为了让你通过提供继续选项来赋予他们权力,而不是只是阻止他们的方式并在发生类似这样的小问题时停止.
编辑:做你正在做的事情 – 不要认为他们有Excel,他们可能有一些其他的浏览器/编辑器,如OpenOffice.无论注册到csv,让它做到这一点.不要试图自己检查文件关联,你的应用程序可能没有(可能不会)有足够的权限在注册表中进行挖掘.
您还需要检查其他明显的异常原因,例如用户无权打开目标文件,这可能是由于对文件夹或文件本身的限制.也许该文件被锁定,因为它仍然在另一个进程中打开. Process.Start失败的原因有很多.
捕获异常,如果原因是没有与该文件关联的应用程序,则为它们提供选项.如果用户选择使用记事本,请尝试在记事本中打开该文件,但仍要注意异常.记事本是一个不错的选择,它不会锁定文件,但它仍然受文件夹/文件ACL的限制.