Even then, there's so many other things that can go wrong with games. With DOS-era titles, DOSBox does a pretty fantastic job, as long as you use a fork with useful features like DOSBox-X. With Windows titles the possibilities to preserve games is almost endless thanks to hooking. I've spent the past few years compiling a personal archive of games to get them in a playable state. For me, this often involves support for modern controllers and _at least_ natively rendering at a higher resolution. Compatibility shims like dgVoodoo make it easy to bump up the rendering resolution of a game, while preserving aspect ratio for games that may only support 4:3.
Graphics are basically solved with projects like dgVoodoo, and there's numerous dinput -> xinput solutions out there, but that's rarely the whole picture. WinSock could really benefit from a wrapper that tunnels traffic over the internet (VPNs are really like using a steam roller to drive a nail). Registry API calls really could be redirected to read from config files instead of relying on the weird bastardization of WOW64 and the VirtualStore. Hell, even file access could be redirected so we can contain all of a game's files.
I'm actually working towards implementing the latter two as a way to preserve the functionality of installers and allow their reimplementation through something like PowerShell.