关于设置文件关联
做图片合并工具的时候,终于做到了保存项目,遇到需要将程序与一个项目文件类型关联,在网上搜索了下,整理出如下代码,基本可以满足要求:
Code
/// <summary>
/// 设置文件关联,需要引入命名空间:Microsoft.Win32。
/// </summary>
/// <param name="p_Filename">可执行文件路径</param>
/// <param name="p_FileTypeName">文件类型</param>
/// <param name="t_String">类型代号</param>
/// <param name="t_Name">类型名称</param>
/// <param name="p_FileIcon">默认图标</param>
public void SetFileAssociations(string p_Filename, string p_FileTypeName,string t_String,string t_Name,string p_FileIcon)
{
RegistryKey _RegKey = Registry.ClassesRoot.OpenSubKey("", true); //打开注册表
RegistryKey _VRPkey = _RegKey.OpenSubKey(p_FileTypeName);
if (_VRPkey != null)
_RegKey.DeleteSubKey(p_FileTypeName, true); //原键值存在,直接删除。
_RegKey.CreateSubKey(p_FileTypeName); //创建
_VRPkey = _RegKey.OpenSubKey(p_FileTypeName, true); //打开类型键值
_VRPkey.SetValue("", t_String); //设置类型代号
_VRPkey = _RegKey.OpenSubKey(t_String, true);
if (_VRPkey != null)
_RegKey.DeleteSubKeyTree(t_String); //原键值存在,直接删除。
_RegKey.CreateSubKey(t_String);
_VRPkey = _RegKey.OpenSubKey(t_String, true);
_VRPkey.SetValue("", t_Name); //设置类型名称
_VRPkey.CreateSubKey("shell");
_VRPkey = _VRPkey.OpenSubKey("shell", true); //写入必须路径
_VRPkey.CreateSubKey("open");
_VRPkey = _VRPkey.OpenSubKey("open", true);
_VRPkey.CreateSubKey("command");
_VRPkey = _VRPkey.OpenSubKey("command", true);
string _PathString = "\"" + p_Filename + "\" \"%1\""; //设置对应可执行文件
_VRPkey.SetValue("", _PathString);
_VRPkey = _RegKey.OpenSubKey(t_String, true);
_VRPkey.CreateSubKey("DefaultIcon");
_VRPkey = _VRPkey.OpenSubKey("DefaultIcon", true);
_VRPkey.SetValue("", p_FileIcon); //设置默认图标
}