My wife does not like the new Windows 7 versions of Microsoft Solitaire, Hearts, etc. To keep her happy I would like to run the Vista versions of these games (and others) under Windows 7 (x64). So far, I've copied over all the subdirectories from the Vista Microsoft Games directory (x64) to a new directory on the Windows 7 system. I've also added the cardgames.dll file from the x64 Vista system32 directory to each of the above subdirectories on the Windows 7 system. UNFORTUNATELY, none of the games will run on the Windows 7 system! I don't get any error messages, but each program just stops after (it appears) running for about 5 seconds. Perhaps a "Version check" is built into these Microsoft programs (like it apparently is in the Win 7/8 versions)? I've seen the recommended "hex" patch to disable version checking in the Win 7 versions of these program, but no one seems to mention how this can (hopefully) be done on the Vista versions. Any suggestions would be greatly appreciated! Wayne
Thanks, Daz. Unfortunately, I don't see mention of either Vista Solitaire or Hearts which are the two programs my wife is most interested in... I have the EXE files for both these files (along with the other games that are preinstalled with Vista) and was just hoping to find the appropriate "patch". Wayne
I've just tried copying the x86 versions of the Vista games (hearts.exe, solitaire.exe, etc.) onto an x86 Windows 7 system. Again, all of the programs "crash" after a few seconds but at least now they give an error "dump" with an Exception Code of 80000003 ("unhandled exception?). In each case the faulting module is the main executable (e.g. solitaire.exe). I've tried putting CardGames.dll (Vista x86 version) in the same directory as the executable, but that made no difference. Also, I tried the 7D => EB version checking "patch" but that did not help either. I'm starting to wonder if these Vista games require some sort of activation or whether they are "hard coded" to only run under Vista? This seems a little strange, since it appears that the Windows 7 versions of these games can be made to run under Windows 8 (and many XP versions of these games run under Windows 7). Any thoughts/suggestions would be greatly appreciated! Wayne
I used the "depends.exe" program to determine that "IEShims.dll" was not being found. This problem was eliminated by adding "C:\Program Files\Internet Explorer" to the system PATH environment variable. (I've read that this path was included under Vista, but I don't have a Vista system to confirm this.) Using the Profile option of "depends.exe" I've determined that the Vista version of Solitaire.exe (running under Win 7) "crashes" when it is unable to dynamically load "Cardgames2.dll". The call to load this DLL comes right after a successful attempt to load "Cardgames.dll". I've put the Vista version of "Cardgames.dll" in the same directory as Solitaire.exe, but I'm not sure that that version is the one actually being used... I can't find any mention of (the apparently missing) "Cardgames2.dll". DOES ANYONE KNOW ABOUT CARDGAMES2.DLL AND WHERE IT MIGHT BE FOUND? Thanks, Wayne
Well, I completely searched a Vista Ultimate, and this file just doesn't exist. Only cardgames.dll can be found (in the WinSXS directory and the hardlinked file in %windir%\system32). No cardgames2.dll.
Carlos, Interestingly when checking the Win 7 version of Solitaire (under Win 7 X86) I see that it, also, makes an unsuccessful call to cardgames2.dll! It seems, then, that a missing cardgames2.dll is NOT the cause of Vista Solitaire crashing under Windows 7! The mystery continues... Wayne
woot332, Thanks for the info! I have the 7D => EB "patch" for (apparently) the version check problem, but do you know how to get around the enable-game problem? Hoping for the best, Wayne
hearts.exe from vista works fine in win7 with one byte patch so should solitaire.exe. Patch the code calls to slc.dll "GetWindowsInformationDWORD" simple as that.
woot332, I assume you are referring to the SLGetWindowsInformationDWORD function exported by slc.dll. Is the "patch" you mentioned one that sets the return value of this function to S_OK? (I assume my problem is being caused by the function returning some other value?) I'm sorry to be "dense", but I have no idea how to locate the location in the exe file that needs patching. Any "hints" would be greatly appreciated! Wayne
Use a hex editor Hearts.exe sha1: 0691C210B857EC166C2C74888BF784DF2CB72F49 rawoffset: 0003486F 7D-->EB Solitaire.exe sha1: DE1F594A9639F2B0011EF421A4329A92F428BBFC rawoffset: 00034E13 7D-->EB
Thanks once again. Unfortunately, my X86 Vista copies of solitaire.exe and hearts.exe are versions 6.0.6001.18000 which seem to be slightly different than the ones that you have. The 7D values are not at exactly the locations you mention, but there ARE a number of 7D's nearby. If you could give me a little of the the hex values surrounding the 7D I should be able to locate the proper "patch" location. Thanks, Wayne
Thanks, woot332 but I'm leaving town very shortly and was just hoping to do a "quick & dirty" hex patch on the various VISTA game files (both x86 and x64). If that isn't possible I'll just wait a couple of months (until I get back) before tackling this problem again.... Thanks anyway, Wayne