在 C# 中使用文件名启动应用程序
本文演示了如何启动与某一给定文档扩展名或文件类型关联的应用程序而又无须知道该关联应用程序的名称或位置。例如,您可以用一个与 .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# 中使用文件名启动应用程序的更多相关文章
- 在 Windows 中使用 C# 启动其他程序
因为某些原因需要自动启动一个 Winform 程序,可能是因为第三方资源的原因,使用 System.Diagnostics.Process 无法成功启动 (可以看到界面,但是会报 Unhandled ...
- win7 无法启动此程序,因为计算机中丢失glut32.dll
http://zhidao.baidu.com/link?url=9NZxqCvR7hvmKuVR1dUSdQB-TTv_re-g7lp-xZj5FKII04FnMvIKjFhKv299t6wv5Ht ...
- Win10 VC++6 无法启动此程序,因为计算机中丢失mfc42d.dll 需要提升
亲测可用 1.无法启动此程序,因为计算机中丢失mfc42d.dll 我也遇到了这个问题,并且顺利解决了!按一下流程搞定的: “工程-设置-常规-microsoft基础类,(选择使用MFC作为静态链接库 ...
- 无法启动此程序,因为计算机中丢失AdbWinApi.dll。尝试重新安装该程序以解决此问题
第一次搭建android开发环境,装完adb以后,打开DOS验证安装是否成功:但输入adb logcat调试时,系统弹出以下异常的对话框: 无法启动此程序,因为计算机中丢失AdbWinApi.dll. ...
- 解决【无法启动此程序,因为计算机中丢失MSVCP71.dll。尝试重新安装该程序以解决此问题】问题
今日电脑偶然出现:[无法启动此程序,因为计算机中丢失MSVCP71.dll.尝试重新安装该程序以解决此问题.]的不断地弹窗报错. 在网上查找了好久,也没有找到解决办法,就在我将要准备重装系统的时候,又 ...
- C#中通过Process启动的外部第三方程序MainWindowHandle句柄为0
原文 C#中通过Process启动的外部第三方程序MainWindowHandle句柄为0 前几天遇到了一个在C#的winform程序中,启动一个第三方jar程序,并修改jar运行窗体的标题的问题. ...
- 安装apache服务出错,无法启动此程序,因为计算机中丢失VCRUNTIME140.dll 尝试重新安装此程序以解决此问题
错误信息:无法启动此程序,因为计算机中丢失VCRUNTIME140.dll 尝试重新安装此程序以解决此问题 错误场景:在使用["D:\Program Files\httpd-2.4.20-x ...
- 在Flex中定义移动设备应用程序和启动屏幕
创建移动设备应用程序容器 移动设备应用程序中的第一个标签通常是以下标签之一: <s:ViewNavigatorApplication> 标签用于定义只有一个部分的移动设备应用程序. < ...
- PB程序“无法启动此程序,因为计算机中丢失PBvm90.dll。尝试重新安装该程序以解决此问题”的解决方法
因为有计算机自考科目,要求使用PB程序做一个管理系统.昨天刚安装好了PB程序,今天使用的时候,当我打开一个PB程序时,出现了"无法启动此程序,因为计算机中丢失PBvm90.dll.尝试重新安 ...
随机推荐
- [Vuex] Lazy Load a Vuex Module at Runtime using TypeScript
Sometimes we need to create modules at runtime, for example depending on a condition. We could even ...
- centos7.2重新安装yum
[root@zf-test-web01-4 ~]# yum install rng-toolsLoaded plugins: fastestmirrorLoading mirror speeds fr ...
- WPF模拟键盘输入和删除
private void ButtonNumber_Click(object sender, RoutedEventArgs e) { Button btn = (Button)sender; str ...
- Navicat for MySQL 64位破解版
注册码:NAVH-WK6A-DMVK-DKW3 百度网盘链接(为安装包,直接运行EXE文件即可):http://pan.baidu.com/s/1o7OwjFG
- TensorFlow实战Google深度学习框架10-12章学习笔记
目录 第10章 TensorFlow高层封装 第11章 TensorBoard可视化 第12章 TensorFlow计算加速 第10章 TensorFlow高层封装 目前比较流行的TensorFlow ...
- PL/SQL学习笔记程序单元
一:程序单元组成 一个PL/SQL程序单元主要包括三部分: 声明与定义部分:声明变量.常量.类型等:定义过程.函数等: 执行部分:执行PL/SQL语句:调用过程.参数:处理游标等: 异常处理部分:处理 ...
- Nginx负载均衡NFS配置
Nginx配置 首先在两台服务器上部署同一个项目,例如下: 测试网站节点1: http://192.168.168.61/nfstest/ 测试网站节点2: http://192.168.64.145 ...
- 【Android】解析Paint类中Xfermode的使用
Paint类提供了setXfermode(Xfermode xfermode)方法,Xfermode指明了原图像和目标图像的结合方式.谈到Xfermode就不得不谈它的派生类PorterDuffXfe ...
- Python中的高级数据结构详解
这篇文章主要介绍了Python中的高级数据结构详解,本文讲解了Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint这些数据结构的用法,需要的朋友可以参考 ...
- C# yield return; yield break;
using System; using System.Collections; namespace YieldDemo { class Program { public static IEnumera ...