Saturday, 18 April 2015

How to get Solitaire, Minesweeper, or any other Windows 7 game on Windows 8

I bought my wife a Windows 8 laptop a little while ago, and while it's very good in many ways and far from the satanic product it's often made out to be, it has one major flaw: it doesn't ship with Solitaire! Or Spider Solitaire, or Minesweeper, or any of those games that make office life ever-so-slightly less awful. Installing these games turned out to be a rather more involved process than I thought it would be, and I thought I'd put together a guide for those who wish to replicate it. While it looks rather complicated, it's not really difficult at all, and I've tried to write this guide so that even the most technophobic of readers can follow it.


It's worth noting at this point that Windows 8 versions of the games are available free from the Microsoft store: just open the store and search for "Microsoft Solitaire Collection". For many, these will be a perfectly acceptable methadone; what follows is for those purists who seek a more traditional opiate. To follow this guide, you will need:
  • Access to a machine running Windows 7
  • A memory stick or some other way of copying .exe files to the Windows 8 machine
  • An internet connection.
Before we start: I'm assuming that Windows on both machines is installed on the C:\ drive, as this is the default position, and have written the instructions accordingly. If you haven't installed Windows on that drive, then substitute whatever drive you did choose for "C:\" in the following instructions.
1) Find and copy the games from Windows 7
On the Windows 7 machine, navigate to "C:\Program Files" and copy the entire "Microsoft Games" folder to your USB stick or whatever medium you're using to transfer the files.

2) Find and copy CardGames.dll
On the Windows 7 machine, navigate to "C:\Windows\System32" and copy the "CardGames.dll" file to the USB stick as you did with the games files from step 1.

3) Install the games on Windows 8
Move the USB stick to the Windows 8 machine, and  copy the "Microsoft Games" folder from it to the "C:\Program Files" directory. Copying them to this location will require administrator permissions.

4) Copy CardGames.dll
On the Windows 8 machine, navigate to the "C:\Program Files\Microsoft Games" folder you created in step 3. This should contain a number of folders containing the individual game files. Copy the "CardGames.dll" file from the USB stick into each of the folders of the games you wish to play.

5) Disable the version check
Right now, if you try and run any of the game .exe files from the folders you accessed in step 4, nothing will happen. This is because the games are checking what version of Windows you are running and refusing to run on systems that are not using Windows 7. To prevent this check from running you need to edit the .exe files using a hex editor. If you already have a hex editor installed, skip ahead to step 8. If you don't have a hex editor, or have no idea what I'm talking about, read on.

6) Download and install Notepad++
Notepad++ is a free, open source text editor, superficially similar to the Notepad that comes with Windows but much more powerful and useful. Open the Notepad++ download page in your browser of choice, and click the link to download the Notepad++ installer.
Once it's downloaded, run the installer "npp.X.X.X.Installer.exe" from wherever it's downloaded, and follow the instructions (the X.X.X. in that file name will be numbers representing the version of Notepad++). I recommend that you allow the installer to place a shortcut on the desktop, as this will save time later on.

7) Install Notepad++'s Hex Editor plugin
Open Notepad++ if it is not already running, and, from the action bar, select "Plugins", then "Plugin Manager" and "Show Plugin Manager".
In the Plugin Manager that appears, scroll down to "HEX-Editor", tick its box and press "Install". Once this is done, Notepad++ will prompt you to restart it. Allow it to do so, and then close it.

8) Prepare to modify the .exe files
If you are using Notepad++, right-click its icon on the desktop or the start menu and select "Run as Administrator". If you open it normally, you will not be able to edit files in protected locations. If you are using your own hex editor, you should probably start that with administrator privileges as well.
From here on the instructions will be written for those using Notepad++; if you're not using it then you have your own hex editor and so I'm assuming you can follow along.
Once Notepad++ has opened, go to "File", then "Open", and navigate to the games folder ("C:\Program Files\Microsoft Games"), and then open one of the individual games folders. For this example, I'll be using Solitaire. Select the "Solitaire.exe" file and open it.

You'll be presented with a page full of nonsense like this:

We now need to switch to hex editing mode. To do this, select "Plugins", then "HEX-Editor", then "View in HEX".

You should now be presented with a rows of hexadecimals, looking something like this:

We now need to edit this file to stop the version check from running. The edit we need to make will be different depending on whether we got the game files from a 32- or 64-bit version of Windows 7. If you know you're running a 64-bit version, you can skip ahead to step 10. If you don't know what version you're running, or have no idea what I'm talking about, keep reading.

9) Editing for 32-bit
In the open Notepad++ file, search for the following string:
7d 04 83 65 fc 00 33 c0 83 7d fc 01 0f 94 c0
Do this by opening the "Find" window (either click "Search" and then "Find", or press CTRL+F), and copying/typing that string into the "Find what:" box. It doesn't matter whether the letters or capitalised, or whether there are any spaces. Then press "Find Next". If you get an error message reading "Can't Find", you either typed in the string wrong or have a 64-bit version of the file. If the latter, skip to step 10.

