Forum Discussion

KittenRebellion's avatar
2 years ago

CnC Generals ZH Script For Fixing Legacy DirectX Launch Errors On EA Desktop

The following batch file can be used to temporarily patch CnC Generals ZH on Windows 10 / 11, if it was installed by the EA Desktop Application, without deleting or renaming any of the game files, or needing to use the installer to initiate the repair process for the game files themselves, if it was necessary to reverse any of the changes that had been made previously:


(1.) Use Notepad to create this file on your desktop or another folder: SET_ACL_CnC_ZH.bat


@ECHO OFF
SETLOCAL EnableDelayedExpansion

IF NOT EXIST "%LocalAppData%\Electronic Arts\EA Desktop\user_*.ini" GOTO LST_LNE
IF NOT EXIST "C:\ProgramData\EA Desktop\InstallData\Command and Conquer Generals Zero Hour" GOTO CNCZH_MODIFYACL_LST_LNE_

IF [%1]==[] GOTO CNCZH_MODIFYACL_SKP_LBL_
IF %1==RESET (SET CNCZH_MODIFYACL_TMP_VAR_REV=1)
:CNCZH_MODIFYACL_SKP_LBL_

(TYPE "%LocalAppData%\Electronic Arts\EA Desktop\user_*.ini"| FIND "user.downloadinplacedir"> "%~dp0TMP_SRT_ACL_CNC_ZH_.txt") >nul 2>&1
FOR /F "usebackq tokens=* delims=" %%A IN ("%~dp0TMP_SRT_ACL_CNC_ZH_.txt") DO (SET TMP_VAR_=%%A&CALL :SRT_ACL_CNC_ZH_1_ "!TMP_VAR_:~24!")

GOTO CNCZH_MODIFYACL_LST_LNE_

:SRT_ACL_CNC_ZH_1_
DEL /Q "%~dp0TMP_SRT_ACL_CNC_ZH_.txt" 2>&1
IF EXIST "%~1Command and Conquer Generals Zero Hour\Command and Conquer Generals\dbghelp.dll" CALL :SRT_ACL_CNC_ZH_2_ "%~1Command and Conquer Generals Zero Hour\Command and Conquer Generals\dbghelp.dll"
IF EXIST "%~1Command and Conquer Generals Zero Hour\Command and Conquer Generals\dbghelp.dll" CALL :SRT_ACL_CNC_ZH_2_ "%~1Command and Conquer Generals Zero Hour\Command and Conquer Generals Zero Hour\dbghelp.dll"
GOTO :EOF

:SRT_ACL_CNC_ZH_2_
TAKEOWN /A /F %1
REM THE FOLLOWING LINE REVERSES THE CHANGES
IF [%CNCZH_MODIFYACL_TMP_VAR_REV%]==[] GOTO CNCZH_MODIFYACL_SKP_LNE_1_
ICACLS %1 /RESET /C /L /Q
GOTO CNCZH_MODIFYACL_SKP_LNE_2_
:CNCZH_MODIFYACL_SKP_LNE_1_
ICACLS %1 /INHERITANCE:D /REMOVE "ALL RESTRICTED APPLICATION PACKAGES" /C /L /Q
ICACLS %1 /INHERITANCE:D /REMOVE "ALL APPLICATION PACKAGES" /C /L /Q
ICACLS %1 /INHERITANCE:D /REMOVE "CREATOR OWNER" /C /L /Q
ICACLS %1 /INHERITANCE:D /REMOVE "NT AUTHORITY\Authenticated Users" /C /L /Q
ICACLS %1 /INHERITANCE:D /REMOVE "NT SERVICE\TrustedInstaller" /C /L /Q
ICACLS %1 /INHERITANCE:D /REMOVE "NT AUTHORITY\SYSTEM" /C /L /Q
ICACLS %1 /INHERITANCE:D /REMOVE "BUILTIN\Users" /C /L /Q
ICACLS %1 /INHERITANCE:D /REMOVE "BUILTIN\Administrators" /C /L /Q
ICACLS %1 /INHERITANCE:D /REMOVE "Everyone" /C /L /Q
:CNCZH_MODIFYACL_SKP_LNE_2_
GOTO :EOF

:CNCZH_MODIFYACL_LST_LNE_

ENDLOCAL DisableDelayedExpansion
MOVE NUL 2>&0


SIDE NOTE: If you put RESET in front of the first batch file, it will reset the ACE / Access Control Entry to default, unattended in the background:


CMD /Q /C START /MIN /REALTIME %UserProfile%\Desktop\SET_ACL_CnC_ZH.bat RESET


Alternate:


CMD /Q /C START /MIN /REALTIME /WAIT /B %UserProfile%\Desktop\SET_ACL_CnC_ZH.bat RESET


No RepliesBe the first to reply

About Command & Conquer Franchise Discussion

Chat about your favorite games in the Command and Conquer franchise and get help from the player community.13,499 PostsLatest Activity: 22 hours ago