justice: PAE isn't disabled on XP, it's enabled and used to support hardware-assisted per-page no-execute protection. But with SP1 and onward, while PAE
is enabled on supporting hardware, physical memory addresses are artificially limited to 32bit. The official explanation is, as you mention, "bad drivers" which is of course part of the truth. But I bet that "not wanting to carve the market for server OSes" is part of it as well.
lanux128: as long as your application doesn't do "dirty tricks" with pointers and doesn't
assume it only has 2 gigabytes of address space available, you don't need to recompile or anything - simply use a hex editor and change a single bit in the PE header and the app is now made large-address-space-aware
- editbin.exe (which is really just a frontend for link.exe) from Visual C++ can also be used for this, and is a bit easier than messing around with hex editors :]