前言
因为某次想要修改注册表,结果把整个系统都搞坏了,只好再次咬牙重装。庸人一个,发狠之下,便有了此文。
先说一些相关的文案知识,接着附上我的一些改动和应用,类似右键获取文件名、修改软件默认盘、修改右键新建菜单等。
注意所有的reg文件都是ansi编码的!!!
文案知识
HKEY_CLASSES_ROOT\*\shell
和HKEY_CLASSES_ROOT\*\shellx
放置了右键菜单的地方,看看有哪些是自己安装的软件带来的,看名字挑着没用的就能删除了。
这里提醒一句,看见键名称是一串序列号的,请仔细核对后,确认不是系统项再删除。用这种长传数字当名字的键,如果里面空空如也,那很有可能是系统项。
文件夹分为两类菜单
-
一类是鼠标指向一个文件夹图标时,点击右键出来的菜单;
在 Directory 下,shell和shellex\ContextMenuHandlers 里面
-
第二类菜单是鼠标在已经打开的文件夹窗口的空白处,点击右键弹出的菜单。
在子项 Background 里面。
打开组策略和注册表
#唤出运行窗口
win+R
#组策略
regedit
#注册表
gpedit.msc
注册表根键说明
-
hkey_classes_root
包含注册的所有OLE信息和文档类型,是从hkey_local_machine\software\classes
复制的。 -
hkey_current_user
包含登录的用户配置信息,是从hkey_users\
当前用户子树复制的。 -
hkey_local_machine
包含本机的配置信息。其中config子树是显示器打印机信息; enum子树是即插即用设备信息;system子树是设备驱动程序和服务参数的控制集合;software子树是应用程序专用设置。 -
hkey_users
所有登录用户信息。 -
hkey_current_config
包含常被用户改变的部分硬件软件配置,如字体设置、显示器类型、打印机设置等。是从hkey_local_machine\config
复制的。 -
hkey_dyn_data
包含现在计算机内存中保存的系统信息。
应用
加快菜单显示速度
修改HKEY_CURRENT_USER\Control Panel\Desktop
,将字符串值MenuShowDelay
的数值数据更改为[0],调整后如觉得菜单显示速度太快而不适应者可将[MenuShowDelay]的数值数据更改为[200],重新启动即可
参考风之悦的博客有注册表的应用,需要的小伙伴可以自行查看
再参考这篇CSDN的Windows自定义右键菜单步骤更详细一些
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Control Panel\Desktop]
"MenuShowDelay"="0"
右键获取文件名
主要是做博客的时候有这个需要,一直都是“重命名-->Ctrl+A-->Ctrl+C-->切换后Ctrl+V”几次还行,多次之后就烦了。
于是想要在右键菜单里加入一个复制当前文件(夹)的选项。
经过搜集和整理后发现了两个方法,大家按需选择。
方法一需要两个小工具,但是可以获得后缀名;方法二之需要一个小工具,但是不能获得后缀名。
方法一
需要下载小工具nircmd 和hideexec,请移步公众号**君匡
**(因为域名和服务器都会频繁改动,关注后取关也无妨的,/腼腆笑)
第一步,手动建立文件copyname.bat
,并把他放在路径C:\Users\Administrator\bat
。
nircmd clipboard set "%~nx1"
第二步,安装nircmd,解压后双击文件D:\Program Files\nircmd\x64\nircmd.exe
跳出一个对话框,选择Copy To Windows
,完成提示后,核对是否有C:\Windows\nircmd.exe
。
第三步,安装hideexec,把文件解压到D:\Program Files\
即可。
第四步,修改注册表
获取文件的路径需要去HKEY_CLASSES_ROOT\*\shell\
,获取文件夹的路径是需要去HKEY_CLASSES_ROOT\Directory\shell
进行,如果觉得手动修改比较复杂,你可以直接跳到Reg文件那里。
手动修改注册表
-
在shell文件夹上面右键,新建->项->copyname,修改copyname的默认值为
复制文件名
)
-
在copyname文件夹上面右键,新建->项->command
修改command的默认值为
"D:\Program Files\hideexec\bin.x86-64\hideexec.exe" "C:/Users/Administrator/bat/copyname.bat" "%1"
-
按SHIFT键时才显示(可选)
在shell文件夹上面右键,新建->字符串值->Extended
(值为空即可),效果如图:


