注意:#commandline-line标记并不意味着仅批处理文件,我将接受PowerShell脚本或任何可免费使用的实用程序,它们可以从命令行启动并在无人值守的情况下完成其工作。
tl; dr
在Windows Vista上如何将无规则的防火墙规则准确地转换成状态GUI所说的,放在Windows Vista到任何界面(显示)语言的Windows 10上?
细化
这个问题类似于#786383,但是不一样。
基本上,因为答案对我不利:
set rule group="remote desktop" new enable=Yes
为公共网络打开端口3389,我想避免这种情况。另外,不同的Windows语言具有不同的组名,但是我需要一个通用的解决方案。netsh firewall set service type = remotedesktop mode = enable
也不对我有用:自win7起已弃用,并且仅允许rdp用于当前网络(如果您在公共网络中,则3389将为公共网络打开,此后将无法在专用网络中使用)。
请注意,在通过GUI启用RDP之前,每种协议对于RDP都只有一个规则。但是,当通过GUI启用RDP时,仅为专用和域网络打开端口,并且为此拆分了规则。启用后,Windows 8+中有4条规则,而Windows XP,Vista和7中有2条规则(无UDP)。
我当前使用的解决方法是添加自己的规则:
netsh.exe advfirewall firewall add rule name="Remote Desktop - User Mode (TCP-In)" dir=in action=allow program="%%SystemRoot%%\system32\svchost.exe" service="TermService" description="Inbound rule for the Remote Desktop service to allow RDP traffic. [TCP 3389] added by LogicDaemon's script" enable=yes profile=private,domain localport=3389 protocol=tcp
netsh.exe advfirewall firewall add rule name="Remote Desktop - User Mode (UDP-In)" dir=in action=allow program="%%SystemRoot%%\system32\svchost.exe" service="TermService" description="Inbound rule for the Remote Desktop service to allow RDP traffic. [UDP 3389] added by LogicDaemon's script" enable=yes profile=private,domain localport=3389 protocol=udp
但这很糟糕,因为(与标准脚本不同)它们可以由用户修改,没有组(与其他脚本一起使用),并且在通过GUI关闭RDP时不会自动被禁用。
屏幕截图
在有人询问之前,我不会用Windows命令行实用程序讲述这场斗争的全部故事。这是俄语的故事。