1.改写注册表,并将工程属性改成以管理员身份运行。具体方式:在工程的properties上右击,打开,点击属性窗口左侧的“安全性”,勾选右侧的“启动ClickOnce安全设置”,就会在Properties目录下出现app.manifest文件,将里面的“”改成“ ”。再将“启动ClickOnce安全设置”上的勾选去掉,即可。此时,生成的exe上会出现一个以管理员身份运行的图标,双击exe将自动以管理员身份运行。
这样做右击一个文件,是能用自己的应用程序打开该文件的,但出现右击多个exe,就会出现问题。
private bool RegisterRightMenu()
{
try
{
RegistryKey shellKey = Registry.ClassesRoot.OpenSubKey(@”*\shell”,
RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl);
if (shellKey == null)
shellKey = Registry.ClassesRoot.CreateSubKey(@”*\shell”);
//创建项:右键显示的菜单名称
RegistryKey rightCommondKey = shellKey.CreateSubKey(“资源拷贝工具(” + Application.ProductVersion + “)”);
RegistryKey associatedProgramKey = rightCommondKey.CreateSubKey(“command”);

            //创建默认值:关联的程序//associatedProgramKey.SetValue(string.Empty, Process.GetCurrentProcess().MainModule.FileName + " %1");associatedProgramKey.SetValue(string.Empty, Process.GetCurrentProcess().MainModule.FileName + " %1");//associatedProgramKey.SetValue(string.Empty, @"F:\engeneer\x51_8796\exe\资源拷贝工具\ResCopyTool.exe %1");//刷新到磁盘并释放资源associatedProgramKey.Close();rightCommondKey.Close();shellKey.Close();RegistryKey shellKey1 = Registry.ClassesRoot.OpenSubKey(@"directory\shell",RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl);if (shellKey1 == null)shellKey1 = Registry.ClassesRoot.CreateSubKey(@"directory\shell");//创建项:右键显示的菜单名称RegistryKey rightCommondKey1 = shellKey1.CreateSubKey("资源拷贝工具(" + Application.ProductVersion + ")");RegistryKey associatedProgramKey1 = rightCommondKey1.CreateSubKey("command");//创建默认值:关联的程序associatedProgramKey1.SetValue(string.Empty, Process.GetCurrentProcess().MainModule.FileName + " %1");//刷新到磁盘并释放资源associatedProgramKey1.Close();rightCommondKey1.Close();shellKey1.Close();return true;}catch (Exception e){Outputs.WriteLine(OutputMessageType.Error, "设置右键菜单失败:" + e.Message);return false;}}private bool UnRegisterRightMenu(){try{RegistryKey shellKey = Registry.ClassesRoot.OpenSubKey(@"*\shell",RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl);if (shellKey == null)shellKey = Registry.ClassesRoot.CreateSubKey(@"*\shell");shellKey.DeleteSubKey("资源拷贝工具(" + Application.ProductVersion + ")\\command");shellKey.DeleteSubKey("资源拷贝工具(" + Application.ProductVersion + ")");//刷新到磁盘并释放资源shellKey.Close();RegistryKey shellKey1 = Registry.ClassesRoot.OpenSubKey(@"directory\shell",RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl);if (shellKey1 == null)shellKey1 = Registry.ClassesRoot.CreateSubKey(@"directory\shell");shellKey1.DeleteSubKey("资源拷贝工具(" + Application.ProductVersion + ")\\command");shellKey1.DeleteSubKey("资源拷贝工具(" + Application.ProductVersion + ")");shellKey1.Close();return true;}catch (Exception e){Outputs.WriteLine(OutputMessageType.Error, "设置右键菜单失败:" + e.Message);return false;}}

2.查询右键菜单是否有这一项,通过查询注册表:
private bool GetIsAddRightMenu()
{
RegistryKey shellKey = Registry.ClassesRoot.OpenSubKey(@”*\shellex”,
RegistryKeyPermissionCheck.ReadSubTree, System.Security.AccessControl.RegistryRights.ReadKey);
if (shellKey == null)
return false;
else
{
RegistryKey rightMenuKey = shellKey.OpenSubKey(“ContextMenuHandlers”);
if (rightMenuKey == null)
{
return false;
}
else
{
RegistryKey resCopyToolKey = rightMenuKey.OpenSubKey(“ResCopyToolExtension”);
if (resCopyToolKey == null)
{
return false;
}
else
{
resCopyToolKey.Close();
}
rightMenuKey.Close();
}
shellKey.Close();
}
return true;
}
3.另一种修改右键菜单的方法:

C# 右键菜单注册表改写相关推荐

  1. 如何卸载ultraedit_UltraEdit_右键菜单注册及删除

    添加至右键菜单: 有些版本的 UltraEdit 安装好之后,缺少一个比较方便的功能:无法选择某个文本文件 用右键选择 UltraEdit 打开.仔细查看注册表,发现把下面内容加入注册表即可: 创建 ...

  2. Bandizip便携版右键菜单注册

    前言 之前安装过Bandizp,但是重装系统后,便携版的程序并没有添加右键菜单. 办法 下载Bandizip安装包,点我下载 下载便携版,点我下载 进入便携版所在目录,先修改config.ini中的i ...

  3. win7下的添加自定义右键功能 注册表文件

    直接按(windows微标+r)键盘,出来运行程序的窗口,输入regedit,如今注册表程序窗口后,进入如下路径,如果不存在就新建一个. HKEY_CLASSES_ROOT\*\shell *是一个路 ...

  4. 如何将Notepad++设置到鼠标右键(注册表)里去

    如何将Notepad++设置到鼠标右键里去 步骤一:将下载好的Notepad++软件安装好之后,按 win + R 打开运行输入 regedit 打开注册表编辑器 依次进入 HKEY_CLASSES_ ...

  5. Electron-vue开发实战7——命令行调用与系统级别右键菜单项的实现

    原文首发在我的博客,欢迎关注! 前言 前段时间,我用electron-vue开发了一款跨平台(目前支持主流三大桌面操作系统)的免费开源的图床上传应用--PicGo,在开发过程中踩了不少的坑,不仅来自应 ...

  6. Windows 定制右键菜单

    Windows 定制右键菜单 Windows的右键快捷菜单是个非常方便的东西.但有时候因为安装程序过多,所以右键菜单过于冗余.有的时候有需要自定义一些新的右键菜单项,因此我们需要了解右键菜单的知识. ...

  7. 360压缩没有系统右键菜单或提示右键损坏

    360压缩软件在安装后或者使用一段时间后,在文件或者文件夹上点击鼠标右键,弹出的系统右键菜单中可能出现没有(360压缩]的相关选项菜单.此问题一般有2个原因: 第一个是:[360压缩]软件对应的右键菜 ...

  8. 注册表修改右键快捷方式

    注册表修改右键快捷方式 注册表打开命令 regedit 注册表目录说明 右键打开文件 计算机\HKEY_CLASSES_ROOT*\shell\ 右键打开文件夹 计算机\HKEY_CLASSES_RO ...

  9. 第N次重装系统之win10注册表

    前言 因为某次想要修改注册表,结果把整个系统都搞坏了,只好再次咬牙重装.庸人一个,发狠之下,便有了此文. 先说一些相关的文案知识,接着附上我的一些改动和应用,类似右键获取文件名.修改软件默认盘.修改右 ...

最新文章

  1. Windows azure国际版下通过 windows auzre powershell为VM分配绑定virtual ip address
  2. $.post()提交了数据,return不给跳转
  3. emplace_back和push_back区别
  4. 微信小程序滚动条返回顶部
  5. LeetCode – Refresh – Exceel Sheet Column Number
  6. 关于PV,流量和带宽
  7. php算法-输出100以内能被3整除的整数
  8. 英雄无敌3_经典地图_下载
  9. 朱嘉明《火药:改变了人类历史演变模式》
  10. 如何高效阅读一篇英文学术类论文?
  11. js判断上传文件为图片格式、excel格式
  12. 51单片机串口通信的程序实现与Proteus仿真
  13. NLP自然语言处理CRF详解
  14. python做相册_用Python和Conky做个电子相册,美化你的Linux桌面
  15. Adobe Premiere Pro 2020 入门教程(三)首选项和快捷键的设置
  16. 中美老太太第二次对话
  17. 如何下载Jason2测高数据
  18. spring之AOP(面向切面编程)和五大通知(前置通知、后置通知、异常通知、环绕通知、过滤通知)
  19. 7个跑步易犯的错误和解决办法
  20. 给大家分享一款由Java+MYSQL搭建的外卖跑腿小程序源码

热门文章

  1. 讯搜问题排查xunsearch
  2. GT工具中用到的英文词解释
  3. LeetCode Find Minimum in Rotated Sorted Array
  4. 如何将手机投屏到windows10上?
  5. DAY29(DAY30拓展):Vulnhub--靶机实战
  6. python制作天气预报软件(UI界面)
  7. 强哥语录摘抄(郑强教授)
  8. 中图法检索计算机科学方面,信息检索 第一次上机答案lpar;南通大学rpar;
  9. stm32(声音传感器控制LED)
  10. dtoj#4259. 越野赛车问题