none
在win7系统中使用System.Diagnostics.Process.Start()函数打开一个已经存在的文件,若文件的默认打开应用程序未指定,则调用时会抛出异常,如何解决这个问题? RRS feed

  • 问题

  • 在win7系统中使用System.Diagnostics.Process.Start()函数打开一个已经存在的文件,若文件的默认打开软件未指定,会抛出异常。不会弹出如下的对话框来提示选择默认打开该文件的应用程序。win10上会弹出。

    异常信息:

    在当前系统为win7的情况下,如何解决这个问题,也就是在使用System.Diagnostics.Process.Start()打开文件时,如何该文件未指定默认打开的应用程序,则弹出上面的对话框来提示用户选择默认打开程序?

    2017年6月13日 8:51

全部回复

  • Hi 便携式家园,

    感谢你在MSDN论坛发帖。

    >>" 若文件的默认打开软件未指定,会抛出异常 "

    这个情况在windows 10上面,就不会抛出异常,而是抛出选择其他应用程序的界面吗? 在windows 7上面就是直接抛出异常吗?

    对于这个问题,你可以提供一份能重现问题的demo吗? 以便我们测试是不是windows 的问题。

    根据我的了解,当你使用start函数的时候,这个进程的启动信息是必须要给出的。 一般是通过ProcessStartInfo 这个结构体给出信息。

    1. 所以你需要先去检查一下,你有没有给对进程的启动的信息。

    2. 我建议你是有try catch 语句进行抓取,这样针对exception,我们可以提前采取措施。

    根据你的错误信息可知,这是个win32exception,这个在MSDN的文档中提到过。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年6月14日 8:14
    版主
  • Hi 便携式家园,

    感谢你在MSDN论坛发帖。

    >>" 若文件的默认打开软件未指定,会抛出异常 "

    这个情况在windows 10上面,就不会抛出异常,而是抛出选择其他应用程序的界面吗? 在windows 7上面就是直接抛出异常吗?

    对于这个问题,你可以提供一份能重现问题的demo吗? 以便我们测试是不是windows 的问题。

    根据我的了解,当你使用start函数的时候,这个进程的启动信息是必须要给出的。 一般是通过ProcessStartInfo 这个结构体给出信息。

    1. 所以你需要先去检查一下,你有没有给对进程的启动的信息。

    2. 我建议你是有try catch 语句进行抓取,这样针对exception,我们可以提前采取措施。

    根据你的错误信息可知,这是个win32exception,这个在MSDN的文档中提到过。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.


    2017年6月15日 0:50
  • Hi,

    我测试这个代码在windows 7上面使用VS2015,并没有出现你说的问题。

    我没有指定默认打开方式,是可以正常打开的。下面是我的测试截图。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年7月4日 7:48
    版主
  • Hi,

    我测试这个代码在windows 7上面使用VS2015,并没有出现你说的问题。

    我没有指定默认打开方式,是可以正常打开的。下面是我的测试截图。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    .txt后缀的文件之后所以能打开,是因为,windows中已经有关于这个文件的默认打开应用程序了,这个应用程序就是windows自带的记事本软件,你可以尝试把文件后缀名换成其他的,在运行代码试一试。比如在win7系统中未装office软件的情况下,使用Process.Start()打开一个后缀名为.word的文件。会抛出"找不到应用程序"的异常。

    楼主想要的答案其实就是在win7系统下,使用Process.Start()函数打开一个没有默认软件能打开的文件类型的文件时,弹出"打开方式"对话框。而我也遇到了这个问题,我也不知道怎么解决。








    2017年7月5日 10:41
  • Hi,

    我测试这个问题在windows 7 并且使用VS2015版本,电脑上面没有word工具,使用程序去打开这个word文档。

    我没有出现你的问题,我这边是弹出了一个简单的选择对话框。

    这个截图是在debug的状态下截的图。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年7月6日 7:03
    版主