Welcome!

Custom Solitaire Background - A Simple But Fun Mod

Written 5th May 2026

Want some cool new backgrounds on your Solitaire? I just did this messing around with some DLL files one night, it is a fun and basic mod that you can do in minutes. There are lots and lots of little things in Windows that you can mod in this way, I highly recommend that you mess around with these tools and see what you can change! (in a virtual machine perhaps…)

First things first, I did this with the old Solitaire from Windows 7/Vista, this mod will not work the same way on the modern store app version. Personally, I think the modern version sucks, it is subscription based and full of ads. If you would like the old one back, you can download it along with the other classic games here.

sample

With that said, let’s get started. Use a tool such as Process Explorer to see which DLLs the solitaire.exe process has loaded. Make sure you go to View and select Show Lower Pane, and set the pane view to DLLs. With that done, scroll down the list or search to find the Solitaire executable. Click on it, and you will see that it is making use of quite a few DLLs. After a while, you will start to know what a lot of these are. Most of them provide system-wide functions to programs and Windows itself, and are not specifically related to solitaire.
Hint: the one you want is called CardGames.dll :)

Process Explorer also has descriptions of most DLLs, these can be helpful in identifying what you are looking for. Next go to this file in explorer, and make a copy on your desktop. Open it using Resource Hacker or a similar tool (unless you feel like doing it manually using the API!) and expand the Data folder on the left side and go down to BACKGROUNDS\FELT.jpg (or whichever one you wish to replace). Right click it and go to replace resource then select file. This will open a file pick dialog, make sure whatever image you pick is the same format and the same size, you can see the size of the current resource image at the bottom of the window in Resource Hacker (I just resized mine in MS Paint). You will also need to replace the other image file ending in X2, e.g. BACKGROUNDS\FELTX2.jpg, with another copy of your image at the correct size. This is so the background image can resize appropriately when you make the solitaire window full screen.

As you may have noticed, there are a lot of other things you could change in here, e.g. replace the .wma sound files, change aspects of the animations in the xml files, change the thumbnails, and so on.

