Jak zjistit klíč Windows 8

V tomto článku si povíme o tom, jak můžete zjistit klíč Windows 8, kterým je systém aktivován. Připomeňme, že v systému Windows 8, stejně jako v předchozích operačních systémech rodiny Microsoft, je produktový klíč posloupností 25 znaků, rozdělených do 5 skupin po 5 znacích (XXXXX-XXXXX-XXXXX-XXXXX-XXXXX) Tento klíč se používá k aktivaci všech verzí systému Windows 8.

Při aktivaci systému Windows 8 je třeba vzít v úvahu následující body:

  • Klíč Windows 8 lze použít pouze k aktivaci vydání systému Windows 8, pro které je určen, a nikoliv pro žádný jiný (tj. Použití klíče Windows 8 Pro nebude fungovat pro aktivaci systému Windows 8 doma).
  • OEM klíč lze použít k aktivaci kopie OEM systému Windows 8 na stejném počítači, na kterém byla poprvé aktivována, a na žádném jiném
  • Klíč maloobchod Windows 8 můžete aktivovat na jakémkoli počítači, ale pouze na jednom současně

Při nákupu maloobchod verze Windows 8, produktový klíč má podobu nálepky, kterou lze nalepit na systémovou jednotku nebo notebook, pokud si zakoupíte zařízení s předinstalovaným Windows 8,  OEM- klíč bude již přilepen k pouzdru zařízení. Tato nálepka se nazývá Certifikát pravosti (COA).

Často se však stává, že z nějakého „tragického důvodu“ se text na takto licencované nálepce stává nečitelným (káva byla rozlita, roztřepána na kolenou, jednoduše ztracena atd.). Jak v tomto případě můžete programově najít klíč Windows 8, abyste jej mohli znovu aktivovat později při přeinstalování systému? Kromě toho může být nutné zkontrolovat systém z hlediska licencování a shody klíče nainstalovaného v systému a klíče na štítku..

Aktivační klíč Windows 8 je uložen v registru, ale ne v prostém textu, ale v šifrovaném (kódování základna 24) A v zásadě může být odtud extrahován, dešifrován a zkopírován na kus papíru. Informace o klíči jsou uloženy v klíči registru HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ DigitalProductId, musíme ji pouze extrahovat a dešifrovat.

Obecně lze aktivovaný klíč získat pomocí WMI. To lze provést bez použití programů třetích stran pomocí nástrojů, které jsou již k dispozici v systému Windows 8: VBScrit a Powershell. Níže jsou uvedeny dva způsoby, jak určit klíč systému Windows 8.

Získejte aktivační klíč Windows 8 pomocí VBScript

  1. Vytvořte nový textový soubor s názvem get_windows_8_key.vbs a uložte jej na plochu
  2. Vložte do něj následující kód
    Nastavit WshShell = CreateObject ("WScript.Shell") regKey = "HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \" DigitalProductId = WshShell.RegRead (regKey & "DigitalProductId") Win8ProductName = "Název produktu Windows:" & WshShell.RegRead (regKey & "ProductName") & vbNewLine Win8ProductID = "Windows Product ID:" & WshShell.RegRead (regKey & "ProductID") & vbNewLine Win8ProductKey = ConvertToKey (DigitalProductId) strProductKey = "Windows 8 Key:" & Win8ProductName WinProduct & Win8ProductK Win8ProductName WinProduct & Win8ProductName Win8ProductName Win8 Win8ProductID & strProductKey MsgBox (Win8ProductKey) MsgBox (Win8ProductID) Funkce ConvertToKey (regKey) Const KeyOffset = 52 isWin8 = (regKey (66) \ 6) a 1 regKey (66) = (regKey (66) And & HF7) Or ((WW8) 2) * 4) j = 24 znaků = "BCDFGHJKMPQRTVWXY2346789" Do Cur = 0 y = 14 Do Cur = Cur * 256 Cur = regKey (y + KeyOffset) + Cur regKey (y + KeyOffset) = (Cur \ 24) Cur = Cur Mod 24 y = y -1 Loop I když y> = 0 j = j -1 winKeyOutput = Mid (Chars, Cur + 1, 1) & winKeyOutput Last = Cur Loop while j> = 0 If (je Win8 = 1) Pak keypart1 = Mid (winKeyOutput, 2, Last) insert = "N" winKeyOutput = Replace (winKeyOutput, keypart1, keypart1 & insert, 2, 1, 0) If Last = 0 Then winKeyOutput = insert & winKeyOutput End If a = střední (winKeyOutput, 1, 5) b = střední (winKeyOutput, 6, 5) c = střední (winKeyOutput, 11, 5) d = střední (winKeyOutput, 16, 5) e = střední (winKeyOutput, 21, 5) ConvertToKey = a & "-" & b & "-" & c & "-" & d & "-" & e End Function
  3. Poklepejte na soubor, po kterém by se mělo zobrazit okno s produktovým klíčem v něm zobrazeným. V našem případě je systém aktivován klávesou Windows 8 Release Preview.

