本文演示了如何启动与某一给定文档扩展名或文件类型关联的应用程序而又无须知道该关联应用程序的名称或位置。例如,您可以用一个与 .bmp 文件扩展名关联的应用程序启动 Arcade.bmp 文件,多数情况下此应用程序就是 MSPaint.exe。

要求

  • Microsoft C# .Net

包括名称空间

名称空间必须出现在类声明之前,如下所示:

using System.Diagnostics;

指定 ProcessStartInfo 信息

您可以使用 .NET 框架 Process 类的 ProcessStartInfo 结构来指定启动进程时的选项。本文概述了如何使用文件名选项。另一个成员 UseShellExecute 指定基于文件扩展名或文件类型而非基于可执行文件 (.exe) 的名称来启动进程。此属性默认设置为 true。出于演示目的,它在本代码中是显式设置的。

string sysFolder=
Environment.GetFolderPath(Environment.SpecialFolder.System);
ProcessStartInfo pInfo = new ProcessStartInfo();
pInfo.FileName = sysFolder + @"\eula.txt";
pInfo.UseShellExecute = true;

启动应用程序

此示例打开一个名为 Eula.txt 的文件。此文件是用与 .txt 文件扩展名关联的应用程序打开的,此应用程序通常就是 Notepad.exe。您可以替换为任何有相关联应用程序的文件名或文件类型。

Process p  = Process.Start(pInfo);

创建启动应用程序的快捷方式

因为 UseShellExecute 默认为"true",所以在启动进程时不要求您使用 ProcessStartInfo
。您可以使用一行代码来启动关联的应用程序,如下所示:

Process p  = Process.Start(@"C:\winnt\system32\eula.txt");

完成代码示例

using System.Diagnostics;

    //Get path of the system folder.
string sysFolder =
Environment.GetFolderPath(Environment.SpecialFolder.System);
//Create a new ProcessStartInfo structure.
ProcessStartInfo pInfo = new ProcessStartInfo();
//Set the file name member.
pInfo.FileName = sysFolder + @"\eula.txt";
//UseShellExecute is true by default. It is set here for illustration.
pInfo.UseShellExecute = true;
Process p = Process.Start(pInfo);

疑难解答

个别计算机有可能未安装关联应用程序或注册表中的关联不正确。最好将此代码包装在一个 try...catch 块中,这样在失败时应用程序就会收到警报。

