一、关联代码

        /// <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. 面向对象编程(七)——Static关键字

    Static变量

  2. Python基础(冒泡、生成器、迭代器、列表与字典解析)

    一.冒泡算法 冒泡算法,给定一组数据,从大到小排序或者从小到大排序,就像气泡一样 原理:  相邻的两个对象相比,大的放到后面,交换位置 交换位置通过a,b=b,a来实现 1.我们可以通过for循环来根 ...

  3. Vue.2.0.5-列表渲染

    v-for 我们用 v-for 指令根据一组数组的选项列表进行渲染. v-for 指令需要以item in items 形式的特殊语法, items 是源数据数组并且 item 是数组元素迭代的别名. ...

  4. javascript设计模式学习之二——this

    一.this指向问题 1)默认绑定,即作为独立的普通函数调用 此时this指向全局对象window,如果是严格模式下,则指向undefined; 2)隐式绑定,即具有调用上下文(一种场景就是作为对象的 ...

  5. C++ note

    主要是为了学习c++的类和对象   内容摘自 c++概述 http://see.xidian.edu.cn/cpp/biancheng/cpp/rumen_1/   1,变量  ,C++中,我们可以在 ...

  6. zend optimizer在wamp的基础上安装

    在用wampserver集成开发环境下,有时会碰到一些开源程序需要zend optimizer的支持,下面我用的wamp的版本是2.0,optimizer的版本是ZendOptimizer-3.3.3 ...

  7. C++Primer 第十八章

    //1.异常:待研究 //2.命名空间: // A:多个库将名字放置在全局命名空间中将引发命名空间污染. // B:命名空间为防止名字冲突提供了更加可控的机制.命名空间分割了全局命名空间,其中每个命名 ...

  8. Leetcode: Evaluate Division

    Equations are given in the format A / B = k, where A and B are variables represented as strings, and ...

  9. execute、executeQuery和executeUpdate之间的区别

    JDBCTM中Statement接口提供的execute.executeQuery和executeUpdate之间的区别 Statement 接口提供了三种执行 SQL 语句的方法:executeQu ...

  10. SQL order by 两个字段排序

    select * from emp;