Next, click the save icon in Resource Hacker, this will save both an original copy and the modified one to your desktop. Then all that is left to do is drop that file in the same directory as the original (the path of CardGames.dll is C:\Program Files\Microsoft Games\Solitaire\CardGames.dll. You will get prompted as to whether you wish to replace the file with the same name, click yes and give admin permission. Now you can open up solitaire and should be able to see your new background! I may add to this post later with instructions on how to change the thumbnails, so stay tuned!



Year 30k? An interesting experiment

Written 10th March 2026

I wrote this little program a while back when I first started learning about the Windows API. For less than 20 lines, it has given me a surprising amount of entertainment and learning value! All it is doing is creating a struct representing the time you want to change the system to, and then passing it to the SetSystemTime() function. If you set the year to some absurd value, it can cause a variety of problems to occur, and I found it rather interesting to watch this unfold.

#include <Windows.h>
#include <stdio.h>

int main()
{
	SYSTEMTIME time;

	time.wYear         = 29999;
	time.wMonth        = 12;
	time.wDayOfWeek    = 6;     // this gets ignored by the function anyway
	time.wDay          = 31;
	time.wHour         = 23;
	time.wMinute       = 50;
	time.wSecond       = 0;
	time.wMilliseconds = 0;

/* Passes a pointer to the systemtime struct from above */
/* If it fails, print the error and return 1 to the OS */

	if (!SetSystemTime(&time)) {
		printf("Failed to set system time. Error: %lu\n", GetLastError());
		return 1;
	}

	printf("System time updated.\n");
	return 0;
}
				


To explain it a bit further, the year value of the SYSTEMTIME struct is a 16 bit unsigned int (called WORD in WinAPI) meaning that it should be able to accept values from 0 all the way to 65535 (2^16 - 1). However, there are at least two factors preventing this from being possible.

Firstly, Windows restricts the valid value internally to the range of FILETIME. It is used to keep track of time in various system components including NTFS. FILETIME is a 64 bit value that counts 100 nanosecond intervals since the 1st of January 1601, 00:00:00. It is like the Unix epoch of 1st Jan 1970, if you have ever seen a file in Windows randomly have a date in the 17th century, this is where that value comes from! Supposedly the Windows epoch was chosen as it lines up with the 400 year cycle of the Gregorian calendar (making some of the leap year math easier), although I could not find any info to confirm this for certain. Anyways, the point is this 64 bit value (I think it is called a Qword) can only store the 100ns ticks until the year 30827.

The second reason the year cannot be set that high is that Windows simply won’t let you! I have had almost no luck getting the year to stick much above 5000. However, I have not been able to find out why exactly or what really determines whether the year value is acceptable. There is next to no information that I could find about this topic online or in any other material I have read. With the year set at 5000, you can still observe some interesting behaviour, but this experiment has left me with more questions than answers.



In-Place Upgrade to Windows 11

Written 5th September 2025

If your computer is still running Windows 10 but does not support 11, you do have a few options if you still want to receive security updates. You can get extended updates for Windows 10, install the LTSC version, bypass the requirements to install 11, or maybe even install Linux!

If you do choose to upgrade, there are a few ways to bypass requirements that you may have seen floating around the web (Rufus, for instance). However almost all of these require a 'clean install' - essentially meaning that you have to completely wipe your existing Windows installation and start fresh. This is of course rather annoying, as you would have to install all your programs again and restore your files from a backup that you hopefully did correctly! So here is a nifty little method to upgrade your unsupported computer to 11 and keep all your files, programs, settings just as they currently are.

    Instructions

  1. Make sure everything is backed up. Preferably have a saved system image in case anything goes wrong. You can do this by going to Control Panel > Backup and Restore (Windows 7) > Create a system image. Back it up to an external drive. This will contain all your personal files as well as those needed for Windows to run.

  2. Download the Windows 11 ISO image from the Microsoft website. Scroll down to “Download Windows 11 Disk Image (ISO) for x64 devices” Select the option that appears, and click confirm at the bottom of the page. This should take about 15 minutes or so to download.

  3. Next, find the ISO image in your downloads folder, right click it, and select ‘Mount’. The ISO image is essentially a digital version of a DVD which you will use to install Windows.

  4. Once it is mounted, you will need to access it via the command prompt. First check in file explorer to see which drive letter has been assigned to the mounted ISO. Next, type cmd in the run dialog box (Win + R) and press ctrl + shift + enter to run the command prompt as admin. Type the drive letter, (e.g. E:) to change directories to the correct drive. Then type cd sources to change directories to the sources folder of the Windows ISO.

  5. The last command you need to type is .\setupprep.exe /product server. The installation process should start shortly after this. This command ‘tricks’ the installer into thinking that it is installing Windows Server, which does not check your computer for any of the usual requirements needed for Windows 11. Don’t worry though, it is just installing regular Windows 11, whichever edition is equivalent to the edition of 10 currently installed on your computer.

  6. It will ask you a few questions soon after starting, go with the default option to ‘check for updates’, as this will prevent you needing to do it later. Accept the EULA, and make sure to check the ‘keep files, settings, and apps’ option when this appears, this should mean that after the upgrade, your computer will be exactly as you left it.

  7. Next, the main part of the installation will start. It will take a little while and restart a few times, if you have an SSD (which you really should if you are planning to use Windows 11...) then it should take no more than half an hour.

  8. If it has all been successful you should see the new Windows 11 welcome screen and you should be able to log in to your regular account like usual :)

A few final things:

There are a few things you may find quite different about Windows 11 coming from 10; however most of these are easy to change so it is more familiar. For instance, the start menu being in the middle instead of to the left side. This can be changed by going to Settings > Personalisation > Taskbar > Taskbar Behaviours and set alignment to left. The right click menu in Windows 11 also has fewer options and they are in different places. You can get the good old Windows 10 menu back by running the following command as administrator: reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve. If you have any issues with the computer after the upgrade and would prefer to go back to Windows 10, you have 10 days to do so, just go to Settings > System > Recovery > Go back. This will take about an hour and will return your computer to how it was before installing Windows 11, including all your files.
This is by no means an exhaustive list of the tweaks you can make to it, but these are beginner friendly and simple to do. I may write more about this subject at some point in the future.