Windows Defender Firewall Rule Creation Script For The Epic Games Launcher Application

The following batch files can be used to create a secure set of Windows Defender Firewall Rules on Windows 10 / 11, for the EPIC Games Launcher Application, and any applications located within a subdirectory, or the root directory of the Default Installation Folder path:

NOTE: On Windows 10 / 11: Right-click on the following batch file after saving it, and click “Run as administrator”.

(1.) Use Notepad to create this file on your desktop or another folder: EPIC_Launcher_App_Firewall_Rule_Creator.bat
@ECHO OFF
SETLOCAL EnableDelayedExpansion
CD /D "%~dp0"
DEL /Q "%~dp0EPIC_FrWll_GENERATOR_RNGE_*_SMPL_.txt" 2> nul

IF NOT EXIST "%LocalAppData%\EpicGamesLauncher\Saved\Config\Windows\GameUserSettings.ini" GOTO EPIC_LAUNCHER_FR_WLL_LST_LNE
IF NOT EXIST "%ProgramFiles(x86)%\Epic Games" GOTO EPIC_LAUNCHER_FR_WLL_LST_LNE
IF NOT EXIST "%ProgramData%\Epic" GOTO EPIC_LAUNCHER_FR_WLL_LST_LNE

(TYPE "%LocalAppData%\EpicGamesLauncher\Saved\Config\Windows\GameUserSettings.ini"| FIND "VaultCacheDirectories"> "%~dp0EPIC_FrWll_GENERATOR_RNGE_0_SMPL_.txt") >nul 2>&1

TYPE "%~dp0EPIC_FrWll_GENERATOR_RNGE_0_SMPL_.txt"| FIND /V "" /C> "%~dp0EPIC_FrWll_GENERATOR_RNGE_3_SMPL_.txt"
SET /P EPIC_LAUNCHER_FR_WLL_TST_SRT_VAL_RNGE_=<"%~dp0EPIC_FrWll_GENERATOR_RNGE_3_SMPL_.txt"
IF %EPIC_LAUNCHER_FR_WLL_TST_SRT_VAL_RNGE_% EQU 0 GOTO EPIC_LAUNCHER_FR_WLL_SKP_CHK_1_

FOR /F "usebackq tokens=* delims=" %%A IN ("%~dp0EPIC_FrWll_GENERATOR_RNGE_0_SMPL_.txt") DO (SET TMP_VAR_=%%A&ECHO !TMP_VAR_:~22!> "%~dp0EPIC_FrWll_GENERATOR_RNGE_1_SMPL_.txt")
CALL :EPIC_LAUNCHER_FR_WLL_PRE_SRT_

:EPIC_LAUNCHER_FR_WLL_SKP_CHK_1_

(TYPE "%LocalAppData%\EpicGamesLauncher\Saved\Config\Windows\GameUserSettings.ini"| FIND "DefaultAppInstallLocation"> "%~dp0EPIC_FrWll_GENERATOR_RNGE_0_SMPL_.txt") >nul 2>&1

TYPE "%~dp0EPIC_FrWll_GENERATOR_RNGE_0_SMPL_.txt"| FIND /V "" /C> "%~dp0EPIC_FrWll_GENERATOR_RNGE_3_SMPL_.txt"
SET /P EPIC_LAUNCHER_FR_WLL_TST_SRT_VAL_RNGE_=<"%~dp0EPIC_FrWll_GENERATOR_RNGE_3_SMPL_.txt"
IF %EPIC_LAUNCHER_FR_WLL_TST_SRT_VAL_RNGE_% EQU 0 GOTO EPIC_LAUNCHER_FR_WLL_SKP_CHK_2_