Skript Ready vbs si můžete stáhnout zde: get_windows_8_key_vbs.zip.

Jak zjistit aktivační klíč Windows 8 pomocí Powershell

Klíč nainstalovaného systému Windows 8 najdete také pomocí Powerhell.

  1. Vytvořte soubor s příponou get_windows_8_key.ps1 a zkopírujte do něj následující kód:
    function Get-WindowsKey ## získejte produktový klíč Windows z libovolného parametru PC ($ cíle = ".") $ hklm = 2147483650 $ regPath = "Software \ Microsoft \ Windows NT \ CurrentVersion" $ regValue = "DigitalProductId" Foreach ($ cíl v $ cílech) $ productKey = $ null $ win32os = $ null $ wmi = [WMIClass] "\\ $ target \ root \ default: stdRegProv" $ data = $ wmi.GetBinaryValue ($ hklm, $ regPath, $ regValue ) $ binArray = ($ data.uValue) [52 ... 66] $ charsArray = "B", "C", "D", "F", "G", "H", "J", "K", "M", "P", "Q", "R", "T", "V", "W", "X", "Y", "2", "3", "4", "6" "," 7 "," 8 "," 9 "## dešifrovat binární data kódovaná base24 pro ($ i = 24; $ i -ge 0; $ i--) $ k = 0 pro ($ j = 14; $ j -ge 0; $ j--) $ k = $ k * 256 -bx $ binArray [$ j] $ binArray [$ j] = [math] :: zkrátit ($ k / 24) $ k = $ k% 24 $ productKey = $ charsArray [$ k] + $ productKey If (($ i% 5-ekv. 0) - a ($ i -ne 0)) $ productKey = "-" + $ productKey $ win32os = Get-WmiObject Win32_OperatingSystem -počítač $ target $ obj = Objekt nového objektu $ obj | Počítač s nečitelným přidáním člena - hodnota $ target $ obj | Titulek noteproperty přidaného člena - hodnota $ win32os.Caption $ obj | Add-Member Noteproperty CSDVersion - hodnota $ win32os.CSDVersion $ obj | Add-Member Noteproperty OSArch - hodnota $ win32os.OSArchitecture $ obj | Add-Member Noteproperty BuildNumber - hodnota $ win32os.BuildNumber $ obj | Add-Member Noteproperty RegisteredTo-value $ win32os.RegisteredUser $ obj | Add-Member Noteproperty ProductID - hodnota $ win32os.SerialNumber $ obj | Přidat-člen Noteproperty ProductKey - hodnota $ productkey $ obj
  2. Spusťte příkazový řádek s oprávněními správce a spusťte v něm příkaz powerhell pro otevření konzoly PoSh
  3. V zobrazeném okně musíte povolit provádění nepodepsaných skriptů pomocí příkazu:
    Set-ExecutionPolicy RemoteSigned
  4. Provádět příkazy
    Importovací modul d: \ myfile.ps1; Get-windowskey
  5. V důsledku toho se v okně Powershell zobrazí klíč nainstalovaného systému Windows
  6. Pokud potřebujete najít aktivační klíče na vzdálených počítačích, použijte příkaz Get-WindowsKey "computer1", "serv-dc2", "romp-buh02"

Dokončený skript powerhell je zde: get_windows_8_key_ps.zip

