Hinweis: # Befehlszeilen-Tag bedeutet nicht nur Batch-Datei. Ich akzeptiere ein PowerShell-Skript oder ein frei verfügbares Dienstprogramm, das über die Befehlszeile gestartet werden kann und seine Arbeit unbeaufsichtigt beendet.
tl; dr
Wie kann man Firewall-Regeln unbeaufsichtigt genau so umwandeln, dass die GUI es unter Windows Vista auf Windows 10 einer beliebigen Schnittstellensprache (Anzeige) ausdrückt?
Ausarbeiten
Diese Frage ähnelt # 786383 , ist aber nicht dieselbe.
Grundsätzlich, weil die Antwort nicht gut für mich ist:
set rule group="remote desktop" new enable=Yes
öffnet Port 3389 für öffentliche Netzwerke, und das möchte ich vermeiden. Auch verschiedene Windows-Sprachen haben unterschiedliche Gruppennamen, aber ich brauche eine universelle Lösung.netsh firewall set service type = remotedesktop mode = enable
funktioniert auch bei mir nicht: es ist seit win7 veraltet und erlaubt rdp nur für das aktuelle netzwerk (wenn Sie in einem öffentlichen Netzwerk sind, wird 3389 für öffentliche Netzwerke geöffnet und funktioniert danach nicht mehr in privaten Netzwerken).
Beachten Sie, dass es vor der Aktivierung von RDP über die GUI nur eine Regel pro Protokoll für RDP gibt. Wenn RDP jedoch über die GUI aktiviert wird, wird der Port nur für private Netzwerke und Domänennetzwerke geöffnet, und die Regeln werden dafür aufgeteilt. Nach dem Aktivieren gibt es 4 Regeln in Windows 8+ und 2 Regeln (kein UDP) in Windows XP, Vista und 7.
Umgehung, die ich derzeit verwende, fügt meine eigenen Regeln hinzu:
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
Das ist jedoch schlecht, da sie (im Gegensatz zu Standardprogrammen) vom Benutzer geändert werden können, keine Gruppe haben (um mit anderen Skripten zu arbeiten) und nicht automatisch deaktiviert werden, wenn RDP über die GUI deaktiviert wird.
Screenshots
Firewall-Regeln vor dem erstmaligen Aktivieren von RDP über die GUI * **
Gleiche Regeln, wenn RDP über die GUI aktiviert ist (Status, den ich erhalten möchte):
Und nach dem Deaktivieren von RDP in der GUI:
Ich werde die ganze Geschichte dieses Kampfes mit Windows-Befehlszeilenprogrammen nicht nacherzählen, bis jemand danach fragt. Hier ist diese Geschichte auf Russisch .