在 C# 中使用文件名启动应用程序的更多相关文章

  1. 在 Windows 中使用 C# 启动其他程序

    因为某些原因需要自动启动一个 Winform 程序,可能是因为第三方资源的原因,使用 System.Diagnostics.Process 无法成功启动 (可以看到界面,但是会报 Unhandled ...

  2. win7 无法启动此程序,因为计算机中丢失glut32.dll

    http://zhidao.baidu.com/link?url=9NZxqCvR7hvmKuVR1dUSdQB-TTv_re-g7lp-xZj5FKII04FnMvIKjFhKv299t6wv5Ht ...

  3. Win10 VC++6 无法启动此程序,因为计算机中丢失mfc42d.dll 需要提升

    亲测可用 1.无法启动此程序,因为计算机中丢失mfc42d.dll 我也遇到了这个问题,并且顺利解决了!按一下流程搞定的: “工程-设置-常规-microsoft基础类,(选择使用MFC作为静态链接库 ...

  4. 无法启动此程序,因为计算机中丢失AdbWinApi.dll。尝试重新安装该程序以解决此问题

    第一次搭建android开发环境,装完adb以后,打开DOS验证安装是否成功:但输入adb logcat调试时,系统弹出以下异常的对话框: 无法启动此程序,因为计算机中丢失AdbWinApi.dll. ...

  5. 解决【无法启动此程序,因为计算机中丢失MSVCP71.dll。尝试重新安装该程序以解决此问题】问题

    今日电脑偶然出现:[无法启动此程序,因为计算机中丢失MSVCP71.dll.尝试重新安装该程序以解决此问题.]的不断地弹窗报错. 在网上查找了好久,也没有找到解决办法,就在我将要准备重装系统的时候,又 ...

  6. C#中通过Process启动的外部第三方程序MainWindowHandle句柄为0

    原文 C#中通过Process启动的外部第三方程序MainWindowHandle句柄为0 前几天遇到了一个在C#的winform程序中,启动一个第三方jar程序,并修改jar运行窗体的标题的问题. ...

  7. 安装apache服务出错,无法启动此程序,因为计算机中丢失VCRUNTIME140.dll 尝试重新安装此程序以解决此问题

    错误信息:无法启动此程序,因为计算机中丢失VCRUNTIME140.dll 尝试重新安装此程序以解决此问题 错误场景:在使用["D:\Program Files\httpd-2.4.20-x ...

  8. 在Flex中定义移动设备应用程序和启动屏幕

    创建移动设备应用程序容器 移动设备应用程序中的第一个标签通常是以下标签之一: <s:ViewNavigatorApplication> 标签用于定义只有一个部分的移动设备应用程序. < ...

  9. PB程序“无法启动此程序,因为计算机中丢失PBvm90.dll。尝试重新安装该程序以解决此问题”的解决方法

    因为有计算机自考科目,要求使用PB程序做一个管理系统.昨天刚安装好了PB程序,今天使用的时候,当我打开一个PB程序时,出现了"无法启动此程序,因为计算机中丢失PBvm90.dll.尝试重新安 ...

随机推荐

  1. CentOS7开启docker远程访问并在idea中连接使用

    CentOS7开启docker远程访问并在idea中连接使用 1.编辑/usr/lib/systemd/system/docker.service,配置远程访问.主要是在[Service]这个部分,添 ...

  2. ionic-content 中iframe高度自适应

    http://blog.csdn.net/jesounao/article/details/50945003 无法访问外部url的问题–两个步骤解决: 1.iframe的src属性用ng-src属性替 ...

  3. datagrip离线安装驱动jar

    问题描述: datagrip离线安装驱动,在线的安装驱动一般默认安装在当前用户下.DataGrip xxxx 问题解决: 在线在线下载驱动jar,复制jar到内网离线环境 01.外网已经存在的jar提 ...

  4. PHP事件机制

    先用 3W1H(who what why how) 分析法的思路来解释一下 事件机制, 更重要的是, 这个有什么用. 正常的程序执行, 或者说人的思维趋势, 都是按照 时间线性串行 的, 保持 连续性 ...

  5. caffe可重入单例机制分析

    一个函数可重入是指该函数可以被多个线程同时调用.大多数函数都不是可重如的,因为很多函数会修改静态数据结构里的内容,如果多个线程同时调用,势必破坏共享的静态结构.可以在不改变公共接口的情况下,将一个非重 ...

  6. C# 批量图片打包下载

    实现点击下载功能,可以一次性下载多个附件.具体实现代码如下 : private void Com_XZTP_FJ(string maiId, string wtfjdz, string CLwtfjd ...

  7. vim:放弃hjkl

    vim放弃使用hjkl,可以加快文本的编辑速度,不信,看我摘录的文章:http://vimcasts.org/blog/2013/02/habit-breaking-habit-making/ Wor ...

  8. 移动开发常用meta设置

    <!-- 视图窗口,移动端特属的标签. --> <meta name="viewport" content="width=device-width,in ...

  9. 如何添加使用echats地图悬浮显示内容

    /初始化绘制全国地图配置 var option = { backgroundColor: '#000', title: { text: 'Echarts3 中国地图农村金融', subtext: '三 ...

  10. Airtest iOS测试环境部署

    [本文出自天外归云的博客园] 简介 这个Airtest IDE是通过iOS-Tagent来操作iPhone的,你可以在Airtest IDE里录制脚本来实现自动化操作iPhone 前提 1. 得有个i ...