意图:在 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
加载中,请稍候......