примечание: тег командной строки # не подразумевает только пакетный файл, я приму скрипт PowerShell или любую свободно доступную утилиту, которую можно запустить из командной строки и завершить свою работу без присмотра.
ТЛ; др
Как автоматически преобразовать правила брандмауэра в состояние, в котором он находится, в 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 будет открыт для публичных сетей и впоследствии не будет работать в частных сетях).
Обратите внимание, что до того, как RDP будет включен через GUI, для протокола RDP существует только одно правило. Но когда RDP включен через графический интерфейс, порт открывается только для частных сетей и сетей домена, и правила для этого делятся. После включения в Windows 8+ есть 4 правила и 2 правила (без UDP) в Windows XP, Vista и 7.
Обходной путь, который я сейчас использую, добавляет мои собственные правила:
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
но это плохо, потому что (в отличие от стандартных) они могут быть изменены пользователем, не имеют группы (для работы с другими сценариями) и не отключаются автоматически при отключении RDP через GUI.
Скриншоты
Правила брандмауэра перед первым включением RDP через GUI * **
Те же правила, когда RDP включен через GUI (состояние, которое я хочу получить):
Я не буду рассказывать всю историю этого боя с утилитами командной строки Windows, пока кто-нибудь не спросит. Вот эта история на русском языке .