您的位置:首页 > 编程语言 > C#

C# 如何在 Windows 文件系统中添加自定义右键菜单

2013-11-16 09:51 1131 查看
Healthy (2011) http://blog.sina.com.cn/s/blog_752ca76a0100y5yv.html (Available at 2013/11/16)

意图:在 Windows 文件系统中添加自定义的右键菜单项。
方法:通过改写注册表实现

  一、给所有类型的文件添加自定义的右键菜单

  HKEY_CLASSES_ROOT\*\shell  

        HKEY_CLASSES_ROOT\*\shell\自定义的菜单名

        HKEY_CLASSES_ROOT\*\shell\自定义的菜单名\command

          值名称:(默认)     类型:REG_SZ      数据:关联程序的完全限定名称

  二、给所有文件夹添加自定义的右键菜单

    HKEY_CLASSES_ROOT\Directory\shell

        HKEY_CLASSES_ROOT\Directory\shell\自定义的菜单名  

        HKEY_CLASSES_ROOT\Directory\shell\自定义的菜单名\command

          值名称:(默认)     类型:REG_SZ      数据:关联程序的完全限定名称

实现:C# WinForm 
using Microsoft.Win32;
private void AddFileContextMenuItem(string itemName, string associatedProgramFullPath)
{
//创建项:shell
RegistryKey shellKey = Registry.ClassesRoot.OpenSubKey(@"*\shell",true);
if (shellKey == null)
{
shellKey = Registry.ClassesRoot.CreateSubKey(@"*\shell");
}

//创建项:右键显示的菜单名称
RegistryKey rightCommondKey = shellKey.CreateSubKey(itemName);
RegistryKey associatedProgramKey= rightCommondKey.CreateSubKey("command");

//创建默认值:关联的程序
associatedProgramKey.SetValue(string.Empty, associatedProgramFullPath);

//刷新到磁盘并释放资源
associatedProgramKey.Close();
rightCommondKey.Close();
shellKey.Close();
}

private void AddDirectoryContextMenuItem(string itemName, string associatedProgramFullPath)
{
//创建项:shell
RegistryKey shellKey = Registry.ClassesRoot.OpenSubKey(@"directory\shell", true);
if (shellKey == null)
{
shellKey = Registry.ClassesRoot.CreateSubKey(@"*\shell");
}

//创建项:右键显示的菜单名称
RegistryKey rightCommondKey = shellKey.CreateSubKey(itemName);
RegistryKey associatedProgramKey = rightCommondKey.CreateSubKey("command");

//创建默认值:关联的程序
associatedProgramKey.SetValue("", associatedProgramFullPath);

//刷新到磁盘并释放资源
associatedProgramKey.Close();
rightCommondKey.Close();
shellKey.Close();
}

Reference: http://msdn.microsoft.com/en-us/library/cc144148(VS.85).aspx
【正文结束】
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  系统右键菜单