##

It started out as a way to let my wife use my OS/2 partition, 'cause she always had problems with her Win95 one. Then, I went ambitious :-)

##

I tested all commercial/shareware/free packages I could get. Noone satisfied me. I wanted to be able to have separate user_ini *AND* separate system_ini, so that I could use different desktop enhancers on different desktops (e.g. Object Desktop 2.x on one desktop, and XWorkplace on another).
All tested programs had problems (nearly all were very old), most were no more supported, none was flexible enough.
For a few months I did beta-testing for 'Secure Desktop', but at some point it was clear it wasn't going anywhere fast (due to the problems with SES). It has now been abandoned.
So I sat down...

##

All above packages use the dreaded PrfReset() API, to change the INIs on the fly. While this seems a good approach, since it allows changing desktop without a reboot, it brings so many problems and limitations that after a few experiments I decided to take another route.
So I opted for the most compatible and documented way: changing the USER_INI and SYSTEM_INI variables in the config.sys before the WPS loads.

##

First of all, PrfReset cannot change the system_ini, so this is a show-stopper, if you want to be able to have different registered classes on different desktops.

Also, PrfReset broadcasts the 'PL_ALTERED' message to all message queues to indicate that applications should re-read their settings from the new set of INI files.. but there are nearly no applications that intercept this message.
Well, applications could be closed upon a desktop switch, so that on restart they would pick up the changes... but not all applications can be restarted.
For example, if you have a desktop enhancer (Object Desktop, CandyBarZ, Styler/2, XWorkplace, etc..) you can't unload it, because of the way it gets loaded upon (or before) WPS start (I won't go into details here, but if you want to know more you can write me).

PM itself won't pick up some changes on desktop switch (e.g. change of system fonts in which the standard message boxes are displayed).

In short, after changing the desktop just once, you end up with a mess of the previous desktop settings and the actual ones (at least if you don't have a super-simple desktop setup).

##

The only downside is that you have to reboot to change desktop (at least for now.. see Help Me!!). Given all the bonuses of this approach, I felt it was a small fee to pay. Also, nowadays' PCs boot so fast that it isn't a real problem, other than resetting your uptime counter ;-)

The bonuses are many (also see Who Needs It?):

- Have different user_ini *and* system_ini files for each user.
- Have different screen resolutions on different desktops/users.
- Have different WPS enhancers on different desktops/users.
- Have different WarpCenter configurations on different desktops/users.
- Have different environment settings based on the user.
- Have users who don't use the WPS for their desktop (e.g. PC/2, CMD.EXE, etc.)
- Protect some files from other users (mild security)

All the above things are simply not possible with the PrfReset approach, or are completely new achievements made possible by the fact that µDesk loads before the PROTSHELL.