C#添加系统自定义右键菜单

发布时间:2021-12-09编辑:佚名阅读(2449)

意图:在 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(); 
}


  关键字:C#添加系统自定义右键菜单


鼓掌

0

正能量

0

1

呵呵

0


评论区