28

I got a new laptop; it came with an existing windows installation, but I wanted to migrate my current backup to the new machine. I dd-ed the new machine's partitions to an external drive:

/dev/nvme0n1p1
/dev/nvme0n1p2
/dev/nvme0n1p3
/dev/nvme0n1p4

and afterwards moved my current partitions to the new machine. What followed was a medium-sized nightmare. The new machine would boot, but the wireless network drivers were not recognized and later found out (to the best of my knowledge) they couldn't be installed. I tried:

  • booting from the console and running:

    sfc /scannow
    chkdsk C: /f /r /x
    

    both seemed to have completed successfully, but now the machine would get stuck in a startup repair loop.

  • I tried resetting the machine (whilst keeping my files), but this failed halfway through.

  • now the machine's still stuck in the loop and decided to try and repair it externally using a bootable Windows 10 image. It's likely that I'll need the new machine's Windows 10 key. I'm not sure if it's stored in the BIOS (it came with Windows 10 preinstalled) or somewhere on the partitions.

How can I get the key from the partitions (if it's there at all) while booting from a Linux image?

  • 4
    Generally the BIOS setup screen will show you if the machine has an embedded Windows license. – Michael Hampton Dec 2 at 0:06
  • The second answer to this question is duplicated here: superuser.com/questions/637971/… – Riking Dec 3 at 2:16
  • I got the install...repair infinite loop before but cant' remember how i got around it eventually. – James Dec 3 at 13:58
  • I've made an SSD upgrade once and created an image of the initial drive through dd. After moving that image onto the new drive I got into the loop. I picked the windows repair option and afterwards it booted normally. This time however I moved the same image onto a new machine and drivers stopped working at random, would occasionally boot into the BIOS, etc. – Sebi Dec 3 at 14:13
50

If Windows 10 was ever activated on this computer, then it is now remembered by the Microsoft activation servers using its hardware fingerprint.

There will be no problem installing Windows 10 again on this computer, and activation will be automatic. You do not need to search for the key.

  • 3
    By hardware fingerprint are you referring to the fact that the windows 10 license key is now stored on the motherboard? If so it is unclear how this would work with non OEM devices which come with no OS installed. – Qwertie Dec 2 at 6:18
  • 16
    It is stored on the servers of Microsoft, not on your computer. It's also no longer a serial, but rather a hash of the attributes of your hardware. This is called digital entitlement. Serials are only used when one buys a separate Windows license, but once the computer is activated it then passes to digital entitlement. – harrymc Dec 2 at 6:50
  • 10
    Does a change in hardware invalidate your licence? – James Dec 2 at 14:23
  • 9
    @James: Depends on variables that are not published. A motherboard change will invalidate it, but a replaced network card by itself will not, and the same for a replaced system disk. – harrymc Dec 2 at 14:42
  • 2
    I've got a hunch that it's computed once and stored on the BIOS upon install/first boot? This is great since you can flash that BIOS onto a USB and have more than one legitimate copy of windows, especially if you're behind a NAT (all machines can have a duplicate preflashed key provided, of course, that win doesn't send any other uniquely identifiable info)) – Sebi Dec 3 at 19:37
33

It's likely that I'll need the new machine's Windows 10 key.

You won't need need to manually enter the license key. The OEM license key is embedded in your BIOS and will be detected automatically by Windows.

I would personally just do a completely clean install of Windows 10 and then manually reinstall the applications and import the data from your backup. This will be a very quick process and will guarantee a stable system.

After performing a clean install using a 4+ GB flash drive, Windows will automatically activate itself online almost immediately.

OEM PC manufacturers, such as the one that made the OP's computer, work with Microsoft to embed the license key in the BIOS, which is how Windows is able to activate itself even if you wiped your new PC to do a clean install of Windows before connecting it to the Internet. After activation, Microsoft's activation servers will then know the hardware fingerprint of the computer but not before. They do, however, recognize the OEM license key.

enter image description here

Here's what happens when I run this tool on my PC, which does not have an embedded Windows 10 license key in the BIOS as I built the PC myself and used a regular retail key:

