一、关联代码

        /// <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#:关联程序和文件的更多相关文章

  1. macOS上实现Qt应用程序做文件关联打开

    一.背景介绍 用Qt开发的应用程序要实现文件关联,双击时用默认关联的程序打开文件,在Windows上这个功能非常容易实现.Windows应用程序在安装的时候可以在注册表中写入相关的键值对.打开文件的时 ...

  2. 与众不同 windows phone (38) - 8.0 关联启动: 使用外部程序打开一个文件或URI, 关联指定的文件类型或协议

    [源码下载] 与众不同 windows phone (38) - 8.0 关联启动: 使用外部程序打开一个文件或URI, 关联指定的文件类型或协议 作者:webabcd 介绍与众不同 windows ...

  3. 重新想象 Windows 8 Store Apps (33) - 关联启动: 使用外部程序打开一个文件或uri, 关联指定的文件类型或协议

    原文:重新想象 Windows 8 Store Apps (33) - 关联启动: 使用外部程序打开一个文件或uri, 关联指定的文件类型或协议 [源码下载] 重新想象 Windows 8 Store ...

  4. 背水一战 Windows 10 (99) - 关联启动: 关联指定的文件类型, 关联指定的协议

    [源码下载] 背水一战 Windows 10 (99) - 关联启动: 关联指定的文件类型, 关联指定的协议 作者:webabcd 介绍背水一战 Windows 10 之 关联启动 关联指定的文件类型 ...

  5. [AIR] 使用操作系统默认应用程序打开文件

    AIR 2.0及以上提供了非常简单易用的API让你使用操作系统所定义的关联应用程序打开文件. 这使得使用AIR开发基于“文件管理器”的应用称为可能 用法如下: var file:File = File ...

  6. 通过c程序更改文件的ctime和mtime

    通过c程序更改文件的ctime和mtime与某个文件相同 源文件words.txt [root@bogon ~]# ll words.txt ;ll words.txt -u -rw-r--r-- 1 ...

  7. Encrypting bootloader (程序BIN文件加密及在线升级)

    了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 在上一个博客随笔,我介 ...

  8. Lua学习笔记4. coroutine协同程序和文件I/O、错误处理

    Lua学习笔记4. coroutine协同程序和文件I/O.错误处理 coroutine Lua 的协同程序coroutine和线程比较类似,有独立的堆栈.局部变量.独立的指针指令,同时又能共享全局变 ...

  9. qt: 系统默认程序打开文件或者软件;

    Qt提供了QDesktopServices类, 可以利用openUrl函数调用默认程序打开文件: 源码参考: #ifdef Q_OS_WIN32 m_szHelpDoc = QString(" ...

随机推荐

  1. [GeoServer]Openlayers简单调用

    Openlayers Demo: <html> <head> <title>OpenLayers Example</title> <script ...

  2. Lua xavante WEB server实现xmlrpc服务器端

    xavante xavante是一个使用lua实现的遵守http1.1的web server,支持wsapi. 依赖库: xavante核心 -- lua, copas(纯lua编写,网络连接coro ...

  3. django关闭DEBUG后 static静态文件都访问不了

    Django框架仅在开发模式下提供静态文件服务.当我开启DEBUG模式时,Django内置的服务器是提供静态文件的服务的,所以css等文件访问都没有问题,但是关闭DEBUG模式后,Django便不提供 ...

  4. CentOS6.5 安装HAProxy 1.5.20

    [在CentOS下安装haproxy] sudo yum install haproxy 编辑配置文件 vim /etc/haproxy/haproxy.cfg #------------------ ...

  5. 自动备份sqlexpress 数据库脚本

    Create PROCEDURE [dbo].[usp_BackupDatabase] @databaseName sysname,@backupPath nvarchar(255), @backup ...

  6. 不等高cell搭建(二)

      一.commentView模块搭建 commentView样式分为两种     1.xib搭建界面   1.1 因为评论的样式大体上一样,我们可以用同一个xib来处理   1.2 最热评论   用 ...

  7. Java类加载器深入探索

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 什么是.class文件? class文件全名称为Java class文件,主要在平台无关性和网 ...

  8. PHP判断手机号码是否合法

    <html> <head> <script language="JavaScript"> function checkMobile(input) ...

  9. C++之路进阶——bzoj3172(单词)

    F.A.Qs Home Discuss ProblemSet Status Ranklist Contest ModifyUser  hyxzc Logout 捐赠本站 Notice:由于本OJ建立在 ...

  10. DataTable 筛选数据

    //使用聚合函数 max ,sum  ,count .... private void ComputeBySalesSalesID(DataSet dataSet) {     // Presumes ...