作为一名即将开学的计算机系 准大学生,笔记本电脑总归是要有一台的。于是上星期我入手了 小米游戏本顶配版(i7-8750H + 16G + GTX 1066),最近正在重新折腾开发环境,这篇文章要解决的问题也是在此过程中出现的。

至于为什么要买小米的本子,主要是因为它的「游戏本性能 + 商务本外观」这一点正戳中我好球区。不过这几天使用下来,只能说缺点确实不少,有购买意愿的朋友需谨慎。在 Twitter 上搜索 小米游戏本 from:printempw 就能看到我发的吐槽简评,如果之后有时间的话也打算专门写篇评测(咕咕咕)。

回到正题。因为以前家里的电脑是全家共用的所以没什么,不过最近有了自己的电脑,我的软件洁癖就上来了:有绿色版(便携软件,Portable Application)的绝不用安装版,国产软件一律扔沙盒运行。

看起来有点偏执,不过我就属于那种想把自己设备中的一切纳入可控范围内的人。Windows 在这点上就很讨厌,尤其是注册表的设计,比类 Unix 系统难管理了不是一点半点。在手机上也是一样,不能解锁 bootloader 的 Android 机器我绝对不会购买,AppOps、Magisk、存储重定向 等工具更是必备。虽然我也没偏执到「每条指令运行都需要我的许可」那种程度,不过至少,我的设备必须听我的话,我说什么不能做那就是不能做,你他娘的不能给我自作主张(比如 Windows 广受诟病的自动更新机制、某些臭名昭著的国产软件扫描用户硬盘等)。为什么?因为是我在用电脑,不是电脑用我。

好了言归正传(没错,本博客就是有在进入正题之前瞎扯一通的习惯)。

Notepad++ 是一款我很喜欢的文本编辑器,除了写代码和写文章外的一般文本编辑工作我都是使用它完成的,配置新电脑时自然不能少了它。我下载的是 Portable 便携版,不过也正因如此,原本在 Installer 中通过选项可以添加的 Edit with Notepad++ 右键菜单项也没有了(此操作需要写注册表)。

因为这个右键菜单还蛮好用的,所以我打算把它找回来。

方法一:使用官方提供的 NppShell.dll

此方法来自 Notepad++ 的官方 Wiki(见底部参考链接)。

添加右键菜单项需要修改注册表,除了手动修改注册表,Notepad++ 官方还提供了一个 DLL 文件用于注册以及卸载右键菜单。如果你使用的是安装版,那么在程序目录下应该会有一个 NppShell_06.dll 文件(不同版本下文件名中的数字可能会不同);如果没有或者是便携版,那么请在这里下载该文件:

https://github.com/notepad-plus-plus/notepad-plus-plus/tree/master/PowerEditor/bin

上面的地址是 Notepad++ 官方 GitHub 仓库中提供的预编译 DLL,32 位系统的用户请下载 NppShell.dll,64 位系统的请下载 NppShell64.dll。不要吐槽为啥这文件四年没更新了,因为人家确实是四年没更新了,Wiki 原文中提供的链接还是八年前的呢(笑)。

下载后,打开一个具有管理员权限的 cmd.exe 或者 PowerShell,cd 到 Notepad++ 的安装目录(直接指定 DLL 的绝对路径是没用的,必须在程序目录下运行),并运行如下命令(文件名自行替换):

regsvr32 /i NppShell64.dll

运行后会弹出一个对话框,直接点 OK 就可以了。

如果没给管理员权限,会报错「模块 NppShell64.dll 已加载,但对 DllRegisterServer 的调用失败」。

如果要删除右键菜单,请运行:

regsvr32 /u NppShell64.dll

如果你不会运行这些命令也没事,将以下内容使用记事本保存为 .bat 文件,放到 Notepad++ 的安装目录下,右键「以管理员身份运行」即可(此脚本修改自:Notepad++ 添加右键打开菜单 - 成功志)。

@Echo Off
cd /d %~dp0
title Notepad++ 右键菜单添加/删除工具SetLocal EnableDelayedExpansion
echo 1. 添加 Notepad++ 右键菜单
echo ------------------------
echo 2. 删除 Notepad++ 右键菜单
echo ------------------------Set /p u=请输入数字并按 Enter 确定:If "%u%"=="1" Goto regnpp
If "%u%"=="2" Goto unregnpp:regnpp
regsvr32 /i NppShell64.dll
exit:unregnpp
regsvr32 /u NppShell64.dll
exit

方法二:手动修改注册表

如果你不想用上面的那个方法,也可以自己手动修改注册表。

修改注册表添加右键菜单项有两种方法,这里先介绍简单点的方法。