FOR /F "usebackq tokens=* delims=" %%A IN ("%~dp0EPIC_FrWll_GENERATOR_RNGE_0_SMPL_.txt") DO (SET TMP_VAR_=%%A&ECHO "!TMP_VAR_:~26!^\">> "%~dp0EPIC_FrWll_GENERATOR_RNGE_2_SMPL_.txt")

:EPIC_LAUNCHER_FR_WLL_SKP_CHK_2_

SETLOCAL DisableDelayedExpansion
DEL /Q "%~dp0EPIC_FrWll_GENERATOR_RNGE_1_SMPL_.txt" 2> nul
FOR /F "usebackq tokens=* delims=" %%A IN ("%~dp0EPIC_FrWll_GENERATOR_RNGE_2_SMPL_.txt") DO (ECHO %%~A>> "%~dp0EPIC_FrWll_GENERATOR_RNGE_1_SMPL_.txt")
SETLOCAL EnableDelayedExpansion

ECHO %ProgramFiles(x86)%\Epic Games^\>> "%~dp0EPIC_FrWll_GENERATOR_RNGE_1_SMPL_.txt"
ECHO %ProgramFiles(x86)%\EasyAntiCheat^\>> "%~dp0EPIC_FrWll_GENERATOR_RNGE_1_SMPL_.txt"
ECHO %ProgramData%\Epic^\>> "%~dp0EPIC_FrWll_GENERATOR_RNGE_1_SMPL_.txt"

FOR /F "usebackq tokens=* delims=" %%A IN ("%~dp0EPIC_FrWll_GENERATOR_RNGE_1_SMPL_.txt") DO (SET TMP_VAR_=%%A&IF EXIST "!TMP_VAR_:~0,-1!" ((DIR /B /S /O:N "!TMP_VAR_:~0,-1!\*.exe">> "%~dp0EPIC_FrWll_GENERATOR_RNGE_4_SMPL_.txt") >nul 2>&1))
TYPE "%~dp0EPIC_FrWll_GENERATOR_RNGE_4_SMPL_.txt"> "%~dp0EPIC_FrWll_GENERATOR_RNGE_1_SMPL_.txt"
IF EXIST "C:\Windows\system32\PnkBstrA.exe" ECHO C:\Windows\system32\PnkBstrA.exe>> "%~dp0EPIC_FrWll_GENERATOR_RNGE_1_SMPL_.txt"
IF EXIST "C:\Windows\system32\PnkBstrB.exe" ECHO C:\Windows\system32\PnkBstrB.exe>> "%~dp0EPIC_FrWll_GENERATOR_RNGE_1_SMPL_.txt"
IF EXIST "C:\Windows\SysWOW64\PnkBstrA.exe" ECHO C:\Windows\SysWOW64\PnkBstrA.exe>> "%~dp0EPIC_FrWll_GENERATOR_RNGE_1_SMPL_.txt"
IF EXIST "C:\Windows\SysWOW64\PnkBstrB.exe" ECHO C:\Windows\SysWOW64\PnkBstrB.exe>> "%~dp0EPIC_FrWll_GENERATOR_RNGE_1_SMPL_.txt"

IF [%1]==[] GOTO EPIC_LAUNCHER_FR_WLL_SKP_LBL_1_
IF %1==BYPASS GOTO EPIC_LAUNCHER_FR_WLL_SKP_LBL_2_

:EPIC_LAUNCHER_FR_WLL_SKP_LBL_1_
CLS
CHOICE /C YN /N /M "CREATING FIREWALL RULES FOR: [%ProgramFiles(x86)%\Epic Games\] <- [Y/N] TO PROCEED?"
IF %ErrorLevel% EQU 2 GOTO EPIC_LAUNCHER_FR_WLL_LST_LNE
:EPIC_LAUNCHER_FR_WLL_SKP_LBL_2_

SET ALS_FrWll_STRT=EPIC_Launcher_App

PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Remove-NetFirewallRule -DisplayName '%ALS_FrWll_STRT% * ( * )'}"

SET CNTR_NUM=1
FOR /F "usebackq tokens=* delims=" %%A IN ("%~dp0EPIC_FrWll_GENERATOR_RNGE_1_SMPL_.txt") DO (CALL :EPIC_LAUNCHER_FR_WLL_CRTE_SMPLE_FRWLL_RL "%%~nA" "%%~sfA")

GOTO EPIC_LAUNCHER_FR_WLL_LST_LNE

:EPIC_LAUNCHER_FR_WLL_PRE_SRT_
(SET EPIC_LAUNCHER_FR_WLL_TMP_VAR_=)
(SET EPIC_LAUNCHER_FR_WLL_TMP_VAR_2_=)

FOR /L %%A IN (1,1,100) DO (CALL :EPIC_LAUNCHER_FR_WLL_TST_ %%A)

(ECHO "%EPIC_LAUNCHER_FR_WLL_TMP_VAR_2_%")>> "%~dp0EPIC_FrWll_GENERATOR_RNGE_2_SMPL_.txt"

