Posts

Enabling More Than 4 GB of RAM Under Windows 7 32-Bit

in Technical Articles

One popular answer I’ve written for Super User was to the question titled, “How can I enable PAE on Windows 7 (32-bit) to support more than 3.5 GB of RAM?” A great question, especially because there’s no technical reason limiting Windows from doing so.

Editing the Windows kernel using the free XVI32 Hex Editor. The maximum memory limit values for Windows are set in the actual kernel binary itself.

I came across a patch developed by UNAWAVE a few years ago, which has a copy of the Windows 7 RTM kernel. Recently, however, the patch was taken offline, since the patch was apparently causing some virus scanners to report a false positive. Fortunately, there are still two options for you to enable the use of more than 4GB of RAM under 32-bit variants of Windows 7:

  1. I saved a copy of the patch before it was taken offline, which you can download from here. While this patch does not replace/modify any Windows files (it simply adds another kernel .exe file and the appropriate boot menu item to use it), it does contain an older build of the Windows kernel (7600 from RTM, as opposed to 7601 from SP1).

    While I personally haven’t experienced any issues with the patch, if you wish to use kernel 7601, see the next option. This patch adds another boot option when loading Windows, so you can easily disable the patch and boot the unmodified kernel (which may be useful if certain Windows updates require the kernel version to match 7601, but I haven’t had any problems yet).

  2. UNAWAVE have also released instructions detailing how to manually patch your Windows kernel. This follows the same methodology as the above patch, including making a copy of the kernel and adding an additional boot menu item. This process is significantly less automated than the patch from option #1, but if the patch is detected as a false positive on your system, or you require kernel 7601, you need to follow these steps instead.

While you should use caution whenever modifying your system files (especially the Windows kernel), the methods detailed in this post (both the patch executable and the instructions by UNAWAVE) don’t modify any existing system files. A copy of the existing kernel is made, and then patched and added as an additional boot-menu item. This ensures that even if there is a problem with the patched kernel, you can still boot into Windows using the unmodified kernel.


For those interested in the technical details, there is a huge spread in memory limits for all Windows releases, regardless of the instruction set being used (x86, x86-64, or IA64). For example, some 32-bit variants of Windows Server 2003 and 2008 can support up to 64 GB of RAM. In the article by Geoff Chappell titled “Licensed Memory in 32-Bit Windows Vista“, he sheds some more light on why these limits were imposed in the first place:

That 32-bit editions of Windows starting with Windows Vista are limited to 4GB is not because of any technical constraint on 32-bit operating systems. The 32-bit editions of Windows Vista and Windows 7 all contain code for using physical memory above 4GB. Microsoft just doesn’t license you to use that code.

Thus, 32-bit variants of Windows 7 do have the ability to support more than 4GB of RAM natively. The RAM restriction was placed due to licensing issues. Finally, it should be noted that since pointers are 32-bits wide under the 32-bit version of Windows, each process can still only address up to 2^32 = 4,294,967,296 bytes = 4 GiB of memory each, regardless of how much physical memory is available. Although each individual process can only have a 4GB address space, all of the processes running on the system can occupy more than 4GB of physical memory, with the patched kernel.



9 Comments

  1. Rama Mohan Reply January 3, 2013 3:56 AM

    Would this work on Win 8 32 bit? Advice pls

    • Brandon Castellano Reply January 16, 2013 9:11 AM

      No, unfortunately this patch is *only* for Windows 7 32-bit editions, as the patch overwrites part of the kernel. You may be able to follow these steps from UNAWAVE, if Microsoft hasn’t modified the relevant parts of the kernel, and you can find the appropriate section to edit (I don’t have Windows 8 yet, so I can’t test this right now).

      If anyone does follow these steps on Windows 8 (hex-editing part of your kernel to do the same thing as the original patch), I’d be interested to hear your experience.

  2. chris Reply June 7, 2013 1:02 PM

    Thanks ive been looking for this old patch everywhere, the new ones dont work but this did it for me.

  3. Daniel Reply August 8, 2013 6:54 AM

    Well I tried the patch, but still shows 4gb installed, 3 usable on Windows 7 Ult.

    Is there any difference with the memory I have being DDR2?

    • Brandon Castellano Reply August 8, 2013 7:17 AM

      After installing the patch, there should be two boot options listed when you boot your computer. Booting from the modified one should allow you to access the additional RAM you have (assuming the BIOS hasn’t reserved any for itself or for VRAM), but if you still boot from the old Windows kernel, you won’t see any change.

  4. Chris C. Reply October 16, 2013 8:26 PM

    Could someone steer me to the proper resources to do the same for Windows XP Pro SP3? I heard there is a way to use the Windows Server 2003 Enterprise edition kernel, but have found no practical information about it. My most important software, some of it dating from the early 90s, simply won’t run properly on anything post XP and believe me, I’ve tried for years. Now that I have a machine with 8GB RAM, I would love to be able to actually use it.

    • Cezary Reply December 27, 2013 6:15 PM

      I would love to see XP using more than 4 GB of RAM too. Got Windows Server 2003 Enterprise (PL) in .iso, installed few times on vmware. I’d like to be useful, so if there’s any chance do to this – I’m in.

  5. Rob C Reply November 5, 2013 8:23 PM

    Can this trick JAVA into letting me use over a gb of ram?

  6. Yannos Reply December 13, 2013 5:54 PM

    Was wondering how this patch would be applied if already using EasyBCD to dual boot win7 x32 & x64? (7600 kernels)
    Would I have to disable BCD fist, run it on the clean x32? Will BCD find the ‘normal’ x32 and mem extended? then I’d re-add teh x64 boot?

Post a Comment

Your email address will not be published. Required fields are marked *

*