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(" ...
随机推荐
- msvc库没有安装包,编译选项选择 代码生成 MT【多线程】,C#调用
参考提过的一个问题,封装VC++动态链接库,C#调用,并将C#程序打包为exe安装包. 感谢大神.
- [3D]绘制XYZ小坐标轴
源码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Slim ...
- passport 自动取密码
django settings.py """ Django settings for password project. Generated by . For more ...
- box2dweb之关节joint(连接器)
1 概述 前篇基础文章看完后基本上就应该对box2dweb能上手了,下面来介绍一下box2dweb非常重要的一个概念,关节(joint)也有叫连接器的,总之是一个意思.下面是关节详细的类库说明: BO ...
- ADO.Net 数据库访问技术
1.在web.Config配置文件中设置连接字符串 <connectionStrings> <add name="connString" connectionSt ...
- Windows2000安装Winform Clickonce提示升级系统版本的解决方案
Windows2000安装Winform Clickonce提示升级系统版本.只需要把所有应用的DLL的独立性设置为false就可以了.
- 《30天自制操作系统》04_day_学习笔记
harib01a: P65 用C语言实现内存写入 实现一个往黑画面上写入东西的函数 修改了naskfunc.nas中的内容 在bootpack.c中 用write_mem8()函数将VRMA中全部写入 ...
- C++之路进阶——bzoj1030(文本生成器)
F.A.Qs Home Discuss ProblemSet Status Ranklist Contest ModifyUser hyxzc Logout 捐赠本站 Notice:由于本OJ建立在 ...
- POJ 3243 Clever Y(离散对数-拓展小步大步算法)
Description Little Y finds there is a very interesting formula in mathematics: XY mod Z = K Given X, ...
- PHP与jquery前后台交互的小程序
1 <!DOCTYPE HTML> <html> <head> <meta charset = "utf-8"> <scrip ...