Sorry for starting a war but I didn't realize the system partition could
not get changed for its drive designator. Where are NTLDR, boot.ini,
and NTDETECT.COM is called (by Microsoft) the system partition whereas
they call the boot partition wherever are the rest of the files, but for
most users they are the same partition. Using diskpart from the
Recovery Console will work to change the drive designator. I don't see
running chkdsk will change the shortcuts (which are .lnk files, not
entries in the file system other than for the files themselves, but it
is the definition within the .lnk file that specifies the shortcut).
Nor will running chkdsk change values in the registry files (fixing the
file system does not alter the contents within the files unless, of
course, the "fix" is to truncate orphaned clusters or truncate a file
due to an unrecoverable bad sector).
Changing the drive letter shouldn't prevent Windows from booting up
(because %systemroot% is used as the path to find the system files
referenced in the registry and even your profile's path %userprofile% is
based in the registry from a %SystemDrive% variable for its root). Then
you go into the registry and make the changes for the changed drive
designator yourself. Since the definitions within the .lnk files are
not in the registry, you'll also have to visit all your shortcuts to
change their properties for the command line so they use the new drive
designator (and you probably should also change the Target field, too,
if it is non-blank). Often all you have to do is click on the shortcut:
if it cannot find the target then it will start looking for you and
often it finds it right away. While this can be done manually, it might
be easier to use Powerquest's DriveMapper (comes with PartitionMagic).
DriveMapper is supposed to change the drive letter in both the registry
and in the shortcuts. I notice that Powerquest recommends using Change
Drive Letter (a dialog under the properties for a partition when in
PartitionMagic) so presumably it does the same thing that DriveMapper
does separately, yet under the doc for Change Drive Letter it also says
not to change the drive letter for the boot partition (where is the rest
of the Windows files which is probably the same as the system partition
where are NTLDR, boot.ini, and NTDETECT.COM). I haven't used
DriveMapper but instead did the manual changes in the registry and for
the shortcuts myself.
Besides the registry and shortcuts, there may be configuration files
that record a static drive letter within them. Don't know if you'll
find much in win.ini or system.ini, but other .ini files might have G:\
instead of C:\ in them (if they don't use the %SystemDrive% environment
variable or use relative paths instead of absolute ones). The Search
utility in Windows XP won't search through all files if you specify a
string to search on (it only searches within files for which it has
handlers to read those files in their native format). So use something
like Agent Ransack to search any filetype for "G:\". The description of
DriveMapper is:
"When you create, merge, delete, hide, and unhide partitions, your drive
letters can change, causing applications not to run because application
shortcuts, initialization files, and registry entries refer to incorrect
drives. DriveMapper is a wizard that lets you easily update drive letter
references."
So apparently DriveMapper handles changing the drive letter references
in the registry, shortcuts, and in .ini files. According to
http://www.thenakedpc.com/articles/v02/11/0211-05.html:
"ALSO manually review DriveMapper's proposed changes and allow it to
change registry references, shortcuts (.lnk), and .ini files ONLY.
DriveMapper has the ability to change drive letter references inside
various system files, and letting it do so is what blew up my system."
I know back in Windows 2000 that a later fresh reinstall had its system
partition assigned to F: and I wanted it as C:, and I did manage to get
it to use C: instead of F:. I don't recall using DriveMapper but
instead doing a lot of work in the registry, editing shortcuts, and
searching files for the old drive letter. I don't remember having a
problem with the pagefile (with the possibility that it contains the old
drive letter in some references that may get reused on a reboot), but
you could simply delete the pagefile (configure to clear it on shutdown
or delete it from the Recovery Console using instructions at
http://support.microsoft.com/?id=255205). I have a .bat file to purge
my temp files in various directories but you could also use the Disk
Cleanup wizard.
Obviously when doing major surgery, backing up your partition beforehand
is a must. Save a disk image using DriveImage or another equivalent
tool. Then if it won't boot or is severely corrupted you can restore.
You'll end up with the old wrong drive letter but that's a cosmetic
issue. If a program won't install because it has harcoded "C:" in its
installation procedure then that's an issue to take up with the software
developer for the blunder on their part.