GOTO EPIC_LAUNCHER_INNR_FRWLL_LST_LNE_
:EPIC_LAUNCHER_FR_WLL_TST_
FOR /F "usebackq tokens=%1 delims=/" %%A IN ("%~dp0EPIC_FrWll_GENERATOR_RNGE_1_SMPL_.txt") DO ((SET EPIC_LAUNCHER_FR_WLL_TMP_VAR_=!EPIC_LAUNCHER_FR_WLL_TMP_VAR_2_!%%A^\)&(SET EPIC_LAUNCHER_FR_WLL_TMP_VAR_2_=!EPIC_LAUNCHER_FR_WLL_TMP_VAR_!))
GOTO :EOF
:EPIC_LAUNCHER_INNR_FRWLL_LST_LNE_
GOTO :EOF

:EPIC_LAUNCHER_FR_WLL_CRTE_SMPLE_FRWLL_RL
CMD /Q /C START /MIN PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {New-NetFirewallRule -Action Allow -Direction Outbound -DisplayName '%ALS_FrWll_STRT% %CNTR_NUM% ( %~1 )' -Profile Any -Program '%~2' -Protocol Any}"
SET /A CNTR_NUM+=1
GOTO :EOF

:EPIC_LAUNCHER_FR_WLL_LST_LNE

DEL /Q "%~dp0EPIC_FrWll_GENERATOR_RNGE_*_SMPL_.txt" 2> nul

ENDLOCAL DisableDelayedExpansion
MOVE NUL 2>&0

NOTE: Most people use the root folder of the Default Installation Folder path, as the same install path for everything. In any other type of scenario, this may not work as expected. At that point, this batch file is a better choice, as it’s basically foolproof:

ALTERNATE: Use Notepad to create this file on your desktop or another folder: Simple_Firewall_Rule_Creator.bat
@ECHO OFF
SETLOCAL EnableDelayedExpansion

SET FN_VAR[0]_=""
SET FN_VAR[1]_=" "
SET FN_VAR[2]_="#"
SET FN_VAR[3]_="$"
SET FN_VAR[4]_="%"
SET FN_VAR[5]_="&"
SET FN_VAR[6]_="'"
SET FN_VAR[7]_="("
SET FN_VAR[8]_=")"
SET FN_VAR[9]_="*"
SET FN_VAR[10]_="+"
SET FN_VAR[11]_=","
SET FN_VAR[12]_="-"
SET FN_VAR[13]_="."
SET FN_VAR[14]_="/"
SET FN_VAR[15]_=":"
SET FN_VAR[16]_=";"
SET FN_VAR[17]_="<"
SET FN_VAR[18]_="="
SET FN_VAR[19]_=">"
SET FN_VAR[20]_="?"
SET FN_VAR[21]_="@"
SET FN_VAR[22]_="["
SET FN_VAR[23]_="\"
SET FN_VAR[24]_="]"
SET FN_VAR[25]_="^"
SET FN_VAR[26]_="`"
SET FN_VAR[27]_="{"
SET FN_VAR[28]_="|"
SET FN_VAR[29]_="}"
SET FN_VAR[30]_="~"
SET FN_VAR_MXCNT_=30

DEL /Q "%~dp0FrWll_GENERATOR_RNGE_*_SMPL_.txt" 2> nul
DEL /Q "%~dp0FrWll_GENERATOR_TMP_SMPL_*_.txt" 2> nul

:RESET_LBL_FRWLL_RL_CRTE_SMPLE_
SET TMP_SMPL_VAL_=0
CLS
ECHO ...SELECT FOLDER NAME AND ALIAS FOR FIREWALL SCRIPT GENERATOR
SET /P PTH_PRM_FrWll_VAR_TMP_="[FOLDER NAME]: "
CALL :CVRT_83_PATH_FRWLL_RL_CRTE_SMPLE_ "%PTH_PRM_FrWll_VAR_TMP_%"
IF NOT EXIST "%PTH_PRM_FrWll_VAR_%" (GOTO RESET_LBL_FRWLL_RL_CRTE_SMPLE_)

SET /P ALS_PRM_FrWll_VAR_="[GROUP/ALIAS]: "
CALL :SRT_TMP_SMPL_FrWll_1_ "%ALS_PRM_FrWll_VAR_%"
IF %TMP_SMPL_VAL_% GTR 0 (GOTO RESET_LBL_FRWLL_RL_CRTE_SMPLE_)