enter image description here

  • the only bad part of this procedure is that you probably get "back" all the unwanted gimmicks that the manufacturer / distributor put on there - including ads-infected shareware stuff, unwanted office 365 trial and so on ... which you have to "again" remove for having a clean usable system – eagle275 Dec 2 at 9:05
  • 17
    Actually, quite the opposite! This is a completely clean install rather than a factory reset. You would remove all of the bloatware with this procedure. Notice how the words "clean install" are a link to the Windows 10 Media Creation Tool. – Mr Ethernet Dec 2 at 9:54
  • Ah - I overlooked the link target - and simply assumed re-installing using what ever recovery media you got – eagle275 Dec 2 at 10:00
  • Both methods are used. Here's a tool you can use to extract an embedded OEM Windows 10 key from the BIOS: neosmart.net/OemKey "If you need to retrieve the OEM-embedded product key from your PC, you can use the NeoSmart OEM product key utility to extract and show the product key programmed into your PC. Absolutely no user interaction is required, you just run the download and it immediately displays the detected product key... The key is now embedded in BIOS." This embedded key is why you can safely wipe a new PC before it goes online to talk to MS's activation servers. – Mr Ethernet Dec 2 at 15:57
  • 1
    I usually wipe the recovery partition! Clean install fixes everything – FreeSoftwareServers Dec 3 at 7:28
4

You can use the following script stored as script2.vbs

Option Explicit
Dim objshell,path,DigitalID, Result
Set objshell = CreateObject("WScript.Shell")
'Set registry key path
Path = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\"
'Registry key value
DigitalID = objshell.RegRead(Path & "DigitalProductId")
Dim ProductName,ProductID,ProductKey,ProductData
'Get ProductName, ProductID, ProductKey
ProductName = "Product Name: " & objshell.RegRead(Path & "ProductName")
ProductID = "Product ID: " & objshell.RegRead(Path & "ProductID")
ProductKey = "Installed Key: " & ConvertToKey(DigitalID)
ProductData = ProductName & vbNewLine & ProductID & vbNewLine & ProductKey
'Show messbox if save to a file
If vbYes = MsgBox(ProductData & vblf & vblf & "Save to a file?", vbYesNo + vbQuestion, "BackUp Windows Key Information") then
Save ProductData
End If
'Convert binary to chars
Function ConvertToKey(Key)
Const KeyOffset = 52
Dim isWin8, Maps, i, j, Current, KeyOutput, Last, keypart1, insert
'Check if OS is Windows 8
isWin8 = (Key(66) \ 6) And 1
Key(66) = (Key(66) And &HF7) Or ((isWin8 And 2) * 4)
i = 24
Maps = "BCDFGHJKMPQRTVWXY2346789"
Do
Current= 0
j = 14
Do
Current = Current* 256
Current = Key(j + KeyOffset) + Current
Key(j + KeyOffset) = (Current \ 24)
Current=Current Mod 24
j = j -1
Loop While j >= 0
i = i -1
KeyOutput = Mid(Maps,Current+ 1, 1) & KeyOutput
Last = Current
Loop While i >= 0

If (isWin8 = 1) Then
keypart1 = Mid(KeyOutput, 2, Last)
insert = "N"
KeyOutput = Replace(KeyOutput, keypart1, keypart1 & insert, 2, 1, 0)
If Last = 0 Then KeyOutput = insert & KeyOutput
End If
ConvertToKey = Mid(KeyOutput, 1, 5) & "-" & Mid(KeyOutput, 6, 5) & "-" & Mid(KeyOutput, 11, 5) & "-" & Mid(KeyOutput, 16, 5) & "-" & Mid(KeyOutput, 21, 5)
End Function
'Save data to a file
Function Save(Data)
Dim fso, fName, txt,objshell,UserName
Set objshell = CreateObject("wscript.shell")
'Get current user name
UserName = objshell.ExpandEnvironmentStrings("%UserName%")
'Create a text file on desktop
fName = "C:\Users\" & UserName & "\Desktop\WindowsKeyInfo.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
Set txt = fso.CreateTextFile(fName)
txt.Writeline Data
txt.Close
End Function

This will give you the product name, product id and installed key.

1

I've always gone to Belarc.com, downloading & running the advisor. This finds EVERY key code on the PC.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.