C#如何设置文件关联

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FileStream fs = new FileStream(pathC, FileMode.Open, FileAccess.Read); this.richTextBox1.LoadFile(fs, RichTextBoxStreamType.PlainText); fs.Close(); } } }
如何设置设置文件关联
Step1、准备工作
引入名字空间:
using Microsoft.Win32; using System.IO;
Step2、修改注册表项(设置关联)
try {
string MyFileName =@"F:\vs2008project\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\WindowsForms Application1.exe";
方法 2、将 HKCR\Resco_giffile\Shell\Open\Command Fra Baidu bibliotek的 Default 键值修改为 pimg.exe "%1"。
修改其他图片格式关联的方法是一样的,例如 png 格式,将上述项和值数据中的“gif”替换 为“png”即可。
——原理也不复杂:
HKEY_CLASSES_ROOT 根键下的“Resco_giffile”是原关联项,旧人,抛弃她得了!新人 “gifimage”是正宗原配——系统默认且预设好的,信手拈来即可。这里的关键是,你要知 道“gifimage”关联的程序“pimg.exe”就是“图片和视频”。这个可以参考“gifimage”项的打 开程序键"Command"里的 Default 键值。
项的 Default 键值就是文件关联类型,即"Default"="文件关联类型"如 [Default=3gpfile(表示关联到 3gp 文件类型)],这儿就是更改文件关联需要动刀子的主要 部位之一。——有些文件扩展名项还有其他的键值,不过不必理会,例如"Content Type"=" 内容类型",其只起说明作用,不影响文件关联。
if (para.Length > 2) {
string pathC = para[2];//获取打开的文件的路径 this.richTextBox1.AppendText("0:" + para[0] + "\n"); this.richTextBox1.AppendText("1:" + para[1] + "\n"); this.richTextBox1.AppendText("2:" + para[2] + "\n"); // this.richTextBox1.AppendText("3:" + para[3] + "\n"); //下面就可以自己编写代码使用这个pathC参数了 if (pathC.Length >2) {
但有些软件关联文件后却不会生成该应用程序的 "(程序名_文件类型)file"的项,那更改关 联就要到文件关联类型——"(文件类型)file"的项里进行。例如,AVI 格式文件已关联到 TCPMP,但“.avi”项的 Default 键值仍然为“avifile”,
要把 AVI 格式更改为关联到 WMP,就要到“avifile”项里,
代码说明: 1、string MyFileName ; 注册表项的名称 自定义 意义不大 2、string MyExtName; 关联文件的扩展名 2、string MyType; 给自定义文件类型起的名称 意义不大 3、key = Registry.ClassesRoot.CreateSubKey(keyName); 定义文件关联注册表项的属性
string MyExtName=".zb"; string MyType="自定义文本类型"; string MyContent="text/plain"; RegistryKey MyReg= Registry.ClassesRoot.CreateSubKey(MyExtName); MyReg.SetValue("", MyType); MyReg.SetValue("Content Type", MyContent); MyReg = MyReg.CreateSubKey("shell\\open\\command"); MyReg.SetValue("", MyFileName + " %1"); MyReg.Close(); MessageBox.Show("设置文件关联操作成功!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch(Exception ex) { MessageBox.Show(ex.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); }
有些第三方程序关联了某一类型文件,会在 HKEY_CLASSES_ROOT 分支下增加该应用 程序的文件关联类型——"(程序名_文件类型)file"的项,同时会改变注册表里该文件扩展名 子键的 Default 键值。如下图:GIF 图片格式关联了 RPicViewPro.exe (Resco 图片查 看器)。
再看下面的文件关联类型—— "(文件类型)file"的项如[3gpfile],其子项"Command"的 Default 键值就是打开关联文件的程序的路径,如 [HKEY_CLASSES_ROOT\3gpfile\Shell\Open\Command] [Default=wmplayer.exe "%1"(表示打开程序为 wmplayer)]
附件
WM 系统文件关联之注册表篇
我们在利用软件进行文件关联的时候,其实注册表亦发生了相应的变化。直接在注册表里更 改相关的数值,也会有一样的效果。 (插个广告:下面所用的注册表编辑器,是操作界面跟电脑最相似,最简单好用的 “PHMRegEdit”。嘿嘿 ^_^) 首先我们来对注册表作一些必要的了解,看看文件关联要接触到的项值,下文中的 “()”为 说明,“[ ]”表示例子。 打开注册表,在 HKEY_CLASSES_ROOT 根键下,排在上面位置的是文件扩展名子键 ——".(文件类型)"的项如[.3gp(表示 3gp 后缀)],
Step3、关联文件启动运行时载入文件
private void Form1_Load(object sender, EventArgs e) {
string command = Environment.CommandLine;//获取进程命令行参数 string[] para = command.Split('\"');
还是不明白?那我上面说了那么多算白说了! --- 嘿嘿,言重了!其实注册表的庞杂和不 直观,是没有人能够完全玩得转它的!而且操作起来很麻烦。问题如能通过软件解决,我就 不喜欢动注册表。例如文件关联,用软件操作就轻松得多! 最后装腔作势的说一句,无论你对注册表熟悉与否,修改前备份注册表都是必要的!
把其子项 "Command"的 Default 原键值“"\Storage Card\Software Folder\TCPMP V0.81 绿色汉化版\PLAYER.EXE"”改为“wmplayer.exe "%1"”。
如果你不知道用 WMP 打开文件的命令 之 Default 键值(即“wmplayer.exe "%1"”) , 那你可以看看现在有什么类型的文件是用 WMP 打开的,到这种文件关联类型项的打开程序 键 "Command" 中查看一下。例如 3gp 文件是用 WMP 打开的,那就到 HKEY_CLASSES_ROOT\3gpfile\Shell\Open\Command 项,看看它的 Default 键值 是什么?
还是举个例子吧!要不然我都不知道自己在说什么?有点晕!比如 GIF 图片格式已经跟 RPicViewPro.exe (Resco 图片查看器)关联了(HKEY_CLASSES_ROOT 分支下会生 成“Resco_giffile”子项),也就是说我 现时 是用 RPicViewPro.exe 来打开 GIF 格式图 片的,但我现在想用系统的“图片和视频”来打开 GIF 图片,该怎么修改注册表呢? ——其实动作很简单: 方法 1、把“.gif”项下的 Default 键值“Resco_giffile”改为“gifimage”。
相关文档
最新文档