Like many folks, when I’ve purchased a PC for personal use and gotten to the point where I want to reinstall Windows, I look on the physical case somewhere for the glittery and reflective OEM label that has the Windows key printed on it.
No such luck these days.
However, this time around, I found myself with no such option. For Windows 10 computers that come pre-activated, there is a key embedded in the firmware.
There are a handful of ways to retrieve keys (both embedded and keys applied manually or through an unattended setup file . Here’s the easiest methods:
PowerShell
The UEFI key can be retrieved via WMI. The Get-WmiObject cmdlet is your friend here.
From an elevated PowerShell prompt, type:
(Get-WmiObject SoftwareLicensingService).OA3xOriginalProductKey
If your machine has an embedded UEFI firmware key, it will be displayed in the console window.
There are also a few other interesting things you can see in that namespace–just omit the .OA3xOriginalProductKey part of the command.
Command Prompt
Speaking of WMI, you can also use the slightly more cryptic WMIC command. From either an elevated CMD prompt or elevated PowerShell prompt, type:
wmic path SoftwareLicensingService get OA3xOriginalProductKey
This should display the same result as the PowerShell method (considering they both look at the same data).
VB Script
And, don’t thank me for this one. This has been floating around for awhile, but in the interest of completeness, I thought I’d drop it here as well.
Option Explicit
Dim objshell,path,DigitalID, Result
Set objshell = CreateObject("WScript.Shell")
'Set registry key path
Path = "HKLMSOFTWAREMicrosoftWindows NTCurrentVersion"
'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 & "DesktopWindowsKeyInfo.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
Set txt = fso.CreateTextFile(fName)
txt.Writeline Data
txt.Close
End Function
To run the VBScript, save the above text with a .vbs extension and run (from CMD prompt):
cscript filename.vbs
Your key will be returned in a VBScript message box.
If you’ve tried both methods, you may discover that you have more than one Windows key for your installation (as in maybe you reinstalled once already and didn’t know you had access to an embedded key and went out and bought a license).
Cheers!