Další verze skriptu Powershell z komentářů od akaNeo

   
## Deklarace funkce pro získání kódu Product Key systému Windows ## Skript je navržen programem PowerShell verze 2.0 (relevantní pro všechny verze systému Windows). Funkce Get-WindowsProduct ## Funkce vrací nainstalovaný klíč Windows z libovolného počítače v síti plus krátkou informaci o nainstalované verzi. Bezklíčové volání zahrnuje přístup k hostiteli param ($ Targets = [System.Net.Dns] :: GetHostName ()) funkce PIDDecoderFromRegistry ($ digitalProductId) New-Variable -Name base24 -Value 'BCDFGHJKMPQRTVWXY2346789' ## -Option Const ## znaky používané v produktových klíčech Windows a Office Nová proměnná - Název dekódováníLength - Hodnota 14 ## - Volba Konstanta ## Šifrovaná délka klíče Nová proměnná - Název dekódováníLength - Hodnota 14 ## - Volba Const ## Délka šifrovaného klíče produkt v bajtech (znaky jsou uloženy v uzlech) Nová proměnná - jméno dekódovánoKey -Value ([System.String] :: Empty) ## Řetězec obsahující dešifrovaný produktový klíč ## Kontrola, zda produktový klíč obsahuje 'N' (to je možné pro Windows 8 Kancelář 15) $ obsahujeN = ($ digitalProductId [$ decodeLength] / 8) -bAnd 1 ## ($ digitalProductId [$ decodeLength] -shr 3) -bAnd 1 ## PS 4.0 $ digitalProductId [$ decodeLength] = [System.Byte ] ($ digitalProductId [$ decodeLength] -bAnd [System.Convert] :: ToByte ('F7', 16)) ## 247 ## Samotný proces dešifrování pro ($ i = $ decodeStringLength; $ i -ge 0; $ i--) $ digitMapIndex = 0 pro ($ j = $ decodeLength; $ j -ge 0; $ j--) $ digitMapIndex = $ digitMapIndex * 256 -bX nebo $ digitalProductId [$ j] ## $ digitMapIndex - shl 8 -bX nebo $ digitalProductId [$ j] ## PS 4.0 $ digitalProductId [$ j] = [System.Math] :: Truncate ($ digitMapIndex / $ base24.Length) $ digitMapIndex = $ digitMapIndex% $ base24.Length $ decodedKey = $ decodedKey.Insert (0, $ base24 [$ digitMapIndex]) ## Odstranění prvního znaku v klíči a uvedení 'N' na požadované místo, pokud ([System.Boolean] $ obsahujeN) $ firstLetterIndex = 0 pro ($ index = 0; $ index -lt $ decodeStringLength; $ index ++) if ($ decodedKey [0] -ne $ base24 [$ index]) pokračovat $ firstLetterIndex = $ index break $ keyWithN = $ decodedKey $ keyWithN = $ keyWithN.Remove (0, 1) $ keyWithN = $ keyWithN.Substring (0, $ firstLetterIndex) + 'N' + $ keyWithN.Remove (0, $ firstLetterIndex) $ decodedKey = $ keyWithN;  $ returnValue = $ decodedKey ## Vložení pomlčky každých pět znaků pro ($ t = 20; $ t -ge 5; $ t - = 5) $ returnValue = $ returnValue.Insert ($ t, '-') return $ returnValue ## Main New-Variable -Name hklm -Value 2147483650 ## -Option Const Nová proměnná -Name regPath -Value 'Software \ Microsoft \ Windows NT \ CurrentVersion' ## -Option Const Nová proměnná -Name regValue -Value 'DigitalProductId' ## -Option Const Foreach ($ target in $ Targets) $ win32os = $ null $ wmi = [WMIClass] "\\ $ target \ root \ default: stdRegProv" $ binArray = $ wmi.GetBinaryValue ( $ hklm, $ regPath, $ regValue) .uValue [52 ... 66] $ win32os = Get-WmiObject -Class 'Win32_OperatingSystem' -ComputerName $ target $ product = New-Object -TypeName System.Object ## Constructor $ product | Add-Member -MemberType 'NoteProperty' -Name 'Computer' -Value $ target $ product | Add-Member -MemberType 'NoteProperty' -Name 'Caption' -Value $ win32os.Caption $ product | Add-Member -MemberType 'NoteProperty' -Name 'CSDVersion' -Value $ win32os.CSDVersion $ product | Add-Member -MemberType 'NoteProperty' -Name 'OSArch' -Value $ win32os.OSArchitecture $ product | Add-Member -MemberType 'NoteProperty' -Name 'BuildNumber' -Value $ win32os.BuildNumber $ product | Add-Member -MemberType 'NoteProperty' -Name 'RegisteredTo' -Value $ win32os.RegisteredUser $ product | Add-Member -MemberType 'NoteProperty' -Name 'ProductID' -Value $ win32os.SerialNumber $ product | Add-Member -MemberType 'NoteProperty' -Name 'ProductKey' -Value (PIDDecoderFromRegistry ($ binArray)) Write-Output $ product ## End Get-WindowsProduct