如何通过批处理文件在Windows防火墙上打开端口

Ste*_*ier 14 windows port firewall cmd batch-file

批处理文件中是否有任何方法可以通过批处理文件在Windows上打开特定端口?让安装程序为我们的服务器应用程序执行此操作而不是让用户手动执行此操作会很高兴.

Kev*_*son 20

使用netsh.exe.一个非常简单的批处理文件,它接受一个port参数:

@echo off
rem -- open port (first argument passed to batch script)
netsh advfirewall firewall add rule name="Open Port %1" dir=in action=allow protocol=TCP localport=%1 remoteip=10.15.97.0/24,10.17.0.0/16
Run Code Online (Sandbox Code Playgroud)

  • 请注意,启动netsh的过程(或任何启动netsh,例如您的批处理文件)需要admin权限才能生成端口异常.您的安装程序通常可以在安装时处理此问题,具体取决于安装程序是否使用admin privledges运行. (3认同)

Max*_*eev 11

这是@Kevin Richardson提供的解决方案的扩展.请注意,每次运行相同命令时,"netsh advfirewall add rule"命令将创建一个具有相同名称的新规则.下面的脚本有助于防止它

ECHO OFF
set PORT=8081
set RULE_NAME="Open Port %PORT%"

netsh advfirewall firewall show rule name=%RULE_NAME% >nul
if not ERRORLEVEL 1 (
    rem Rule %RULE_NAME% already exists.
    echo Hey, you already got a out rule by that name, you cannot put another one in!
) else (
    echo Rule %RULE_NAME% does not exist. Creating...
    netsh advfirewall firewall add rule name=%RULE_NAME% dir=in action=allow protocol=TCP localport=%PORT%
)
Run Code Online (Sandbox Code Playgroud)