bar*_*ron 6 c# notepad exception-handling win32exception process.start
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)
Run Code Online (Sandbox Code Playgroud)
嗨,大家好,
我在尝试使用Process.Start打开.csv文件时正在测试的一台计算机上遇到以下异常.我认为这是因为没有为此框中的.csv文件设置文件关联.
那你怎么能避免这种情况呢?
强制Process.Start在记事本中打开? - 理想情况下它应该在excel中打开,但如果excel在那台计算机上不存在,你会怎么做?
谢谢
如果您的应用程序依赖于 Excel 的安装才能正常有效地工作,那么请向用户发出 bug。捕获异常,然后弹出通知告诉他们问题,然后在该通知中为他们提供在记事本等替代编辑器中打开它的选项。
这一切都归结为良好的用户体验——告诉用户,但要通过提供继续的选项来授权他们,而不是仅仅妨碍他们并在发生类似的小问题时停止。
编辑:准确地做你正在做的事情 - 不要假设他们有 Excel,他们可能有其他一些查看器/编辑器,例如 OpenOffice。无论注册到 csv 中什么,让它做它该做的事。不要尝试自己去检查文件关联,您的应用程序可能没有(可能不会)有足够的权限在注册表中进行搜索。
您还需要检查其他明显的异常原因,例如用户无权打开目标文件,这可能是由于对文件夹或文件本身的限制造成的。也许文件被锁定是因为它仍在另一个进程中打开。Process.Start 失败的原因有很多。
捕获异常,如果原因是没有与该文件关联的应用程序,则为他们提供该选项。如果用户选择使用记事本,请尝试在记事本中打开文件,但仍要注意异常情况。记事本是一个不错的选择,它不会锁定文件,但它仍然受文件夹/文件 ACL 的约束。
| 归档时间: |
|
| 查看次数: |
14719 次 |
| 最近记录: |