将以下内容保存为 .reg 文件,双击运行即可(其中可执行文件路径和菜单项名称请自行替换):

Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\*\shell\NotePad++]
@="Edit with &Notepad++"
"Icon"="C:\\Portable\\notepad-pp\\notepad++.exe"[HKEY_CLASSES_ROOT\*\shell\NotePad++\Command]
@="C:\\Portable\\notepad-pp\\notepad++.exe \"%1\""

如果要删除右键菜单,也是一样的道理:

Windows Registry Editor Version 5.00[-HKEY_CLASSES_ROOT\*\shell\NotePad++]

方法三:手动修改注册表 - 使用 Context Menu Handler

Windows 下添加项目至文件的右键菜单有两种方式,一种是上面提到的直接往注册表 HKEY_CLASSES_ROOT\{file_type}\shell 里面加东西,另外一种更牛逼一点,需要注册 Context Menu Handlers。

怎么个牛逼法呢?简单来说,Windows 会在显示右键菜单之前调用注册的 handler,handler 可以动态地修改右键菜单的内容,从而实现更加灵活的自定义,而不像上一种方法那样只能写死(比如说各种压缩软件在不同文件上的右键菜单项文本都是不同的)。有兴趣的同学可以去看看 MSDN 文档(反正我对 Win32 开发是没兴趣,不仅文档繁杂,Windows 的注册表也让我很讨厌,看着就烦)。

回到正题。开头提到的 NppShell.dll 也是使用 Context Menu Handler 实现的,我从 源码 里把其添加的注册表项扒出来了,使用方法和上一节一样(如果你是 32 位的系统,请将下面的 {B298D29A-A6ED-11DE-BA8C-A68E55D89593} 替换为 {00F3C2EC-A6EE-11DE-A03A-EF8F55D89593}):

Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\CLSID\{B298D29A-A6ED-11DE-BA8C-A68E55D89593}]
@="ANotepad++64"[HKEY_CLASSES_ROOT\CLSID\{B298D29A-A6ED-11DE-BA8C-A68E55D89593}\InprocServer32]
@="C:\\Portable\\notepad-pp\\notepad++.exe"
"ThreadingModel"="Apartment"[HKEY_CLASSES_ROOT\CLSID\{B298D29A-A6ED-11DE-BA8C-A68E55D89593}\Settings]
"Title"="Edit with &Notepad++"
"Path"="C:\\Portable\\notepad-pp\\notepad++.exe"
"Custom"=""
"ShowIcon"=dword:00000001
"Dynamic"=dword:00000001
"Maxtext"=dword:00000019[HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\ANotepad++64]
@="{B298D29A-A6ED-11DE-BA8C-A68E55D89593}"

如果你要删除右键菜单,同理:

Windows Registry Editor Version 5.00[-HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\Notepad++64]
[-HKEY_CLASSES_ROOT\CLSID\{B298D29A-A6ED-11DE-BA8C-A68E55D89593}]

方法四:使用「发送到」快捷方式

看到这里,有些人可能会吐槽:你这都改注册表了,还绿色软件个毛线啊!

呃,好吧,无法反驳。?

对于那些不愿意修改注册表,又想通过右键菜单便捷打开 Notepad++ 的选手,这里有一个不错的方法:使用 Windows 自带的「发送到」功能。

首先在资源管理器的地址栏中输入 shell:sendto 并回车,你会被重定向至 C:\Users\{username}\AppData\Roaming\Microsoft\Windows\SendTo 目录。在此目录下建立一个到 notepad++.exe的快捷方式,你就可以通过右键菜单中的「发送到」实现同样的功能。

虽然比直接添加右键菜单要多操作一步,不过我倒觉得这样更简单优雅。另外,这一技巧也同样适用于其他应用程序,大家可以记一下哦。;)

总结

我对 Win32 开发不熟,上面那些都是现学现卖的,如有口胡还请告知。

参考链接:

  • Adding Notepad++ to the context menu of the Windows file manager
  • 给 Notepad++ 加右键菜单带图标
  • 为 Notepad++ 添加带图标的右键菜单
  • notepad-plus-plus/PowerEditor/src/tools/NppShell/src/NppShell.cpp
  • 檔案總管右鍵選單開啟免安裝版 Notepad++

以上。

原文链接  https://blessing.studio/add-notepad-plus-plus-to-context-menu/   侵删  向原作致敬

