/// <summary> /// 打开指定路径下文件,比如:word、excel、dll、图片等都可以(前提是你已经安装打开程序的对应软件) /// </summary> /// <param name="newfilename">eg:d:\test\模版8.doc</param> /// <param name="newfilename">eg:d:\test\模版8.doc</param> private void openfile(string newfilename) { process process = new process(); processstartinfo processstartinfo = new processstartinfo(newfilename); process.startinfo = processstartinfo; # region 下面这段被注释掉代码(可以用来全屏打开代码) ////建立新的系统进程 //system.diagnostics.process process = new system.diagnostics.process(); ////设置文件名,此处为图片的真实路径+文件名(需要有后缀) //process.startinfo.filename = newfilename; ////此为关键部分。设置进程运行参数,此时为最大化窗口显示图片。 //process.startinfo.arguments = "rundll32.exe c://windows//system32//shimgvw.dll,imageview_fullscreen"; //// 此项为是否使用shell执行程序,因系统默认为true,此项也可不设,但若设置必须为true //process.startinfo.useshellexecute = true; #endregion try { process.start(); try { // process.waitforexit(); } catch (exception ex) { throw ex; } } catch (exception ex) { throw ex; } finally { try { if (process != null) { process.close(); process = null; } } catch { } } }
今天,测试的时候,不知道谁在
process.startinfo = processstartinfo;
这个句话的后面,添加了这么一句话:
process.startinfo.useshellexecute = false;
一开始也没注意,然后一直报下面这个错误:
the specified executable is not a validapplication for this os platform.
解释:
processstartinfo.useshellexecute 属性:获取或设置一个值,该值指示是否使用操作系统外壳程序启动进程。
属性值:
若要在启动进程时使用外壳程序,则为 true;否则,直接从可执行文件创建进程。默认为 true。将属性设置为 false 能够重定向输入流、输出流和错误流。否则不行。
使用操作系统外壳程序启动进程时,可以使用 process 组件启动任何文档(可以是与可执行文件关联的、具有默认打开操作的任何注册文件类型),并对该文件执行操作(如打印)。如果 useshellexecute 为 false,则只能使用 process组件启动可执行文件。
以上就是c# 打开指定路径下文件的内容。