Once you've found the string, you need to replace the first "7d" with "eb". You can't delete characters in a hex file, so to do this simply place the cursor in front of the first "7d" and then type "eb".

Then save the file by clicking "File" and then "Save", or by pressing CTRL+S. You can now skip to step 11.

10) Editing for 64-bit
In the open Notepad++ file, search for the following string:
3b c6 0f 4c
Do this by opening the "Find" window (either click "Search" and then "Find", or press CTRL+F), and copying/typing that string into the "Find what:" box. It doesn't matter whether the letters or capitalised, or whether there are any spaces. Then press "Find Next". If you get an error message reading "Can't Find", you either typed in the string wrong or have a 32-bit version of the file. If the latter, go back to step 9.

Once you've found the string, you need to replace the first "3b c6" with "39 c0". You can't delete characters in a hex file, so to do this simply place the cursor in front of the first "3b" and then type "39 c0".

Then save the file by clicking "File" and then "Save", or by pressing CTRL+S.

11) Testing
If you navigate to the Solitaire folder ("C:\Program Files\Microsoft Games\Solitaire") and run the "Solitaire.exe" file, the game should now open normally. You may now wish to create a shortcut to the game; to do so, right-click the .exe and click "Send to" and then "Desktop (create shortcut)".
Repeat steps 8-10 for each of the games you wish to play.

Hope that helps.

17 comments:

  1. Thank you, thank you, thank you! Yours was the first article I found that included the 64-bit Hex info, and after following your instructions, I now have FreeCell, Solitaire, and SpiderSolitaire all working on my Windows 8.1 64-bit OS. I appreciate your efforts so much!

    ReplyDelete
    Replies
    1. The 64 bit versions of Mahjong and Minesweeper that I have do not contain the hex sequence stated. They appear to have the sequence 3b c7 0f 4c instead. ie 37 as the 2nd byte in lieu of 36. Changing the 36 c7 to 39 c0 works as per the published procedure. The procedure also works on Win 10

      Delete
    2. oops that should read "... ie c7 as the 2nd byte in lieu of c6. Changing 3b c7 to 39 c0 ......" Apologies for the typos

      Delete
    3. Many thanks! The original patches and the 64-bit Mahjong and Minesweeper patches worked for Windows 10.

      Delete
  2. Can anybody help with a similar fix for Chess?

    ReplyDelete
    Replies
    1. ... 64-bit please.

      Delete
  3. Thanks for sharing. Hey, of you have problems with missig dll-files I have great solution. Just download the missing file here http://fix4dll.com/isdone_dll and install it following the "how to" installation guide.

    ReplyDelete
  4. Trying to patch Solitaire.exe from 64-bit Windows 7 so it runs on Windows 10 (same machine but recently "upgraded" to W10). The hex values match the ones shown above, and the offset to the start of the patch is identical. Put the dll in the Solitaire folder, but still didn't work. Tried running as Admin and W7 compatibility mode, but that didn't work either. Verified patch to make sure only two bytes were changed. Is there some CRC or hash that has to be recalculated? What other checks are preventing this from running?

    ReplyDelete
  5. Thanks to all for efforts, but I'm having same problem as Anonymous 7 July -- still won't work on upgraded Windows 10. Watching for more info.

    ReplyDelete
  6. The Windows XP version of Solitaire works without modification on Windows 10!
    On an XP computer, in Windows\system32, find sol.exe and cards.dll. Copy these two files to a folder on a Windows 10 computer. You can launch this old version of Solitaire by simply double-clicking the sol.exe icon.
    I discovered this after I failed to get the 64-bit hack (above) to work on my upgraded-to-Windows-10 computer. But, in a way, I like this older version of Solitaire even better than the Windows 7 version: It is more like the actual card game in that it doesn't allow cheats (undo plays that exposed previously hidden cards).
    ... Anonymous 31 July AKA Rick Cr

    ReplyDelete
  7. Following a recent update to Windows 10 a few days ago, this fix no longer works. As before, the solitaire.exe file which I had edited was removed from my computer. Luckily I kept a copy but when I transferred it to my hard drive it won't open. So is a new code change required?
    Why is Microsoft so determined to prevent its customers playing Solitaire for free?

    ReplyDelete
  8. Windows 10 Anniversary Edition breaks this method unfortunately. It only works with Windows 10 10240 and 10586 (aka 1511).

    ReplyDelete
  9. This comment has been removed by the author.

    ReplyDelete
  10. http://i.imgur.com/2dfJolI.png

    OK guys, it's a simple fix to get this working again in Windows 10 Anniversary update.

    I only know a fix for the x64 file. Someone will have to experiment a fix for the x86 file.

    In addition to changing "3b c6" to "39 c0" you also need to change the number preceding "3b" to "00".

    So, the sets of numbers to change are....

    "40 3b c6" change to "00 39 c0".

    That worked for me. Hope it works for you too!

    ReplyDelete