As far as I'm aware, the only way to restrict the memory pool prior to Windows booting would be to insert a process to allocate raw XMS memory in 386 Enhanced Mode, ie in a Virtual Machine, then remain as a stub after Windows booted to release the memory allocation later, if such a thing is technically feasible.
However even if it were technically feasible, the idea wouldn't have the desired effect. Windows dynamically allocates memory from the global pool, if more memory "became" available to the pool after Windows was operating it would not use it in any different way to memory that was present at startup.
Windows actually manages memory rather efficiently, the main FUD suggesting it is poor comes from software developers who would like you to think you need to buy their memory enhancers to "free up" memory. What you need to remember is that "free" memory is unused, ie it is not currently doing anything useful, and is therefore being wasted. If your system runs typically with 10% of the available memory free, then having 25% "free" is not going to help at all, in fact it means the other things that would otherwise be in memory ready to be used, now have to be loaded from the page file or the original file locations. Lying to Windows about the available memory at startup would have the same effect - system files like .DLLs would not be pre-loaded into memory ready for instant use, they would have to be loaded from the hard drive on demand, giving lags in application response.
If the system requirement is exceeding the available real memory and Windows is paging excessively, only additional physical RAM will solve the situation. If you already have 512M on a Win9x-ME system, you're starting to hit the wall with Windows' own internal limitations and an OS upgrade is the only real solution.
Edited by Platypus, 07 January 2008 - 08:46 PM.