Monday, November 05, 2007

Upgrading Windows XP Home to Professional

Some time ago a friend of mine upgraded his little office network with a Windows 2000 server. Since then he had been using Windows XP Home edition - mainly to just access SMB shares on the server. There were however some pain points with that setup. Profiles were not stored on the server, so the backup to tape drives on the server could not include them. Moreover we had to manually take care of having identical user accounts on all machines to share data among them and grant access to each others printers.

So we decided to upgrade to Windows XP Pro, set up Active Directory and use roaming profiles. However because there were several products installed on the different workstations that take a long to time to configure properly we did not want to start from scratch.

Unfortunately with XP you cannot just change the product key and all of a sudden Home becomes Professional. For one the keys just do not match - there are even different keys for the retail XP Pro version and the corporate volume license installs...

So this is what we did to get to XP Pro without having to install everything anew. (Notice that all programs and settings remain intact. You will only lose all Windows updates since the state on the installation medium. You might also have to install some drivers again after the process, depending on your hardware)

Prepare the machines for upgrading

The basic idea is to do a "repair install" from the freshly bought XP CDs. That will overwrite all system files from the CD, so along the way you get the missing parts that Home does not have. However this puts you back into the stone-age, because the last XP CDs have a copyright date of 2004 and contain no fixes apart from SP2. So when the first machine failed to boot except for safe mode because of the 2007 nVidia graphics drivers not matching the 2004 system we uninstalled the drivers from the other machines upfront.

Perform "repair install" of XP Pro

Boot from the XP Pro CD. You will be asked if you want to use the repair console to fix problems with existing installations. I find this somewhat irritating, because we do want a repair install, but not with the repair console. After accepting the license with F8 the setup program will find the Windows on your hard disk. This time choose to repair that installation. At first I was somewhat shocked when I immediately saw "Deleting file:" messages flying through the status bar without further confirmation. However from here on you just have to wait. It will take about the same time as a fresh Windows install.

During the graphical phase of the installer you will possibly be asked to confirm or deny drivers that have not been digitally signed by Microsoft. These drivers are part of the Windows installation being upgraded/repaired. You should indeed follow the advice given in the confirmation box to NOT use them anyway. In our case this led to a machine blue-screening on boot because of the graphics driver! You are better served to reinstall the drivers when the upgrade is complete and all recent Windows updates have been applied again.

Optional: Prepare Offline Windows Update

As the Windows setup gave me some time to wait I decided to prepare an offline update CD to get the new installations up-to-date quickly. In case you have a real broadband connection this is not really necessary. As we only had a 1MBit DSL line at hand, downloading more than 80 updates plus several drivers on 5 individual machines did not seem like a good idea. So I downloaded "c't Offline Update" - a nifty little tool developed by the German c't magazine. The page is in German, however there are some links to English resources, too. I used the current version 4.1.

Basically what the tool does is get the list of all available upgrades for the products you select (Windows and Office in several versions and language versions) from Microsoft and downloads all updates automatically. They are then packaged into a CD or DVD image you can burn and use to update any machine without a network connection.

Install Windows Updates

As the CD install replaces lots of system files with outdated versions it is imperative to re-install all Windows updates that were lost. You can do so by either using the Offline medium created earlier (see above) or by simple visiting the Windows Update site via Internet Explorer. I noticed a problem after I had installed the CD on all machines: For some reason about 5MB of updates had not been installed offline. They showed up as new updates on, however I could not install them. Windows Update always seemed to start but almost immediately failed with (I believe, did not write it down) error code 0x800000002.

To get Windows update working again I needed to re-register some DLLs. Fortunately I found a script that does this automatically. I duplicate it here, because I have often seen forum links go dead after some time. However I would like to make clear that I am not to credit for this. The messages in the script are in German. They basically just say: "We are going to re-register some DLLs to repair Windows Update. We do not take any responsibility in case your computer does not survive etc."

@echo off

echo  Windows Update Wiederherstellung
echo  ================================
echo  Diese Hilfe dient zur Wiederherstellung aller notwendigen
echo  Microsoft Windows Update .dll Datei-Registrierungen
echo  Die Nutzung dieser Hilfe geschieht unter Ausschluss jeglicher
echo  Gewaerleistung und/oder Garantie fuer die Funktion auf allen Computern!
echo  Das Nachregistrieren der Dateien, beneotigt ein wenig ihrer Geduld!
echo                                                       -Team

@echo on

regsvr32 cryptdlg.dll /s
regsvr32 dssenh.dll /s
regsvr32 gpkcsp.dll /s
regsvr32 initpki.dll /s
regsvr32 jscript.dll /s
regsvr32 mssip32.dll /s
regsvr32 msxml.dll /s
regsvr32 msxml2.dll /s
regsvr32 msxml3.dll /s
regsvr32 qmgr.dll /s
regsvr32 qmgrprxy.dll /s
regsvr32 rsaenh.dll /s
regsvr32 sccbase.dll /s
regsvr32 slbcsp.dll /s
regsvr32 softpub.dll /s
regsvr32 vbscript.dll /s
regsvr32 wintrust.dll /s
regsvr32 wuapi.dll /s
regsvr32 wuaueng.dll /s
regsvr32 wuaueng1.dll /s
regsvr32 wuauserv.dll /s
regsvr32 wucltui.dll /s
regsvr32 wups.dll /s
regsvr32 wups2.dll /s
regsvr32 wuweb.dll /s

@echo off

echo  Alle notwendigen .dll Dateien wurden erfolgreich nachregistriert!
echo  Bitte testen Sie erneut den Zugriff auf die Windows-Update Seite.
echo                                                       -Team

Reinstall drivers

The last thing I had to do was install some drivers. For once the ForceWare drivers I had removed before the repair installation had to be restored, and on another machine I re-installed the AVM FritzCard drivers. However scanner drivers and even some special serial ports setups worked flawlessly without any manual intervention.

No comments: