如何修改右键菜单防火墙规则删除命令,仅删除指定路径规则?
解决Windows防火墙规则删除时匹配文件路径的问题
修改后的完整注册表代码
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\Windows Firewall] @="" "MUIVerb"="Windows Firewall" "icon"="%SystemRoot%\\system32\\FirewallControlPanel.dll,0" "subcommands"="" [HKEY_CLASSES_ROOT\*\shell\Windows Firewall\shell\Add Blocking Rule (Outgoing)] @="" "MUIVerb"="Add Blocking Rule (Outgoing)" "Icon"="%SystemRoot%\\system32\\FirewallControlPanel.dll,1" [HKEY_CLASSES_ROOT\*\shell\Windows Firewall\shell\Add Blocking Rule (Outgoing)\command] @="\"C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe\" -Executionpolicy ByPass -WindowStyle Hidden -NoLogo -Command \"start powershell -Verb runas -ArgumentList \\\"-NoLogo -WindowStyle Hidden -command `\\\"New-NetFirewallRule -DisplayName ([System.IO.Path]::GetFilenameWithoutExtension('%1')) -Name '%1' -Enabled True -Direction Outbound -Action Block -Program '%1'`\\\"\\\"\"" [HKEY_CLASSES_ROOT\*\shell\Windows Firewall\shell\Delete Rule (Outgoing)] @="" "MUIVerb"="Unblock Rule (Outgoing)" "Icon"="%SystemRoot%\\system32\\FirewallControlPanel.dll,2" [HKEY_CLASSES_ROOT\*\shell\Windows Firewall\shell\Delete Rule (Outgoing)\command] @="\"C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe\" -Executionpolicy Bypass -WindowStyle Hidden -NoLogo -Command \"Start-Process powershell -Verb RunAs -ArgumentList \\\"-NoLogo -WindowStyle Hidden -Command `\\\"Remove-NetFirewallRule -Program '%1' -Direction Outbound -Action Block`\\\"\\\"\""
关键修改说明
- 替换删除命令逻辑:把原命令中仅匹配文件名的
netsh命令,换成PowerShell的Remove-NetFirewallRule,直接通过-Program '%1'指定要匹配的文件完整路径,同时加上-Direction Outbound和-Action Block限定规则类型,确保只删除对应文件的出站阻止规则,不会误删同名不同路径的规则。 - 修正引号嵌套问题:梳理了原命令中混乱的转义引号,避免执行时出现参数解析错误。
- 保留管理员权限:继续使用
Start-Process -Verb RunAs确保删除操作以管理员权限执行(修改防火墙规则必须具备管理员权限)。
验证方式
修改注册表后,右键点击不同路径下的同名文件执行删除规则操作,只会清除对应文件的防火墙规则,其他路径的同名文件规则不受影响。
内容的提问来源于stack exchange,提问作者Albie
相关产品推荐
相关产品推荐

