我正在尝试使用 netsh 从命令行删除 Windows 防火墙规则。我尝试使用以下语法;但是,结果对我来说不起作用。
netsh advfirewall firewall delete rule program="C\Program Files (x86)\utorrent\uTorrent.exe"
这个正确的语法是什么?我正在使用 Windows 7 Ultimate 64 位。
答案1
不要使用“Program”参数和值,在删除语句中使用“Rule”名称。
您可以运行netsh advfirewall firewall show rule status=enabled name=all
或者netsh advfirewall firewall show rule status=enabled name=all | FIND /I "uTorrent"
获取已启用的规则列表,以帮助定位规则的实际名称。
一旦确定了这一点,您就可以运行netsh advfirewall firewall delete rule name="<Rule Name>"
并相应地插入规则的名称,以删除该规则。
例子
创建名为“IP Block”的规则
netsh advfirewall firewall add rule name="IP Block" dir=in interface=any action=block remoteip=<IPaddress>/32
删除名为“IP Block”的规则
netsh advfirewall firewall delete rule name="IP Block"
更多资源
答案2
您的尝试均未包含正确的规则名称。
如果不提供不同的规则名称使用(根据此帮助) name=all
与program="C:\Program Files (x86)\utorrent\uTorrent.exe"
netsh advfirewall firewall delete rule name=all program="C:\Program Files (x86)\utorrent\uTorrent.exe"
名称 = { 全部 |规则名称}
必需。您可以指定以下值之一:
- 您想要删除的连接安全规则的规则名称。
- 全部。指定删除符合其他参数中条件的所有规则。如果命令中不包含其他参数,则删除所有连接安全规则。
答案3
我找到了另一个强大的解决方案:
@echo off
setlocal EnableExtensions DisableDelayedExpansion
REG EXPORT "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\SharedAccess\Parameters\FirewallPolicy\FirewallRules" "%TEMP%\RegBackup.reg" /y > NUL 2> NUL
TYPE "%TEMP%\RegBackup.reg" | FINDSTR /i /v torrent > "%TEMP%\RegBackupNew.reg"
REG DELETE "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\SharedAccess\Parameters\FirewallPolicy\FirewallRules" /f /va > NUL 2> NUL
REG IMPORT "%TEMP%\RegBackupNew.reg" 2> NUL
REG EXPORT "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\services\SharedAccess\Parameters\FirewallPolicy\FirewallRules" "%TEMP%\RegBackup.reg" /y > NUL 2> NUL
TYPE "%TEMP%\RegBackup.reg" | FINDSTR /i /v torrent > "%TEMP%\RegBackupNew.reg"
REG DELETE "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\services\SharedAccess\Parameters\FirewallPolicy\FirewallRules" /f /va > NUL 2> NUL
REG IMPORT "%TEMP%\RegBackupNew.reg" 2> NUL
DEL /q "%TEMP%\RegBackup.reg" 2> NUL
DEL /q "%TEMP%\RegBackupNew.reg" 2> NUL
endlocal