添加 Notepad++ 至右键菜单的几种方法相关推荐

  1. Windows注册表内容 及添加notepad++到右键菜单

    文章目录 1.下载notepad++包 2.添加至注册表 给快捷方式添加图标 指定快捷方式的运行路径程序 设置完成,右键多了notepad++菜单选项 3.其他的注册表设置-个性化设置 最近使用not ...

  2. 将Sublime Text 添加到鼠标右键菜单的教程方法

    安装notepad++软件,在菜单右键自动会添加"edit with notepad++"的选项,那么怎么将Sublime Text 添加到鼠标右键菜单呢?下面是我的操作过程,希望 ...

  3. 将uglifyjs添加到鼠标右键菜单

    之前几天根据YUICompressor和TBCompressor整合到鼠标右键菜单自己将uglifyjs也添加到了右键菜单,下面简单记录下过程.效果如下 uglifyjs添加到鼠标右键菜单 配置win ...

  4. 如何将VSCode添加到鼠标右键菜单

    Windows上面安装Visual Studio Code编辑器,常常会因为安装的时候忘记勾选等原因,没有将"Open with Code(右键快捷方式)"添加到鼠标右键菜单里,使 ...

  5. 将Sublime Text添加到鼠标右键菜单

    操作步骤与 将VSCode添加到鼠标右键菜单 基本一样,多多看看这个教程基本上就可以操作成功了.但是要注意修改好打开名称,也就是将"Open with code"修改为" ...

  6. windows系统如何将 CMD(命令提示符)添加到鼠标右键菜单

    您可以通过以下步骤将 CMD(命令提示符)添加到鼠标右键菜单: 1. 打开注册表编辑器.按下 `Win + R` 组合键,然后键入 `regedit` 并按下 Enter 键. 2. 导航到注册表路径 ...

  7. java excel 数据有效性_Excel设置数据有效性实现单元格下拉菜单的3种方法

    Excel设置数据有效性实现单元格下拉菜单的3种方法 一.直接输入: 1.选择要设置的单元格,譬如A1单元格: 2.选择菜单栏的"数据"→"有效性"→出现&qu ...

  8. 设置数据有效性实现单元格下拉菜单的3种方法

    设置数据有效性实现单元格下拉菜单的3种方法 一.直接输入:     1.选择要设置的单元格,譬如A1单元格:     2.选择菜单栏的"数据"→"有效性"→出现 ...

  9. WIN7桌面右键菜单不消失问题解决方法

    WIN7桌面右键菜单不消失问题解决方法 这几天给电脑(ASUS笔记本)重装了操作系统,装驱动时没有多考虑,把官方提供的驱动盘里的驱动都装上了,刚开始没有什么问题,这两天不知道怎么回事,有时候右键菜单会 ...

最新文章

  1. 网络营销外包下字节跳动如此优秀私有市场估值远超拼多多与京东
  2. RocketMQ:NameServer架构设计以及启动关闭流程源码分析
  3. Android Studio 约束布局[ConstraintLayout]
  4. 开源 免费 java CMS - FreeCMS1.9 移动APP管理 执行配置
  5. MFC CStringArray 字符串数组类 使用方法
  6. JavaScript DOM编程艺术(第2版) 笔记
  7. 北理在线作业答案c语言,北理工19春《面向对象程序设计》在线作业【标准答案】...
  8. 利用python进行数据分析之准备工作(1)
  9. Diccuz!NT的dll版本号控制技巧
  10. 简单说说我对几位认识的号主的印象
  11. 12-13 库存信息管理系统
  12. 《Bible》各版本
  13. 元器件(Components)安规标准(UL+IEC)
  14. 关于APP 内涉及用户个人敏感信息/权限的进一步整改
  15. 操作系统抖动现象、网络抖动与延迟、函数抖动之防抖与节流
  16. 机器学习的前世今生:一段波澜壮阔的历史
  17. 无线网络CSMA/CA原理分析以及相关技术的介绍和分析
  18. 原生js代码实现图片放大境效果
  19. 解决无法使用IMAP将Gmail帐户添加到Outlook的问题
  20. 专转本就业歧视怎么消除_人工智能可以帮助消除歧视

热门文章

  1. 电信 PK 网通 【 用户成为棋子 】
  2. 2021桂林市高考一调成绩查询,2021年广西桂林市高考生物一调试卷.docx
  3. milvus问答系统部署
  4. css内容超出滚动条 横向滑动导航overflow
  5. linux防火墙_硬件防火墙和软件防火墙的区别有哪些?
  6. CreateFile详解
  7. halcon ABB机械手 手眼标定
  8. macOS上如何通过iCloud Drive便利地同步文稿
  9. [半监督学习] Teacher-Student Learning Paradigm for Tri-training
  10. 语音信号处理(DSP)论文优选:Interactive Modeling for Speech Enhancement