First right click on the Zero Hour shortcut > Properties > Compatibility > run in compatibility mode for Windows XP SP3 > run the game as admin.
You will need to create an Options.ini in Command & Conquer Generals Zero Hour Data folder.
Go to Documents > Command & Conquer Generals Zero Hour Data > Create a txt document & rename it to Options.ini > Copy & paste the following into the newely created Options.ini
AntiAliasing = DrawScrollAnchor = FirewallBehavior = 1 FirewallNeedToRefresh = FALSE FirewallPortAllocationDelta = 0 GameSpyIPAddress = 0.0.0.0 Gamma = 50 IPAddress = 0.0.0.0 IdealStaticGameLOD = Low LanguageFilter = false MoveScrollAnchor = MusicVolume = 55 Resolution = Retaliation = yes SFX3DVolume = 57 SFXVolume = 51 ScrollFactor = 28 SendDelay = no StaticGameLOD = High UseAlternateMouse = no UseDoubleClickAttackMove = no VoiceVolume = 70
Reboot PC, then you'll be good to play.