IF "%PTH_PRM_FrWll_VAR_:~-1%"=="\" (IF EXIST "%PTH_PRM_FrWll_VAR_:~0,-1%" (SET PTH_FrWll_STRT=%PTH_PRM_FrWll_VAR_:~0,-1%))
IF NOT "%PTH_PRM_FrWll_VAR_:~-1%"=="\" (SET PTH_FrWll_STRT=%PTH_PRM_FrWll_VAR_%)

SET ALS_FrWll_STRT=%ALS_PRM_FrWll_VAR_%

CHOICE /C YN /N /M "FOLDER PATH: [%PTH_FrWll_STRT%] GROUP/ALIAS: [%ALS_FrWll_STRT%] <- [Y/N] TO PROCEED?"
IF %ErrorLevel% EQU 2 GOTO RESET_LBL_FRWLL_RL_CRTE_SMPLE_

DIR /B /S /O:N "%PTH_FrWll_STRT%\*.exe"> "%~dp0FrWll_GENERATOR_RNGE_1_SMPL_.txt"

ECHO @ECHO OFF> "%~dp0%ALS_FrWll_STRT%-Firewall_Rule_Generator.bat"
ECHO SETLOCAL>> "%~dp0%ALS_FrWll_STRT%-Firewall_Rule_Generator.bat"
ECHO PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Remove-NetFirewallRule -DisplayName '%ALS_FrWll_STRT% * ( * )'}">> "%~dp0%ALS_FrWll_STRT%-Firewall_Rule_Generator.bat"

SET CNTR_NUM=1
FOR /F "usebackq tokens=* delims=" %%A IN ("%~dp0FrWll_GENERATOR_RNGE_1_SMPL_.txt") DO (CALL :CRTE_SMPLE_FRWLL_RL "%%~nA" "%%~sfA")

GOTO LST_LNE_FRWLL_RL_CRTE_SMPLE_

:SRT_TMP_SMPL_FrWll_1_
IF %1==%FN_VAR[0]_% (ECHO ^1>> "%~dp0FrWll_GENERATOR_TMP_SMPL_1_.txt")
FOR /L %%A IN (1,1,%FN_VAR_MXCNT_%) DO ( (ECHO %1| FIND !FN_VAR[%%A]_! /C)>> "%~dp0FrWll_GENERATOR_TMP_SMPL_1_.txt" )
TYPE "%~dp0FrWll_GENERATOR_TMP_SMPL_1_.txt"| FIND "1" /C> "%~dp0FrWll_GENERATOR_TMP_SMPL_2_.txt"
SET /P TMP_SMPL_VAL_=<"%~dp0FrWll_GENERATOR_TMP_SMPL_2_.txt"
DEL /Q "%~dp0FrWll_GENERATOR_TMP_SMPL_*_.txt" 2> nul
GOTO :EOF

:CRTE_SMPLE_FRWLL_RL
ECHO CMD /Q /C START /MIN PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {New-NetFirewallRule -Action Allow -Direction Outbound -DisplayName '%ALS_FrWll_STRT% %CNTR_NUM% ( %~1 )' -Profile Any -Program '%~2' -Protocol Any}">> "%~dp0%ALS_FrWll_STRT%-Firewall_Rule_Generator.bat"
SET /A CNTR_NUM+=1
GOTO :EOF

:CVRT_83_PATH_FRWLL_RL_CRTE_SMPLE_
SET PTH_PRM_FrWll_VAR_=%~sf1
GOTO :EOF

:LST_LNE_FRWLL_RL_CRTE_SMPLE_
ECHO ENDLOCAL>> "%~dp0%ALS_FrWll_STRT%-Firewall_Rule_Generator.bat"
DEL /Q "%~dp0FrWll_GENERATOR_RNGE_*_SMPL_.txt" 2> nul

ECHO ...BATCH FILE CREATED: "%~dp0%ALS_FrWll_STRT%-Firewall_Rule_Generator.bat"
PAUSE

ENDLOCAL DisableDelayedExpansion
MOVE NUL 2>&0

SIDE NOTE: If you put BYPASS in front of the first batch file, it will create a firewall ruleset for the app, and the all the associated games, unattended in the background:

CMD /Q /C START /MIN /REALTIME %UserProfile%\Desktop\EPIC_Launcher_App_Firewall_Rule_Creator.bat BYPASS

Alternate:

CMD /Q /C START /MIN /REALTIME /WAIT /B %UserProfile%\Desktop\EPIC_Launcher_App_Firewall_Rule_Creator.bat BYPASS
1 Like