Why is it happening?
This page suggests plausible reason:
There is an annoying software in Windows 7 called "Games Explorer", which can be started via the button "Games" in the Start Menu. It automatically downloads icons, covers - and other stuff Microsoft deemed useful - from the internet, whenever a game is started.
How to stop it?
I imagine several options (cleanest to dirtiest):
- Exclude the executable from the Program Compatibility Assistant (PCA)
Program Compatibility Assistant using Services panel or via Group Policy Editor.
- Redirect mentioned hosts to 127.0.0.1. I tried it and it didn't work for my case -- the process just hangs. However, this page suggests it worked for Oblivion.
- Restrict access to
gameux.dll. This is what I did to "fix" Project Nomads (see below).
C:\Windows\AppPatch\sysmain.sdb. The first link suggests it worked.
I haven't tried #1, #2 and #5.
I noticed exactly the same problem when Project Nomads (2002) wouldn't start until I turn on the Internet. Game exe file would start
rundll32.exe which in turn runs
C:\Windows\System32\gameux.dll, which did request to
I didn't want to experiment with deleting
sysmain.sdb as first link suggests -- maybe some old programs would break? It's "Compatibility" feature after all.
Instead I took ownership of
gameux.dll and removed my user from access list. Now when I start the game it says
Access denied to gameux.dll, I press OK,
rundll32.exe process exits and the game runs with no problem. No requests are performed and the game runs without Internet connection.
What is going on?
From Windows Shim Database (SDB) Parser tool page (
The Application Compatibility framework from Microsoft uses the Shim Database to identify if, and how, an application or DLL should be shimmed during process startup and/or DLL load. The default Shim Database is located at \Windows\AppPatch\sysmain.sdb and can contain thousands of entries for a normal Win7 box.
... the Application Compatibility framework allows installed applications on a Windows box to be patched 'on the fly' (ie. modified without a reboot), and this patch can be used to spawn other processes and/or inject undesired DLLs into the patched application.
I cannot tell for sure but my only explanation of your comment
the call is from rundll32.exe to a Microsoft-specific host which didn't exist until years after the game in question was developed
is that Windows is injecting that
gameux.dll call into our innocent game exe's.
There's a paper
Malicious Application Compatibility Shims if you're concerned about security.
P.S. Sorry I had to trick the editor to post >2 links with <10 rep.