I just uploaded my session manager, because of the mail I've been seeing
about how to restore settings. I have been using this script or
variants of it for several years, and it works well for me :-)
The idea is that you start gvim in a particular directory, and this
script (a plugin) will look for a 'sessions.vim' file, which is a
combination of a session file (mksessions) and a viminfo file
(wviminfo). You can have a many named 'sessions' as you like in each
directory, and you can switch between them quickly and easily.
A session stores the window sizes and positions, all buffers loaded
(except empty and help buffers), the argument list, the histories, etc.
Essentially, it works like CodeWrite only much better :-).
Oh, and it works on Linux and Win32 (and the session.vim file is
/almost/ portable between them).