配个图,明眼人都知道怎么一回事儿。
reg文件自动修改注册表
附上Reg文件,如果你觉得手动修改有些麻烦,而且前三步你是完全照着我的要求做的,那么可以直接运行我的reg脚本,在任何地方新建,用记事本打开,填入内容后保存,再用记事本修改文件编码为Ansi编码!!!
新建一个txt文本文件,文件名称随意,修改文件扩展名为.reg
即可,内容如下。
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\shell\copyname]
"icon"="C:\\Windows\\system32\\SHELL32.dll,68"
@="复制文件夹名"
[HKEY_CLASSES_ROOT\Directory\shell\copyname\command]
@="\"D:\\Program Files\\hideexec\\bin.x86-64\\hideexec.exe\" \"C:/Users/Administrator/bat/copyname.bat\" \"%1\""
[HKEY_CLASSES_ROOT\*\shell\copyname]
"icon"="C:\\Windows\\system32\\SHELL32.dll,68"
@="复制文件名"
[HKEY_CLASSES_ROOT\*\shell\copyname\command]
@="\"D:\\Program Files\\hideexec\\bin.x86-64\\hideexec.exe\" \"C:/Users/Administrator/bat/copyname.bat\" \"%1\""
保存后退出,双击打开 reg文件,选择确定即可。
方法二
注意:复制的文件名没有后缀!
第一步,建立脚本Bat文件
-
手动建立文件
copyfilename.bat
,并放到路径C:\Windows
里。
set/p"=%~n1"<nul |clip
-
手动建立文件
copydirectoryname.bat
,并放到路径C:\Windows
里。
set/p"=%~nx1"<nul |clip
第二步,建立脚本Reg文件
新建一个txt文本文件,文件名称随意,修改文件扩展名为.reg
即可,内容如下。
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\copyname]
"icon"="C:\\Windows\\system32\\SHELL32.dll,68"
@="复制文件名"
[HKEY_CLASSES_ROOT\*\shell\copyname\command]
@="\"D:\\Program Files\\hideexec\\bin.x86-64\\hideexec.exe\" \"C:/Windows/copyfilename.bat\" \"%1\""
[HKEY_CLASSES_ROOT\Directory\shell\copyname]
"icon"="C:\\Windows\\system32\\SHELL32.dll,68"
@="复制文件夹名"
[HKEY_CLASSES_ROOT\Directory\shell\copyname\command]
@="\"D:\\Program Files\\hideexec\\bin.x86-64\\hideexec.exe\" \"C:/Windows/copydirectoryname.bat\" \"%1\""
运行前,用记事本修改文件编码为Ansi编码!!!
右键复制文件路径
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Allfilesystemobjects\shell\windows.copyaspath]
"CanonicalName"="{707C7BC6-685A-4A4D-A275-3966A5A3EFAA}"
"CommandStateHandler"="{3B1599F9-E00A-4BBF-AD3E-B3F99FA87779}"
"CommandStateSync"=""
"Description"="@shell32.dll,-30336"
"Icon"="imageres.dll,-5302"
"InvokeCommandOnSelection"=dword:00000001
"MUIVerb"="@shell32.dll,-30329"
"VerbHandler"="{f3d06e7c-1e45-4a26-847e-f9fcdee59be0}"
"VerbName"="copyaspath"
Shift右键添加获取管理员权限
默认你已经看过了上面的内容,所以直接附上Reg文件内容了。
Windows Registry Editor Version 5.00
;取得文件修改权限
[HKEY_CLASSES_ROOT\*\shell\runas]
@="管理员权限"
"Extended"=" "
"Icon"="C:\\Windows\\System32\\imageres.dll,102"
"NoWorkingDirectory"=""
[HKEY_CLASSES_ROOT\*\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"
[HKEY_CLASSES_ROOT\exefile\shell\runas2]
@="管理员权限"
"Extended"=" "
"Icon"="C:\\Windows\\System32\\imageres.dll,102"
"NoWorkingDirectory"=""
[HKEY_CLASSES_ROOT\exefile\shell\runas2\command]
@="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"
[HKEY_CLASSES_ROOT\Directory\shell\runas]
@="管理员权限"
"Extended"=" "
"Icon"="C:\\Windows\\System32\\imageres.dll,102"
"NoWorkingDirectory"=""
[HKEY_CLASSES_ROOT\Directory\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t"
修改软件默认盘
平常安装的时候,都会是默认安装到C盘,于是我突发奇想,想使得安装的时候默认在D盘。可以用修改注册表的手段来实现。
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
修改ProgramFilesDir
和ProgramFilesDir (x86)
即可。
然后我就发现好多基础的功能不能够使用了!!!
比如说开始菜单里的IE就会自动的牵引到D盘路径里面,但是它实际是在安装系统的时候放到了C盘,我又不想要挨个整理开始菜单,于是我就又改回来了。
如果你是刚刚建立了新系统,可以这样子修改,如果已经用了一段时间,并不太建议。
附上reg文件如下。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion]
"ProgramFilesDir"="D:\\Program Files"
"ProgramFilesDir (x86)"="D:\\Program Files (x86)"
添加gitbash到桌面右键和文件夹右键
前提是我已经安装了git-bash并且所在位置为"D:\Program Files\Git\bin\bash.exe"
,如果不一致,请自行替换。
在文件夹内右键的路径需要去计算机\HKEY_CLASSES_ROOT\Directory\Background\shell
,在桌面右键的路径是需要去计算机\HKEY_CLASSES_ROOT\DesktopBackground\Shell
进行,如果觉得手动修改比较复杂,你可以直接跳到Reg文件那里。
进入注册表路径,在shell文件夹上面右键,新建->项->git-bash
-
指定图标:建立名为
Icon
的字符串,值为C:\Windows\system32\mmres.dll,4
-
放到顶部:建立名为
position
的字符串,值为top
-
指定路径:在git-bash文件夹上面右键,新建->项->command,修改默认值为
"D:\Program Files\Git\bin\bash.exe"
附上reg文件如下。
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Background\shell\git-bash]
"Icon"="C:\\Windows\\system32\\mmres.dll,4"
"position"="top"
"MUIVerb"="GitBash(&G)"
[HKEY_CLASSES_ROOT\Directory\Background\shell\git-bash\command]
@="\"D:\\Program Files\\Git\\bin\\bash.exe\""
自定义右键新建菜单
注册表路径为
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Discardable\PostSetup\ShellNew
但是一般来说,直接编辑保存会提示没有权限。
修改权限
在shell文件夹上面右键->权限->高级->禁用继承->将已继承的权限转换为此对象的显示权限
将两个管理员权限都改成读取,给当前用户取消完全控制权限,点击显示高级权限,新增修改和删除权限!!

