C#实现文件关联
和其他语言一样,C#实现文件关联同样需要直接操作注册表,即按规则分别设置文件扩展名,文档类型说明,友好名称,图标,调用方法等键值即可,网上随便查查就可以写出以下的代码。 using Microsoft.Win32; RegistryKey key = Registry.ClassesRoot.OpenSubKey(".jb");
if (key == null)
{
key = Registry.ClassesRoot.CreateSubKey(".jb");
key.SetValue("", "Jeebook.Reader.jb");
key.SetValue("Content Type", "application/jb"); key = Registry.ClassesRoot.CreateSubKey("Jeebook.Reader.jb");
key.SetValue("", "Jeebook Document"); RegistryKey keySub = key.CreateSubKey("DefaultIcon");
keySub.SetValue("", System.Windows.Forms.Application.StartupPath + "Jeebook.ico");
keySub = key.CreateSubKey("shell\\open\\command");
keySub.SetValue("", "\"" + System.Windows.Forms.Application.ExecutablePath + "\" \"%1\"");
} 相对来说,C#实现比较麻烦的是图标路径,一般文件类型注册的都是执行文件的资源,格式如下: 格式:, // 资源ID为正数,表示资源的索引号,否则为资源ID 在C++中很容易获取资源ID,但C#中还没搞清楚如何取道资源的ID,所以索性在程序执行目录下附带一个图标文件用于注册,这样倒也方便随时修改:) 此外,就是如何验证图标是否设置正确。现在的系统超爱缓存,除非LOG OFF级别的操作,否则手工修改注册表很难马上响应,当然通过程序调用应该刷新系统状态,这个下次有时间再研究吧 如果只是用于XP以下的程序,以上的代码就已经足够了。可惜的是,Vista以后引入了UAC,上面的代码在UAC下会弹出异常,这肯定不是我们希望的。 一种解决方法是通过创建一个Mainifest文件,添加以下脚本:
这样程序图标上会出现一个小盾牌,表示该程序需要在管理员模式下运行,每次运行都会自动弹出UAC的验证窗口。但这个对某些只是需要书写一次注册表的程序来说,每次都弹出提示是无法忍受的,那么如何能够通过代码弹出UAC验证窗口呢?
相关文档:
枚举
枚举类型声明为一组相关的符号常数定义了一个类型名称。枚举用于“多项选择”场合,就是程序运行时从编译时已经设定的固定数目的“选择”中做出决定。
枚举类型(也称为枚举)为定义一组可以赋给变量的命名整数常量提供了一种有效的方法。例如,假设您必须定义一个变量,该变量 ......
//TransmitFile实现下载
protected void Button1_Click(object sender, EventArgs e)
{
/*
微软为Response对象提供了一个新的方法TransmitFile来解决使用Respo ......
C#画线控件的应用实例介绍之前我们要明白在C#中没有画线的控件,这里写了一个,大家分享。共有两个控件分别是画横线和画竖线的,关于怎么画斜线有兴趣的可以做一个大家分享。
C#画线控件之横线
using System;
using System.Collections;
using System.ComponentModel; ......
C#正则表达式匹配字符串的方法如下:
1.使用C#中使用正则表达式System.Text.RegularExpressions命名空间;
2.使用C#中使用正则表达式Matches()方法匹配字符串,格式如下:
MatchCollection Matches = Regex.Matches(Str, Pattern, RegexOptions.IgnoreCase | RegexOptions.ExplicitC ......