It can be a nuisance transferring windows to a new HDD for a system when that windows has previously seen that drive as an external.
It boots OK but then has the wrong drive letter for the user profile so it can’t login, since Windows “knows” the drive by the letter it was last used as, not the default C:.
In this case I was updating a laptop with a bigger drive, which I’d previously used as an external USB drive for it.
In this past I’ve used a BartPE XP boot CD to get into it but in this case I got it to allow login by plugging in the original drive as the USB drive. It could now find its profile and let me in.
Then in regedit I removed everything in HKLM\System\MountedDevices (maybe best to just remove the \DosDevices only) then it booted fine from the internal drive.