How to allow a 32 bit executable to use more memory than the 2GB limit imposed by Windows OS


A client of mine has issues with TpsFix where the file that was being recovered caused TpsFix to crash when it hit the 2GB limit imposed on 32 bit executables.

Now its debatable why TpsFix need to be using so much memory (or if there is a memory leak) but that is for another discussion.

After a brief conversation on the Skype CW-Talk Chat, it was pointed out that inside the PE (Portable Execution) information of a 32 bit executable there is a flag that can be set to allow the executable to use more than the 2GB of memory (Whis is a limit imposed by the OS for 32 bit executables) . More info about PE here More Info here

After searching Google about this issue I found this utility.

The utility lets you select a 32 bit application and changes the flag inside the PE so that it can use memory above the 2GB limit.

We used the utility on TpsFix.exe and upon processing the problem file after the change we were able to recover the file that would cause the crash before.