Can any .dll programmer help here, please?

edited August 2014 in Chit chat
Long story short, I was given a laptop to fix, where randomly when a game was started (by double clicking it's icon) the game would not start, instead you had to double click the icon again to get the game running. I did all the usual tests, but it turns out to be something relatively unknown, apparently - turns out that from Windows Vista onwards, Microsoft include something called Game Explorer in the OS.

I quote
As we all know, Vista introduced the Game Explorer (GameUX.dll) which incorporates update checking and game information.

What most don't know, is that the instant a game is launched, Rundll.exe is spawned with the GameUX.dll,gameshim parametre and constantly polls the dns, network and domain functions in the OS.

The problem here, lies in the fact that if this process does not receive a response, the Game's process will sit frozen until a response is recieved.

Now the Rundll process actually acts as a mask for the games executable until the response from the servers is received, that said closing the rundll.exe prior to the handover being made will also close the Games executable.

You can work around this in a way by killing the actual game executable, which will keep the rundll open, and then opening the game executable again. However as it is polling the net api's (Wininet), Rundll will consume a full core (13% for my i7), until you close it. which can cause a number of issues in single core games, and the like

The 'randomness' of the problem is actually whether or not the laptop was online when a game was opened. This problem is fairly unknown, since most off us keep our PCs permanently online, but it is known and hated by a fair few people, apparently.

Several user made solutions are on the 'net, along with later posts about how Microsoft have not cured the Game Explorer offline problem, but have stopped the user made fixes from working (and this is a major OS that we all support, how stupid are we?).

Anyway, one fix I couldn't try is
If anyone don't like registry editing or dll file deletion, could probably try replace GameUXLegacyGDFs.dll with this (x86) empty one...

do let me know it is working...

since the file is no longer available for download (the file sharing site no longer exists), and since that post is that person's only post on that forum, then (s)he is unlikey to see a pm if I send him/her one asking for the file.

So can anyone who understands .dll files please knock up three files for me, all called GameUXLegacyGDFs.dll and I'll try them one at a time to see what works.

What I need these files to do is;

1. File 1 should do nothing at all, just exit (or whatever a .dll file does when it's finished it's task), as that way, I assume, the whole Game Explorer thing will be bypassed.

2. File 2 should suspend a process called rundll32.exe . Not kill or delete the process, just suspend it, as rundll32.exe needs to be present and if it's suspended then it might cure the problem.

3. File 3 should kill the game and then reload the game (which is the same, I hope, as the user opening (starting) the game again.

If anyone can make these files, then please do so if it's not a too much trouble, and either stick them on the 'net, or pm me for my e-mail address, please.

Thanks for reading this, and for more information, see:


http://answers.microsoft.com/en-us/windows/forum/windows_other-gaming/windows-7-game-explorer-interfering-with-game/efd39c74-cfab-4c2c-b6c5-834b8849a1b3

http://answers.microsoft.com/en-us/windows/forum/windows_7-gaming/older-games-causes-rundll32exe-to-open-and-100-cpu/2b15ee2f-b56b-e011-8dfc-68b599b31bf5

http://answers.microsoft.com/en-us/windows/forum/windows_other-gaming/games-do-not-launch-rundll32exe-keeps-using/797b227c-3dca-439b-995f-b179bac7e347
Post edited by ewgf on

Comments

  • edited August 2014
    I can't help with the specific thing you're asking for, but if you can figure out the addresses that the DLL polls (I used to have a tool for that on XP) then you might be able to add their names to your HOSTS file and let them resolve to 127.0.0.1. That might do the trick.

    But if you replace a system file, like a DLL, you might run into the problem of the OS seeing that the file isn't genuine and wanting to restore it from your original media.
    Website: Tardis Remakes / Mostly remakes of Arcade and ZX Spectrum games.
    My games for the Spectrum: Dingo, The Speccies, The Speccies 2, Vallation, SQIJ.
    Twitter: Sokurah
  • edited August 2014
    Sokurah wrote: »
    I can't help with the specific thing you're asking for, but if you can figure out the addresses that the DLL polls (I used to have a tool for that on XP) then you might be able to add their names to your HOSTS file and let them resolve to 127.0.0.1. That might do the trick.

    How do I do that please? I've never even heard of a HOSTS file before, let alone how to alter it, or how to find out what addresses a DLL file uses.

    But if you replace a system file, like a DLL, you might run into the problem of the OS seeing that the file isn't genuine and wanting to restore it from your original media.

    True, but I'm sort of hoping that Microsoft's incompetence will for once work on my side, and Windows won't check the file unless the sfc command is ever used.
  • edited August 2014
    ewgf wrote: »
    How do I do that please? I've never even heard of a HOSTS file before, let alone how to alter it, or how to find out what addresses a DLL file uses.




    True, but I'm sort of hoping that Microsoft's incompetence will for once work on my side, and Windows won't check the file unless the sfc command is ever used.

    hosts file is in here on windows 7
    c:\windows\system32\drivers\etc
    Professional Mel-the-Bell Simulator................"So realistic, I found myself reaching for the Kleenex King-Size!" - Richard Darling
  • edited August 2014
    What Sokurah suggests might be worth a try if you are desperate, but it is not a given that the processes are stalling because (and here am doing a reasonable assumption that they don't use hard-coded IP addresses) name resolution fails when you are offline. Pointing connection requests to 127.0.0.1. or in effect sinkholing them might not make much of a difference.

    But luck favours the brave. So, you will need a tool such as TCPView - http://technet.microsoft.com/en-us/sysinternals/bb897437 - to monitor the processes and find out which hosts they are trying to access (e.g. www.microsoft.com), and edit the file C:\windows\system32\drivers\etc\hosts . You need to do this in elevated mode or you won't be able to write to that location. For example, run notepad as administrator. Once you are editing the file, add a line such as the following (using www.microsoft.com as example) for every host connection you were able to monitor:

    127.0.0.1 www.microsoft.com

    Go offline and run game explorer. Fingers crossed. :-)

    /Pedro
  • edited August 2014
    As far as I'm aware, System File Checker runs in the background at all times and is designed not to be easily disabled, so that might scupper your chances of overwriting the DLLs.

    Also, you might find that AV software might flag a replacement attempt and quarantine/remove the new files.

    Modifying the hosts file does sound like a good approach.

    B
    The Spectrum Resuscitation Thread - bringing dead Spectrums back to life
    zx-diagnostics - Fixing ZX Spectrums in the 21st Century (wiki)
    Sinclair FAQ Wiki
  • edited August 2014
    Thanks for all the information, I can't try it now (off out in a few minutes), but I'll try it tomorrow and post the results.
  • edited August 2014
    I only got around to trying it today, and TCPView doesn't show any port addresses being accessed by rundll32 or the Game Explorer, but I phoned the owner up (well, his mum, who I work with, and she put him on) and told him it was caused by the laptop being offline when the games were loaded, so he said he'll just keep the laptop online when it's on. So really it's the end of the problem for him, but it is irritating that I couldn't fix such a stupid problem, and instead had to tell him how to avoid a problem that's not his fault.

    It shows how much we take online for granted though, as it didn't occur to me that his laptop would have been offline, though even if it had, I wouldn't have made the connection, as until now I've not heard of this problem.

    Anyway, thanks for the advice everyone.
Sign In or Register to comment.