
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.