如何将防火墙脚本右键菜单添加至Windows 11现代上下文菜单?
将PowerShell脚本添加到Windows 11现代上下文菜单
问题概述
已有一个自动阻止文件夹内EXE文件通过Windows防火墙的PowerShell脚本,已通过注册表添加到旧版右键菜单,现需将其加入Windows 11的新版现代上下文菜单,无需封装脚本为程序。
修正后的脚本(原脚本存在路径指向错误,已调整):
$currentdir = Get-Location cd $currentdir function FirewallBlock { param ($exes) $exes | ForEach-Object { New-NetFirewallRule -DisplayName "$($_.Name) inbound" -Direction Inbound -Action Block -Profile Any -Program $_.FullName New-NetFirewallRule -DisplayName "$($_.Name) outbound" -Direction Outbound -Action Block -Profile Any -Program $_.FullName } } $programs = Get-ChildItem -Recurse -Filter *.exe FirewallBlock $programs
解决方案:通过注册表添加到现代菜单
Windows 11允许通过注册表将自定义命令直接添加到现代上下文菜单,无需开发UWP应用,步骤如下:
1. 配置文件夹空白处右键菜单
打开注册表编辑器(运行regedit),导航到:
HKEY_CLASSES_ROOT\Directory\Background\shell\Firewall
- 设置该键的默认值为
Firewall Block Programs(菜单显示名称) - 新建以下字符串值:
Icon(可选):设置菜单图标,例如%SystemRoot%\system32\FirewallControlPanel.exeCommandStateHandler:值为Windows.CommandStateHandlerCommandStateSync:值为truePackageFamilyName:值为Microsoft.Windows.FileExplorer_8wekyb3d8bbwe(文件资源管理器官方包名,用于关联现代菜单)
2. 设置执行命令
在Firewall键下创建command子键:
HKEY_CLASSES_ROOT\Directory\Background\shell\Firewall\command
设置该键的默认值为你的脚本启动命令(替换UserName为实际用户名):
powershell -command "Start-Process pwsh.exe -ArgumentList '-file C:\Users\UserName\OneDrive\Desktop\Firewall.ps1' -Verb runAs"
3. 可选:添加到文件夹本身右键菜单
若需要右键点击文件夹时也显示该选项,重复上述步骤,将注册表路径改为:
HKEY_CLASSES_ROOT\Directory\shell\Firewall
并配置对应的command子键。
生效方式
修改注册表后无需重启,右键点击文件夹空白处或文件夹,即可在现代上下文菜单中看到Firewall Block Programs选项(若未立即显示,可刷新资源管理器或重启explorer进程)。
内容的提问来源于stack exchange,提问作者user20225877
相关产品推荐
相关产品推荐

