日常使用 Win11,右键菜单和窗口控制是高频操作入口。系统自带的菜单和窗口功能满足基础需求,而借助第三方工具可以进一步优化操作体验。
下面介绍四款实用工具,覆盖菜单样式切换、菜单自定义扩展、菜单项编辑与窗口增强管理。
菜单管理
菜单美化
Win 11 默认使用 新版右键菜单(圆角、图标、默认折叠),许多常用功能被收进 显示更多选项。
右键菜单
如果习惯一展开即显示所有选项的 经典菜单,可以使用初雨团队开发的系统维护工具 Dism++。解压后以管理员身份运行 Dism++x64.exe,点击 系统优化 > Explorer,开启 禁用Win11 加入的新右键菜单,默认显示更多选项,并重启资源管理器。
Dism++
如果既想保留 Win11 的新版菜单,又想给右键菜单增添更多功能,可以使用 Nilesoft 开发的右键增强工具 Shell。解压后以管理员身份运行 shell.exe,点击 Register 按钮,并重启资源管理器。
Shell
通过 Shift + 鼠标右键 在任务栏点击 Shell > Directory 可修改配置和汉化,其目录结构如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| Nilesoft Shell
├─ imports # 功能模块目录(按功能拆分配置)
│ ├─ develop.nss # 开发工具相关菜单(VS Code、dotnet 命令等)
│ ├─ file-manage.nss # 文件管理操作(复制路径、修改扩展名、属性等)
│ ├─ goto.nss # 快速跳转系统文件夹(Windows、Program Files、用户目录等)
│ ├─ images.nss # 所有菜单图标的 SVG 定义(变量名如 @copy、@delete)
│ ├─ modify.nss # 修改 / 隐藏 / 移动 Windows 原生菜单项的规则
│ ├─ taskbar.nss # 任务栏右键菜单增强(窗口管理、启动应用等)
│ ├─ terminal.nss # 终端子菜单(CMD、PowerShell、Windows Terminal)
│ └─ theme.nss # 菜单外观主题(颜色、暗色模式、图标对齐、间距等)
├─ LICENSE
├─ readme.txt
├─ shell.dll
├─ shell.exe
└─ shell.nss # 主配置文件(import 上述模块、定义全局菜单结构)
|
以下是我的汉化配置(修改后需重新注册或重启资源管理器):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| settings
{
priority=1
exclude.where = !process.is_explorer
showdelay = 200
// Options to allow modification of system items
modify.remove.duplicate=1
tip.enabled=true
}
import 'imports/theme.nss'
import 'imports/images.nss'
import 'imports/modify.nss'
menu(mode="multiple" title="Pin/Unpin" image=icon.pin)
{
}
menu(mode="multiple" title=title.more_options image=icon.more_options)
{
}
//import 'imports/terminal.nss'
//import 'imports/file-manage.nss'
//import 'imports/develop.nss'
//import 'imports/goto.nss'
import 'imports/taskbar.nss'
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| menu(mode="multiple" title='开发工具' vis=key.shift() sep=sep.bottom image=\uE26E)
{
menu(mode="single" title='编辑器' image=\uE17A)
{
item(title='Visual Studio Code' image=[\uE272, #22A7F2] cmd='code' args='"@sel.path"')
separator
item(type='file' mode="single" title='记事本' image cmd='@sys.bin\notepad.exe' args='"@sel.path"')
}
menu(mode="multiple" title='.NET' image=\uE143)
{
item(title='运行项目' cmd-line='/K dotnet run' image=\uE149)
item(title='监视模式' cmd-line='/K dotnet watch')
item(title='清理项目' image=\uE0CE cmd-line='/K dotnet clean')
separator
item(title='生成调试版' cmd-line='/K dotnet build')
item(title='生成发布版' cmd-line='/K dotnet build -c release /p:DebugType=None')
menu(mode="multiple" sep="both" title='发布' image=\ue11f)
{
$publish='dotnet publish -r win-x64 -c release --output publish /*/p:CopyOutputSymbolsToPublishDirectory=false*/'
item(title='发布单文件' sep="after" cmd-line='/K @publish --no-self-contained /p:PublishSingleFile=true')
item(title='框架依赖部署' cmd-line='/K @publish')
item(title='框架依赖可执行文件' cmd-line='/K @publish --self-contained false')
item(title='独立部署' cmd-line='/K @publish --self-contained true')
item(title='单文件(未裁剪)' cmd-line='/K @publish /p:PublishSingleFile=true /p:PublishTrimmed=false')
item(title='单文件(已裁剪)' cmd-line='/K @publish /p:PublishSingleFile=true /p:PublishTrimmed=true')
}
item(title='EF 迁移:添加 InitialCreate' cmd-line='/K dotnet ef migrations add InitialCreate')
item(title='EF 更新数据库' cmd-line='/K dotnet ef database update')
separator
item(title='帮助' image=\uE136 cmd-line='/k dotnet -h')
item(title='版本信息' cmd-line='/k dotnet --info')
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
| menu(where=sel.count>0 type='file|dir|drive|namespace|back' mode="multiple" title='文件管理' image=\uE253)
{
menu(separator="after" title=title.copy_path image=icon.copy_path)
{
item(where=sel.count > 1 title='复制已选中的 (@sel.count) 个项目' cmd=command.copy(sel(false, "\n")))
item(mode="single" title=@sel.path tip=sel.path cmd=command.copy(sel.path))
item(mode="single" type='file' separator="before" find='.lnk' title='打开文件所在路径')
separator
item(mode="single" where=@sel.parent.len>3 title=sel.parent cmd=@command.copy(sel.parent))
separator
item(mode="single" type='file|dir|back.dir' title=sel.file.name cmd=command.copy(sel.file.name))
item(mode="single" type='file' where=sel.file.len != sel.file.title.len title=@sel.file.title cmd=command.copy(sel.file.title))
item(mode="single" type='file' where=sel.file.ext.len>0 title=sel.file.ext cmd=command.copy(sel.file.ext))
}
item(mode="single" type="file" title="修改扩展名" image=\uE0B5 cmd=if(input("修改扩展名", "输入新的扩展名"),
io.rename(sel.path, path.join(sel.dir, sel.file.title + "." + input.result))))
menu(separator="after" image=\uE290 title=title.select)
{
item(title="全部选中" image=icon.select_all cmd=command.select_all)
item(title="反向选择" image=icon.invert_selection cmd=command.invert_selection)
item(title="取消全选" image=icon.select_none cmd=command.select_none)
}
item(type='file|dir|back.dir|drive' title='获取所有权' image=[\uE194,#f00] admin
cmd args='/K takeown /f "@sel.path" @if(sel.type==1,null,"/r /d y") && icacls "@sel.path" /grant *S-1-5-32-544:F @if(sel.type==1,"/c /l","/t /c /l /q")')
separator
menu(title="显示/隐藏" image=icon.show_hidden_files)
{
item(title="系统文件" image=inherit cmd='@command.togglehidden')
item(title="文件扩展名" image=icon.show_file_extensions cmd='@command.toggleext')
}
menu(type='file|dir|back.dir' mode="single" title='文件属性' image=icon.properties)
{
$atrr = io.attributes(sel.path)
item(title='隐藏' checked=io.attribute.hidden(atrr)
cmd args='/c ATTRIB @if(io.attribute.hidden(atrr),"-","+")H "@sel.path"' window=hidden)
item(title='系统' checked=io.attribute.system(atrr)
cmd args='/c ATTRIB @if(io.attribute.system(atrr),"-","+")S "@sel.path"' window=hidden)
item(title='只读' checked=io.attribute.readonly(atrr)
cmd args='/c ATTRIB @if(io.attribute.readonly(atrr),"-","+")R "@sel.path"' window=hidden)
item(title='存档' checked=io.attribute.archive(atrr)
cmd args='/c ATTRIB @if(io.attribute.archive(atrr),"-","+")A "@sel.path"' window=hidden)
separator
item(title="创建日期" keys=io.dt.created(sel.path, 'y/m/d') cmd=io.dt.created(sel.path,2000,1,1) vis=label)
item(title="修改日期" keys=io.dt.modified(sel.path, 'y/m/d') cmd=io.dt.modified(sel.path,2000,1,1) vis=label)
item(title="访问日期" keys=io.dt.accessed(sel.path, 'y/m/d') cmd=io.dt.accessed(sel.path,2000,1,1) vis=label)
}
menu(mode="single" type='file' find='.dll|.ocx' separator="before" title='注册服务器' image=\uea86)
{
item(title='注册' admin cmd='regsvr32.exe' args='@sel.path.quote' invoke="multiple")
item(title='注销' admin cmd='regsvr32.exe' args='/u @sel.path.quote' invoke="multiple")
}
menu(mode="single" type='back' expanded=true)
{
menu(separator="before" title='新建文件夹' image=icon.new_folder)
{
item(title='以日期时间命名' cmd=io.dir.create(sys.datetime("ymdHMSs")))
item(title='以 GUID 命名' cmd=io.dir.create(str.guid))
}
menu(title='新建文件' image=icon.new_file)
{
$dt = sys.datetime("ymdHMSs")
item(title='TXT 文件' cmd=io.file.create('@(dt).txt', 'Hello World!'))
item(title='XML 文件' cmd=io.file.create('@(dt).xml', '<root>Hello World!</root>'))
item(title='JSON 文件' cmd=io.file.create('@(dt).json', '[]'))
item(title='HTML 文件' cmd=io.file.create('@(dt).html', "<html>\n\t<head>\n\t</head>\n\t<body>Hello World!\n\t</body>\n</html>"))
}
}
item(where=!wnd.is_desktop title=title.folder_options image=icon.folder_options cmd=command.folder_options)
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
| menu(type='*' where=window.is_taskbar||sel.count mode=mode.multiple title=title.go_to sep=sep.both image=\uE14A)
{
menu(title='系统文件夹' image=\uE1F4)
{
item(title='Windows' image=inherit cmd=sys.dir)
item(title='System' image=inherit cmd=sys.bin)
item(title='Program Files' image=inherit cmd=sys.prog)
item(title='Program Files (x86)' image=inherit cmd=sys.prog32)
item(title='ProgramData' image=inherit cmd=sys.programdata)
item(title='应用程序列表' image=inherit cmd='shell:appsfolder')
item(title='用户目录' image=inherit cmd=sys.users)
separator
//item(title='@user.name@@@sys.name' vis=label)
item(title='桌面' image=inherit cmd=user.desktop)
item(title='下载' image=inherit cmd=user.downloads)
item(title='图片' image=inherit cmd=user.pictures)
item(title='文档' image=inherit cmd=user.documents)
item(title='开始菜单' image=inherit cmd=user.startmenu)
item(title='用户配置' image=inherit cmd=user.dir)
item(title='AppData' image=inherit cmd=user.appdata)
item(title='临时文件夹' image=inherit cmd=user.temp)
}
item(title=title.control_panel image=\uE0F3 cmd='shell:::{5399E694-6CE5-4D6C-8FCE-1D8870FDCBA0}')
item(title='所有控制面板项' image=\uE0F3 cmd='shell:::{ED7BA470-8E54-465E-825C-99712043E01C}')
item(title=title.run image=\uE14B cmd='shell:::{2559a1f3-21d7-11d4-bdaf-00c04f60b9f0}')
menu(where=sys.ver.major >= 10 title=title.settings sep=sep.before image=\uE0F3)
{
// https://docs.microsoft.com/en-us/windows/uwp/launch-resume/launch-settings-app
item(title='系统' image=inherit cmd='ms-settings:')
item(title='关于' image=inherit cmd='ms-settings:about')
item(title='你的信息' image=inherit cmd='ms-settings:yourinfo')
item(title='系统信息' image=inherit cmd-line='/K systeminfo')
item(title='搜索' cmd='search-ms:' image=inherit)
item(title='USB' image=inherit cmd='ms-settings:usb')
item(title='Windows 更新' image=inherit cmd='ms-settings:windowsupdate')
item(title='Windows Defender' image=inherit cmd='ms-settings:windowsdefender')
menu(title='应用' image=inherit)
{
item(title='应用和功能' image=inherit cmd='ms-settings:appsfeatures')
item(title='默认应用' image=inherit cmd='ms-settings:defaultapps')
item(title='可选功能' image=inherit cmd='ms-settings:optionalfeatures')
item(title='启动项' image=inherit cmd='ms-settings:startupapps')
}
menu(title='个性化' image=inherit)
{
item(title='个性化' image=inherit cmd='ms-settings:personalization')
item(title='锁屏界面' image=inherit cmd='ms-settings:lockscreen')
item(title='背景' image=inherit cmd='ms-settings:personalization-background')
item(title='颜色' image=inherit cmd='ms-settings:colors')
item(title='主题' image=inherit cmd='ms-settings:themes')
item(title='开始菜单' image=inherit cmd='ms-settings:personalization-start')
item(title='任务栏' image=inherit cmd='ms-settings:taskbar')
}
menu(title='网络' image=inherit)
{
item(title='状态' image=inherit cmd='ms-settings:network-status')
item(title='以太网' image=inherit cmd='ms-settings:network-ethernet')
item(title='网络连接' image=inherit cmd='shell:::{7007ACC7-3202-11D1-AAD2-00805FC1270E}')
}
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| // modify items
// Remove items by identifiers
modify(mode=mode.multiple
where=this.id(id.restore_previous_versions,id.cast_to_device)
vis=vis.remove)
modify(type="recyclebin" where=window.is_desktop and this.id==id.empty_recycle_bin pos=1 sep)
modify(find="unpin*" pos="bottom" menu="Pin/Unpin")
modify(find="pin*" pos="top" menu="Pin/Unpin")
modify(where=this.id==id.copy_as_path menu="file manage")
modify(type="dir.back|drive.back" where=this.id==id.customize_this_folder pos=1 sep="top" menu="file manage")
modify(where=str.equals(this.name, ["open in terminal", "open linux shell here"]) || this.id==id.open_powershell_window_here
pos="bottom" menu="Terminal")
modify(mode=mode.multiple
where=this.id(
id.send_to,
id.share,
// id.create_shortcut,
id.set_as_desktop_background,
id.rotate_left,
id.rotate_right,
id.map_network_drive,
id.disconnect_network_drive,
id.format,
id.eject,
id.give_access_to,
id.include_in_library,
id.print
)
pos=1 menu=title.more_options)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| menu(type="taskbar" vis=key.shift() or key.lbutton() pos=0 title=app.name image=\uE249)
{
item(title="配置" image=\uE10A cmd='"@app.cfg"')
item(title="管理器" image=\uE0F3 admin cmd='"@app.exe"')
item(title="安装目录" image=\uE0E8 cmd='"@app.dir"')
item(title="版本\t"+@app.ver vis=label col=1)
item(title="文档" image=\uE1C4 cmd='https://nilesoft.org/docs')
item(title="捐赠" image=\uE1A7 cmd='https://nilesoft.org/donate')
}
menu(where=@(this.count == 0) type='taskbar' image=icon.settings expanded=true)
{
menu(title="常用应用" image=\uE254)
{
item(title='画图' image=\uE116 cmd='mspaint')
item(title='Edge' image cmd='@sys.prog32\Microsoft\Edge\Application\msedge.exe')
item(title='计算器' image=\ue1e7 cmd='calc.exe')
item(title=str.res('regedit.exe,-16') image cmd='regedit.exe')
}
menu(title="窗口" image=\uE1FB)
{
item(title="层叠窗口" cmd=command.cascade_windows)
item(title="堆叠显示" cmd=command.Show_windows_stacked)
item(title="并排显示" cmd=command.Show_windows_side_by_side)
sep
item(title="最小化所有窗口" cmd=command.minimize_all_windows)
item(title="还原所有窗口" cmd=command.restore_all_windows)
}
item(title="显示桌面" image=icon.desktop cmd=command.toggle_desktop)
item(title="设置" image=icon.settings(auto, image.color1) cmd='ms-settings:')
item(title="任务管理器" sep=both image=icon.task_manager cmd='taskmgr.exe')
item(title="任务栏设置" sep=both image=inherit cmd='ms-settings:taskbar')
item(vis=key.shift() title="重启资源管理器" cmd=command.restart_explorer)
}
|
1
2
3
4
5
6
7
8
9
| menu(type='*' where=(sel.count or wnd.is_taskbar or wnd.is_edit) title="终端" sep='top' image=icon.run_with_powershell)
{
$tip_run_admin=["\xE1A7 按 Shift 键以管理员身份运行" + this.title, tip.warning, 1.0]
$has_admin=key.shift() or key.rbutton()
item(title="CMD" tip=$tip_run_admin admin=$has_admin image cmd='cmd.exe' args='/K TITLE Command Prompt &ver& PUSHD "@sel.dir"')
item(title="PowerShell" admin=$has_admin tip=$tip_run_admin image cmd='powershell.exe' args='-noexit -command Set-Location -Path "@sel.dir\."')
item(where=package.exists("WindowsTerminal") title="终端" tip=$tip_run_admin admin=$has_admin image='@package.path("WindowsTerminal")\WindowsTerminal.exe' cmd='wt.exe' arg='-d "@sel.path\."')
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| theme
{
name="modern"
dark=auto
background
{
color=auto
opacity=auto
effect=auto
}
item
{
padding
{
right = 15
}
}
image.align=2
}
|
菜单精简
Nilesoft Shell 也可以用来精简菜单,示例如下:
1
2
3
4
| // 在末尾添加
remove(find='"使用 Clipchamp 进行编辑"|"使用 Microsoft 画图进行编辑"|"使用“照片”编辑"|"在记事本中编辑"|"使用 Adobe Acrobat 共享(A)"')
remove(in="打开方式(H)" find='"画图"')
remove(in="更多选项" in="发送到(N)" find='"文档"')
|
一级菜单 remove(find='"目标"'),二级菜单 remove(in="一级菜单" find='"目标"'),三级菜单 remove(in="一级菜单" in="二级菜单" find='"目标"'),以此类推,每深一级就多加一个 in="菜单名"。
另一款右键精简工具是蓝点 Lilac 开发的 ContextMenuManager。解压后以管理员身份运行 ContextMenuManager.NET.4.0.exe,按需开启和关闭文件、文件夹、桌面等场景的右键菜单项,同时可对菜单项进行更改文本、删除此项等操作。
ContextMenuManager
在 其他规则 界面,提供了一系列增强菜单项,如在目录中添加清理回收站,桌面背景添加此电脑等。其中 GUID 锁 相当于在注册表 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked 下新建以菜单 GUID 命名的字符串(数值留空),即可隐藏该菜单,删除则恢复。
GUID 锁
例如,想要隐藏右键菜单项 “使用 Clipchamp 进行编辑”({8AB635F8-9A67-4698-AB99-784AD929F3B4})、“使用照片编辑”({BFE0E2A4-C70C-4AD7-AC3D-10D1ECEBB5B4})、“使用 Microsoft 画图进行编辑”({2430F218-B743-4FD6-97BF-5C76541B4AE9})、“在记事本中编辑”({CA6CC9F1-867A-481E-951E-A28C5E4F01EA}),添加 GUID 锁定项目,重启资源管理器即可。
窗口管理
Windows 自带的窗口控制功能较为有限,右键点击标题栏只能看到移动、大小、最小化、最大化、关闭等基本选项。如果需要更丰富的窗口操作(如置顶、调整透明度、快速对齐等),可以使用 AlexanderPro 开发的窗口增强工具 SmartContextMenu,通过 Ctrl + 鼠标右键 可为任意窗口(包括游戏、控制台等无标题栏的应用)提供置顶、透明度调节、卷起、隐藏等增强功能。
SmartContextMenu
解压后以管理员身份运行 SmartContextMenu.exe,程序将驻留系统托盘;在任意窗口按 Ctrl + 鼠标右键,即可呼出增强菜单;右键托盘图标可打开设置,自定义快捷键、启用或禁用特定功能。
SmartContextMenu 设置