Thursday, September 16, 2010

Move the Start Menu to a Different Folder

I was using Windows XP.  I had a customized Start Menu.  I didn't want to lose my customizations.  For one thing, I had rearranged shortcuts into categories that made more sense to me (e.g., Multimedia, with subcategories for video, audio, and images).  Also, I had shortcuts to portable programs (i.e., programs that didn't need to be reinstalled, every time I reinstalled Windows).  I had a folder on drive D that was dedicated to portable programs, and each had a link on my Start Menu.  I could wipe out drive C and reinstall Windows, and those programs would still be already installed.  I would just need to create another link to it; and that is one of the steps I wanted to avoid having to re-do.  I wanted to have that link, and its place in my customized Start Menu, already saved.

At first, I tried the approach of just copying my Start Menu from drive C to a backup location on drive D.  My Start Menu was already simplified:  I was the only user of my computer, so I had moved everything from C:\Documents and Settings\[username]\Start Menu to C:\Documents and Settings\All Users\Start Menu.  So I would just copy the consolidated Start Menu from C:\Documents and Settings\All Users\Start Menu to someplace on D.  Then, as soon as I reinstalled Windows, I would copy that start menu back to C.  I would then reinstall my programs (the ones that weren't standalones, already installed and ready to go on D) and would re-sort the start menu shortcuts into my preferred categories.  But now I wanted to go one step further and have those shortcuts already pre-installed too, so basically I would just delete the newly re-created start menu on C and instruct the registry to look automatically to the backup location on D.  So now it wouldn't be a backup anymore; that location on D would be my actual start menu.

I found an indication that the default locations of the Start Menu were specified by Start Menu registry entries at [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\] and at [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\].  Changing these would supposedly change the default location of the Start Menu folder, so that "all subsequent data will be saved at the new location by default."  That was fine, as far as it went, but my registry already had other entries pointing to the old location.  So I thought I would try doing a global search-and-replace.  WinXP's built-in Regedit wouldn't do this, so I needed an alternative.  I started by reading a rather lengthy discussion of freeware registry editors.  Based on that discussion, I decided to try RegEditX.  It seemed I didn't really need the optional (and shareware) Registry Crawler add-in.  I also downloaded RegAlyzer as an alternative.  Other recommended freeware alternatives that I didn't explore or download included RegScanner, Vilma Software Registry Explorer, Regseeker, Resplendent Registrar Registry Manager Lite, and Registrar.

RegEditX's help file described the program as an add-in to Windows's basic Regedit.  It really was Regedit with a few things added.  The first thing I did, in RegEditX, was to export a full copy of the registry, as a backup.  But then I didn't see a global search-and-replace option, or a nifty export-changes option, so I thought I might try RegAlyzer.  It didn't have global search-and-replace either.  But when I did a Find (looking for "\Start Menu"), it ran four hours and still didn't seem to have found anything, whereas Regedit found hits within a few seconds.  I ran it again.  This time it started finding stuff right away; but after the first 15 hits (which it found within a minute or so), it froze at HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\xmlprov.  And there it stayed for another couple of hours.  I verified, in plain old Regedit, that there were indeed occurrences of "\Start Menu" in later registry branches.

Ultimately, I found a simple solution for this problem and incorporated it into a registry script called Mega.reg that I used to make a number of registry changes all at once, as part of a tweaked Windos XP installation.