修改classes项
原先是:
.bmp
.doc
.docx
.library-ms
.lnk
.ppt
.pptx
.rar
.rtf
.txt
.xls
.xlsx
.zip
Folder
可以删除原有的内容和排序,改成你想要的,比如我就是改成了这个样子。
Folder
.txt
.md
.docx
.xlsx
.pptx
但是修改保存后,发现还没有.md
的选项.原来是我还缺一步操作.
自定义选项
拿.txt做参考
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.txt]
"Content Type"="text/plain"
"PerceivedType"="text"
@="txtfile"
[HKEY_CLASSES_ROOT\.txt\PersistentHandler]
@="{5e941d80-bf96-11cd-b579-08002b30bfeb}"
[HKEY_CLASSES_ROOT\.txt\ShellNew]
"ItemName"=hex(2):40,00,25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,\
6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,\
00,6e,00,6f,00,74,00,65,00,70,00,61,00,64,00,2e,00,65,00,78,00,65,00,2c,00,\
2d,00,34,00,37,00,30,00,00,00
"NullFile"=""
分析后发现他里面有一项是@="txtfile"
,于是再去统计目录下发现项txtfile
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\txtfile]
@="Text Document"
"EditFlags"=dword:00210000
"FriendlyTypeName"=hex(2):40,00,25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,\
00,6f,00,6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,\
32,00,5c,00,6e,00,6f,00,74,00,65,00,70,00,61,00,64,00,2e,00,65,00,78,00,65,\
00,2c,00,2d,00,34,00,36,00,39,00,00,00
[HKEY_CLASSES_ROOT\txtfile\DefaultIcon]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,69,00,6d,00,\
61,00,67,00,65,00,72,00,65,00,73,00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,31,\
00,30,00,32,00,00,00
[HKEY_CLASSES_ROOT\txtfile\shell]
[HKEY_CLASSES_ROOT\txtfile\shell\open]
[HKEY_CLASSES_ROOT\txtfile\shell\open\command]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,4e,00,4f,00,\
54,00,45,00,50,00,41,00,44,00,2e,00,45,00,58,00,45,00,20,00,25,00,31,00,00,\
00
[HKEY_CLASSES_ROOT\txtfile\shell\print]
[HKEY_CLASSES_ROOT\txtfile\shell\print\command]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,4e,00,4f,00,\
54,00,45,00,50,00,41,00,44,00,2e,00,45,00,58,00,45,00,20,00,2f,00,70,00,20,\
00,25,00,31,00,00,00
[HKEY_CLASSES_ROOT\txtfile\shell\printto]
[HKEY_CLASSES_ROOT\txtfile\shell\printto\command]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,6e,00,6f,00,\
74,00,65,00,70,00,61,00,64,00,2e,00,65,00,78,00,65,00,20,00,2f,00,70,00,74,\
00,20,00,22,00,25,00,31,00,22,00,20,00,22,00,25,00,32,00,22,00,20,00,22,00,\
25,00,33,00,22,00,20,00,22,00,25,00,34,00,22,00,00,00
观察后总结,若是我要新增一个自定义的新建类型,必须要添加默认应用(typora)和默认类型(.md)两个项进去才可以。
于是就有了下面的精简版Reg文件。
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.md]
@="typora"
[HKEY_CLASSES_ROOT\.md\ShellNew]
"NullFile"=""
[HKEY_CLASSES_ROOT\typora]
@="Markdown"
"Icon"="\"D:\\Program Files\\Typora-便携-0.9.92\\Typora\\Typora.exe\""
"position"="top"
[HKEY_CLASSES_ROOT\typora\command]
@="\"D:\\Program Files\\Typora-便携-0.9.92\\Typora\\Typora.exe\""
效果如下:
去除多余导航
注册表路径如下。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\
对应的文件夹选项如下。
下载:088e3905-0323-4b02-9826-5d99428e115f
图片:24ad3ad4-a569-4530-98e1-ab02f9417aa8
音乐:3dfdf296-dbec-4fb4-81d1-6a3438bcf4de
文档:d3162b92-9365-467a-956b-92703aca08af
视频:f86fa3ab-70d2-4fc7-9c99-fcbf05467f3a
3D对象:0DB7E03F-FC29-4DC6-9020-FF41B59E513A
桌面:B4BFCC3A-DB2C-424C-B029-7FE99A87C641
直接附上Reg文件便是,Win10真的不会改呀。
Windows Registry Editor Version 5.00
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{088e3905-0323-4b02-9826-5d99428e115f}]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{24ad3ad4-a569-4530-98e1-ab02f9417aa8}]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{3dfdf296-dbec-4fb4-81d1-6a3438bcf4de}]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{d3162b92-9365-467a-956b-92703aca08af}]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{f86fa3ab-70d2-4fc7-9c99-fcbf05467f3a}]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{0DB7E03F-FC29-4DC6-9020-FF41B59E513A}]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}]
使用Bat脚本修改注册表
主要核心命令为:
-
reg query
-
reg del
-
reg add
使用这个方式,可以直接将java等环境变量一次性全安装到系统环境变量上!
echo off
::设置变量
set oldPath=
set JAVA_HOME="D:\all_sdk\Java\jdk1.8.0_201"
set MVN_HOME="D:\all_sdk\apache-maven-3.6.0"
set Android_SDK="D:\all_sdk\Android_SDK\platform-tools"
set NODE_HOME="D:\all_sdk\node-v12.15.0"
set PYTHON_HOME="D:\all_sdk\python"
:: 查询语句获得原有变量
for /f "tokens=3" %%a in ('"reg query "HKEY_CURRENT_USER\Environment" /v Path"') do (set oldPath=%%a)
echo oldPath:%oldPath%
:: 赋值到注册表中
reg add "HKCU\Environment" /f /t REG_SZ /v JAVA_HOME /d %JAVA_HOME%
reg add "HKCU\Environment" /f /t REG_SZ /v MVN_HOME /d %MVN_HOME%
reg add "HKCU\Environment" /f /t REG_SZ /v Android_SDK /d %Android_SDK%
reg add "HKCU\Environment" /f /t REG_SZ /v NODE_HOME /d %NODE_HOME%
reg add "HKCU\Environment" /f /t REG_SZ /v PYTHON_HOME /d %PYTHON_HOME%
reg add "HKCU\Environment" /f /t REG_EXPAND_SZ /v Path /d "%oldPath%;%%JAVA_HOME%%\bin;%%JAVA_HOME%%\jre\bin;%%MVN_HOME%%\bin;%%Android_SDK%%;%%NODE_HOME%%;%%NODE_HOME%%\node_global;%%PYTHON_HOME%%"
pause
感谢
感谢现在的好奇,为了能成为更好的自己。