C#:关联程序和文件
一、关联代码
/// <summary>
/// 关联程序和类型
/// </summary>
private void RegFileExt()
{
try
{
string boardExe = @"BlackBoardTool\bin\Teacher.UCBook.BlackBord.exe";
string boardExeFullName = Path.Combine(GlobalInfos.ExePath, boardExe);
if (File.Exists(boardExeFullName))
{
string MyExtName = ".dbb";
string MyType = "dbb_auto_file";
string MyContent = "application/dbb";
string command = "\"" + boardExeFullName + "\"" + " \"%1\"";
RegistryKey key = Registry.ClassesRoot.OpenSubKey(MyType);
if (key == null)
{
RegistryKey MyReg = Registry.ClassesRoot.CreateSubKey(MyExtName);
MyReg.SetValue("", MyType);
MyReg.SetValue("Content Type", MyContent);
MyReg = Registry.ClassesRoot.CreateSubKey(MyType);
MyReg.SetValue("", MyType);
MyReg = MyReg.CreateSubKey("Shell\\Open\\Command");
MyReg.SetValue("", command);
MyReg.Close();
_logger.Info("设置文件关联操作成功!");
}
else
{
var myReg = key.OpenSubKey("Shell\\Open\\Command",true);
if (myReg!=null && (myReg.GetValue("")==null || myReg.GetValue("").ToString()!=command))
{
myReg.SetValue("", command);//解决因目录变化导致 注册表失效的问题
myReg.Close();
}
}
}
}
catch (Exception ex)
{
_logger.ErrorFormat("设置文件关联失败!{0}",ex.Message);
}
}
二、注释
1、前面是路径,后面的 %1就是可变参数,代表任意用xxxx.exe来执行的程序 (可传至于exe程序)
2、string command = Environment.CommandLine.Trim();//获取进程命令行参数 含:.exe 全路径、打开文件的全路径(直接通过运行环境获取命令行)
3、static void Main(string[] args){} //args:仅含打开文件的全路径,不包含.exe 全路径 (程序运行时获取参数)
三、参考:
1、
.写注册表的时候,最后路径要加上参数,如: [HKEY_CLASSES_ROOT\Simu\shell\open\command]
@="\"x:\\simu\\Simulink.exe\" \"%1\"" 前面是路径,后面的 %1就是参数了 .程序的主入口加入参数,以C#为例: static void Main(string[] args)
{
if (args.Length > )
{
MessageBox.Show(args[].ToString());
}
} .在写链接的时候自定义参数,程序会把整个链接都获取到,自己在进行解析 : 比如: <a href="MyOfficeCon://hello"></a> 会获取到 “MyOfficeCon://hello”
2、线程开启程序时传参
新建板书一.dbb E:\working\Client\Build\Teacher.Build\user\\resource\mbook_de0df31a6fd14e3390a8d65c19342801\resource\4d4db1cc.dbb _boardPath: E:\working\Client\Build\Teacher.Build\bin\Teacher.UCBook.BlackBord.exe _args: -p "E:\working\Client\Build\Teacher.Build\user\16\resource\mbook_de0df31a6fd14e3390a8d65c19342801\resource\4d4db1cc.dbb" 新建板书一.dbb System.Diagnostics.Process.Start(_boardPath, _args);
C#:关联程序和文件的更多相关文章
- macOS上实现Qt应用程序做文件关联打开
一.背景介绍 用Qt开发的应用程序要实现文件关联,双击时用默认关联的程序打开文件,在Windows上这个功能非常容易实现.Windows应用程序在安装的时候可以在注册表中写入相关的键值对.打开文件的时 ...
- 与众不同 windows phone (38) - 8.0 关联启动: 使用外部程序打开一个文件或URI, 关联指定的文件类型或协议
[源码下载] 与众不同 windows phone (38) - 8.0 关联启动: 使用外部程序打开一个文件或URI, 关联指定的文件类型或协议 作者:webabcd 介绍与众不同 windows ...
- 重新想象 Windows 8 Store Apps (33) - 关联启动: 使用外部程序打开一个文件或uri, 关联指定的文件类型或协议
原文:重新想象 Windows 8 Store Apps (33) - 关联启动: 使用外部程序打开一个文件或uri, 关联指定的文件类型或协议 [源码下载] 重新想象 Windows 8 Store ...
- 背水一战 Windows 10 (99) - 关联启动: 关联指定的文件类型, 关联指定的协议
[源码下载] 背水一战 Windows 10 (99) - 关联启动: 关联指定的文件类型, 关联指定的协议 作者:webabcd 介绍背水一战 Windows 10 之 关联启动 关联指定的文件类型 ...
- [AIR] 使用操作系统默认应用程序打开文件
AIR 2.0及以上提供了非常简单易用的API让你使用操作系统所定义的关联应用程序打开文件. 这使得使用AIR开发基于“文件管理器”的应用称为可能 用法如下: var file:File = File ...
- 通过c程序更改文件的ctime和mtime
通过c程序更改文件的ctime和mtime与某个文件相同 源文件words.txt [root@bogon ~]# ll words.txt ;ll words.txt -u -rw-r--r-- 1 ...
- Encrypting bootloader (程序BIN文件加密及在线升级)
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 在上一个博客随笔,我介 ...
- Lua学习笔记4. coroutine协同程序和文件I/O、错误处理
Lua学习笔记4. coroutine协同程序和文件I/O.错误处理 coroutine Lua 的协同程序coroutine和线程比较类似,有独立的堆栈.局部变量.独立的指针指令,同时又能共享全局变 ...
- qt: 系统默认程序打开文件或者软件;
Qt提供了QDesktopServices类, 可以利用openUrl函数调用默认程序打开文件: 源码参考: #ifdef Q_OS_WIN32 m_szHelpDoc = QString(" ...
随机推荐
- 将hadoop源代码导入eclipse
1. 安装JDK,eclipse,下载hadoop源代码并解压到某一个目录. 2. 安装maven,将bin目录添加到PATH环境变量中. 3. 安装protobuf2.5.0,将protoc-2.5 ...
- LaunchImage命名与AppIcon命名(ios设置 启动图片和AppIcon图片)
LaunchImage AppIcon 分别拖拉至Images.scassets 对应的LaunchImage和AppIcon就可以设置 启动图片和AppIcon图片
- 用get方式提交请求的url带有中文参数
又碰到JSP页面中文乱码问题,经过一次encodeURI处理后仍旧是乱码,后来经过两次encodeURI后正常显示中文 以前也碰到过同样的问题,没深究,这次网上搜集了一些资料,记录下来留做备份 ___ ...
- css 字体样式
[强制] font-family 属性中的字体族名称应使用字体的英文 Family Name,其中如有空格,须放置在引号中. 解释: 所谓英文 Family Name,为字体文件的一个元数据,常见名称 ...
- Vagrant配置与使用
Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境.它 使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境. Vagrant is an amaz ...
- hdu 2528 Area
2014-07-30 http://acm.hdu.edu.cn/showproblem.php?pid=2528解题思路: 求多边形被一条直线分成两部分的面积分别是多少.因为题目给的直线一定能把多边 ...
- CSS_01_css和html的结合1、2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- (转)【ASP.NET开发】获取客户端IP地址 via C#
[ASP.NET开发]获取客户端IP地址 via C# 说明:本文中的内容是我综合博客园上的博文和MSDN讨论区的资料,再通过自己的实际测试而得来,属于自己原创的内容说实话很少,写这一篇是为了记录自己 ...
- android 修改系统的dialog样式
android 修改系统的dialog样式 一.觉得自定义配置文件麻烦?那就来修改系统自定义XML文件来实现修改系统dialog的样式吧. 如果是在XML中样式:首先来说下样式. 在 Style.x ...
- spark history-server的使用
为什么需要historyServer? 在运行Spark Application的时候,Spark会提供一个WEBUI列出应用程序的运行时信息:但该WEBUI随着Application的完成(成功/失 ...