C# 添加windows右键菜单
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace Sci
{public class RegistryTool{#region 添加自定义右键菜单/// <summary>/// 在widows系统中为指定类型的文件或文件夹,添加自定义右键菜单/// </summary>/// <param name="fileExten">文件拓展名如:".txt" 为所有类型的文件添加为 "*" </param>/// <param name="menuId">内部id</param>/// <param name="menuName">显示名称</param>/// <param name="exePath">发送命令到指定的exe</param>/// <param name="callBackArg">标识当前菜单项的自定义参数</param>/// <param name="isDirectory">是否为文件夹</param>public static void AddWindowsContextMenu(string fileExten, string menuId, string menuName, string exePath, string callBackArg = null, bool isDirectory = false){exePath = "\"" + exePath +"\"";string shellPath = (isDirectory ? "Directory" : fileExten) + @"\shell\"; // 为指定类型的文件添加右键shell菜单,或为文件夹添加右键菜单RegistryKey shellSet = GetSubKey(Registry.ClassesRoot, shellPath, true); //Registry.ClassesRoot.OpenSubKey(shellPath, true);//if (shellSet == null)//{// Registry.ClassesRoot.CreateSubKey(shellPath);// shellSet = Registry.ClassesRoot.OpenSubKey(shellPath, true);//}RegistryKey menuSet = GetSubKey(shellSet, menuId, true); // 创建Menu菜单项if (!menuSet.GetValue("", "").ToString().Equals(menuName)) menuSet.SetValue("", menuName); // 菜单项显示名称if (!menuSet.GetValue("icon", "").ToString().Equals(exePath)) menuSet.SetValue("icon", exePath); // 菜单项显示图标RegistryKey commandSet = GetSubKey(menuSet, "command", true); // 添加command命令Setstring commandInfo = exePath + (callBackArg == null ? "" : (" \"" + callBackArg + "\" ")) + " \"%1\""; // %1为系统传递的文件或文件夹完整路径信息if (!commandSet.GetValue("", "").ToString().Equals(commandInfo)) commandSet.SetValue("", commandInfo); // 添加命令内容}/// <summary>/// 从curKeySet下获取subkey/// </summary>/// <param name="curKeySet"></param>/// <param name="subKey"></param>/// <param name="autoCreate">不存在时是否创建</param>/// <returns></returns>private static RegistryKey GetSubKey(RegistryKey curKeySet, string subKey, bool autoCreate = false){RegistryKey subSet = curKeySet.OpenSubKey(subKey, true);if (subSet == null && autoCreate) subSet = curKeySet.CreateSubKey(subKey);return subSet;}/// <summary>/// 示例:为所有类型文件以及文件夹,添加系统右键shell菜单/// </summary>public static void AddContextMenu(string exePath){string ToolName = "ContextIteamName";//string exePath = Application.ExecutablePath;// 为所有类型的文件添加 系统菜单RegistryTool.AddWindowsContextMenu("*", ToolName, "自定义右键菜单1", exePath, null);// 为文件夹添加 系统菜单RegistryTool.AddWindowsContextMenu(null, ToolName, "自定义右键菜单1", exePath, null, true);}#endregion}
}
C# 添加windows右键菜单相关推荐
- window如何将CMD以管理员身份添加到右键菜单?
参考文章:怎么将cmd以管理员身份运行添加到右键菜单 新建txt文件,输入: Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\Direct ...
- 如何在 Windows 右键菜单中新建自己想要的文件格式
文章目录 一.增加右键新建菜单文件类型 1.打开注册表 2.选择注册表项 3.新建项 4.新建字符串值 5.看效果 二.修改新建文件默认文件名 1.选择注册表项 2.设置表项 一.增加右键新建菜单文件 ...
- Windows 右键菜单扩展
右键菜单,指用户在对Windows Shell Object右键单击时,弹出的上下文菜单(Context Menu). 如上图所示的对右键菜单进行扩展,属于Windows Shell Extensio ...
- 如何将一个Python脚本加入Windows右键菜单?
一.背景 因为APP的日志都是经过加密处理了,所以每次如果要分析日志的话,得先将加密的日志文件进行解密. 而解密的脚本是用python写的,每次要解密一个文件 都需要在cmd目录下敲python目录来 ...
- VB添加IE右键菜单等
/-------------------------------------------------- '*************************************** 'IE工具栏按 ...
- 【创建Windows右键菜单折叠】
创建Windows右键菜单折叠 创建Windows右键菜单折叠 具体是使用了Windows注册表的SubCommands指令 参考 创建Windows右键菜单折叠 经常会发现windows里面右键菜单 ...
- Notepad++添加到右键菜单中的解决方案
本文介绍将Notepad++下载到电脑后,右键菜单打开没有notepad++编辑选项的问题并且将其添加到右键菜单当中. 这是一键式直接写入注册表,将内容先复制到一个txt文件中,然后修改后缀名为reg ...
- WinForm -- 为TextBox文本框添加鼠标右键菜单
WinForm -- 为TextBox文本框添加鼠标右键菜单 1. 新建一个WinForm项目,放置一个TextBox控件 2. 从工具箱拖进来一个ContextMenuStrip 3. 将TextB ...
- [html] 如何给页面添加追加右键菜单(原右键菜单功能保持不变)
[html] 如何给页面添加追加右键菜单(原右键菜单功能保持不变) 监听oncontextmenu,在系统右键菜单下追加自定义菜单 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚 ...
- Beyond Compare 3 中文版的安装注册及添加到右键菜单
Beyond Compare 3 中文版的安装和注册 安装过程在网上都可以搜到,因为比较简单,这里就不再啰嗦了. 对于注册的过程,大家打开BCompare工具之后,点击菜单栏中的"帮助&qu ...
最新文章
- 分布式系统 一致性模型的介绍 以及 zookeeper的 “线性一致性“ 讨论
- 模拟浏览器的神器 - HtmlUnit
- openwrt 遍译php_完全新手教程:编译openwrt全过程
- 经验教训 | STM32 异常之BFARVALID,PRECISERR,INVSTATE
- 【背包】作业(jzoj 1986)
- python rowcount_PyQt(Python+Qt)学习随笔:QTableWidget的currentItem、rowCount、columnCount等部件状态属性访问方法...
- jQuery教程04-jQuery_this选择器
- 特别好看的一个多接口api的图床源码
- poj 1986 Distance Queries LCA
- 最低什么样的学历,才可以选择转行web前端?
- Linux Namespace机制简介
- 如何安装python3.8.2_Python 3.8.2详细图文安装教程(附安装包)
- 关于为什么10000000可以表示-128
- 用java求解八枚银币问题_算法笔记_004:8枚硬币问题【减治法】
- 未检测到ca设备或ca驱动异常_安川伺服驱动器SGDV报警原因及处理措施
- android 播放gif会闪,android 播放gif动图
- Linux安装glassfish、利用glassfish部署应用
- 基于 CSS3 的下一代 Web 应用开发,第 1 部分: 发展历史及新特性
- accept函数的参数不是随便填的
- 实习之路0--设计模式之策略模式的理解(鸭子类例子)