Transferring Windows 7 to dissimilar hardware: A rabbit hole straight into hell

This week I had a particularly important end user that needed to move to newer hardware. This user was running Windows 7 on an HP 8200 desktop (pretty old) so I wanted to move him to an HP 800 G3 mini, which is a beautiful sleek computer. The problem was, he has a TON of third-party software that is used on his computer, most of which is vital to operating his department. The process of re-installing all these apps and configuring them on a new machine would be long and frankly horrible. I know that this is “probably” the best and cleanest way to go, but I thought it would be better to just transfer his machine using a backup and restore to new hardware saving hours of time… needless to say doing this in Windows was NOT as simple as I had hoped.

Try #1

I use UrBackup to backup certain desktops in my org, a free and pretty nice backup system that allows backing up of all major operating systems to a server. You can do bare metal backups as well, which is what I thought I would try. So after a bare metal backup of the source machine to the new one, Windows would not boot. I got the old “Windows failed to start, a recent hardware change” yada yada yada.

Damn it. OK, so I decided to use DISM offline via WinPE to add HP drivers to Windows and try again. Nope. Eventually I totally corrupted Windows and it would not boot at all so I had to start over. FML.

Try #2

I figured there had to be a free tool for doing this that made it easier. After some research I decided to download a trial of EaseUS Todo backup. Their documentation stated their software can allow you to restore to dissimilar hardware. Perfect. Now I am sure in the background it is using the same Windows bare metal technology and DISM to do this, but hey if it works it works. So, did the same thing, backup, restore, added drivers using their USB emergency drive. Should work perfectly.

This time the computer booted to the console, but no USB ports worked and no NIC. F***! Since the Windows 7 instance is coming from old hardware, prior to USB 3.0, the drivers didn’t work.

So, I can boot to Windows, but I cant login and I cant even RDP to it. Obviously Windows wasn’t installing the drivers even though they are now in the Driverstore like I thought it would. From here, I tried a multitude of things…

  • Adding only certain drivers like the chipset and USB 3.0 drivers. Nope.
  • Removing older chipset and USB drivers from the 8200 series. Nope.
  • Safe mode. Nope
  • Boot and disable driver signing. Nope.
  • Praying to God to just let me be done with this. Nope.

So I sat there and cursed the Gods and figured I would reach out to Johan Arwidmark. I thought to myself he has don’t so many damn deployments he probably has an idea of how drivers in Windows is supposed to work. His first response is to try safe mode, which I had already tried the previous day and failed at. After this, I sat there and thought how the hell can I get into this computer without keyboard or RDP.

Then it hit me. Sysprep. You know, what I probably should have done from the start, although I did not want to do it on the users machine. The only problem is how can I run sysprep since I can’t get into the machine? Then I got a great idea.

I booted to WinPE and opened regedit. I added the autologon keys so that Windows would log right in automatically. Then, I added a runonce key to run sysprep /generalize at logon of that same user.

Boom. Booted the machine, did the auto logon, Sysprepped itself and shutdown. On the next boot, Windows installed the proper HP drivers and I was on my way, finally able to login with a keyboard. The rest of the process was just removing it from the domain (make sure the NIC is disconnected while doing all of this), changing the hostname and installing the rest of the drivers I missed.

Comments are closed.