W tym artykule porozmawiamy o tym, jak znaleźć klucz Windows 8, za pomocą którego system jest aktywowany. Przypomnijmy, że w Windows 8, podobnie jak we wcześniejszych systemach operacyjnych z rodziny Microsoft, klucz produktu to sekwencja 25 znaków, podzielona na 5 grup po 5 znaków każda (XXXXX-XXXXX-XXXXX-XXXXX-XXXXX) Ten klucz służy do aktywacji wszystkich wersji systemu Windows 8.
Podczas aktywacji systemu Windows 8 należy wziąć pod uwagę następujące kwestie:
- Klawisz Windows 8 może być używany tylko do aktywacji edycji systemu Windows 8, do którego jest przeznaczony, a nie do żadnego innego (tj. Użycie klawisza Windows 8 Pro nie zadziała, aby aktywować system Windows 8 Home).
- OEM klucza można użyć do aktywacji kopii OEM systemu Windows 8 na tym samym komputerze, na którym został on aktywowany, i na żadnym innym
- Klucz sprzedaż detaliczna Możesz aktywować system Windows 8 na dowolnym komputerze, ale tylko na jednym komputerze na raz
Przy zakupie sprzedaż detaliczna wersja systemu Windows 8 klucz produktu jest dostarczany w postaci naklejki, którą można przykleić do jednostki systemowej lub laptopa, jeśli kupisz urządzenie z preinstalowanym systemem Windows 8, OEM- klucz będzie już przyklejony do obudowy urządzenia. Ta naklejka nazywa się Certyfikat autentyczności (COA).
Często zdarza się jednak, że z jakiegoś „tragicznego powodu” tekst na takiej licencjonowanej naklejce staje się nieczytelny (kawa została rozlana, potarta na kolanach, po prostu zgubiona itp.). Jak w takim przypadku możesz programowo znaleźć klucz systemu Windows 8, aby móc go ponownie aktywować podczas ponownej instalacji systemu? Ponadto może być konieczne sprawdzenie systemu w celu uzyskania licencji i zgodności klucza zainstalowanego w systemie i klucza na naklejce.
Klucz aktywacyjny systemu Windows 8 jest przechowywany w rejestrze, ale nie w postaci zwykłego tekstu, ale w postaci zaszyfrowanej (kodowanie podstawa 24) Zasadniczo można go wyodrębnić, odszyfrować i skopiować na kartkę papieru. Informacje o kluczu są przechowywane w kluczu rejestru HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ DigitalProductId, musimy tylko go wyodrębnić i odszyfrować.
Zasadniczo aktywowany klucz można odzyskać przez WMI. Możesz to zrobić bez użycia programów innych firm, korzystając z narzędzi już dostępnych w systemie Windows 8: VBScrit i Powershell. Poniżej znajdują się oba sposoby ustalenia klucza systemu Windows 8.
Uzyskaj klucz aktywacyjny systemu Windows 8 za pomocą VBScript
- Utwórz nowy plik tekstowy o nazwie get_windows_8_key.vbs i zapisz go na pulpicie
- Wklej do niego następujący kod
Ustaw WshShell = CreateObject ("WScript.Shell") regKey = "HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \" DigitalProductId = WshShell.RegRead (regKey & "DigitalProductId") Win8ProductName = "Nazwa produktu Windows:" i WshShell.RegRead (regKey i „ProductName”) i vbNewLine Win8ProductID = „Identyfikator produktu Windows:” i WshShell.RegRead (regKey & „ProductID”) i vbNewLine Win8ProductKey = ConvertToKey (DigitalProductId) strProductKey = „Windows 8 Produkt: Win8 i Win8Product i Win8Product Win8ProductID & strProductKey MsgBox (Win8ProductKey) MsgBox (Win8ProductID) Funkcja ConvertToKey (regKey) Stała KeyOffset = 52 isWin8 = (regKey (66) \ 6) I 1 regKey (66) = (regKey (66) i (HF8) 2) * 4) j = 24 znaki = "BCDFGHJKMPQRTVWXY2346789" Wykonaj Cur = 0 y = 14 Wykonaj Cur = Cur * 256 Cur = regKey (y + KeyOffset) + Cur regKey (y + KeyOffset) = (Cur \ 24) Cur = Cur Mod 24 y = y -1 Loop While y> = 0 j = j -1 winKeyOutput = Mid (Chars, Cur + 1, 1) i winKeyOutput Last = Cur Loop While j> = 0 If (is Win8 = 1) Następnie keypart1 = Mid (winKeyOutput, 2, Last) insert = "N" winKeyOutput = Replace (winKeyOutput, keypart1, keypart1 & insert, 2, 1, 0) If Last = 0, a następnie winKeyOutput = insert & winKeyOutput End If a = Mid (winKeyOutput, 1, 5) b = Mid (winKeyOutput, 6, 5) c = Mid (winKeyOutput, 11, 5) d = Mid (winKeyOutput, 16, 5) e = Mid (winKeyOutput, 21, 5) ConvertToKey = a & "-" & b & "-" & c & "-" & d & "-" & e End Function
- Kliknij dwukrotnie plik, po czym powinno pojawić się okno z wyświetlonym kluczem produktu. W naszym przypadku system jest aktywowany kluczem Windows 8 Release Preview.
Gotowy skrypt VBS można pobrać tutaj: get_windows_8_key_vbs.zip.
Jak znaleźć klucz aktywacyjny systemu Windows 8 za pomocą programu Powershell
Można również znaleźć klucz zainstalowanego systemu Windows 8 za pomocą programu Powerhell.
- Utwórz plik z rozszerzeniem get_windows_8_key.ps1 i skopiuj do niego następujący kod:
funkcja Get-WindowsKey ## pobierz klucz produktu Windows z dowolnego parametru komputera ($ target = ".") $ hklm = 2147483650 $ regPath = "Software \ Microsoft \ Windows NT \ CurrentVersion" $ regValue = "DigitalProductId" Foreach ($ cel w $ targetach) $ 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 "## odszyfruj dane binarne zakodowane w base24 For ($ i = 24; $ i -ge 0; $ i--) $ k = 0 For ($ j = 14; $ j -ge 0; $ j--) $ k = $ k * 256 -bxor $ binArray [$ j] $ binArray [$ j] = [matematyka] :: obetnij ($ k / 24) $ k = $ k% 24 $ productKey = $ charsArray [$ k] + $ productKey If (($ i% 5 -eq 0) -i ($ i -ne 0)) $ productKey = "-" + $ productKey $ win32os = Get-WmiObject Win32_OperatingSystem -computer $ target $ obj = Obiekt nowego obiektu $ obj | Dodaj członka Noteproperty Wartość komputera $ target $ obj | Dodaj członka Noteproperty Podpis-wartość $ win32os.Caption $ obj | Dodaj członkostwo Noteproperty CSDVersion -value $ win32os.CSDVersion $ obj | Dodaj członka Noteproperty OSArch-wartość $ win32os.OSArchitektura $ obj | Dodaj członka Noteproperty BuildNumber -value $ win32os.BuildNumber $ obj | Add-Member Noteproperty RegisteredTo -value $ win32os.RegisteredUser $ obj | Dodaj członek Noteproperty ID produktu -wartość $ win32os.SerialNumber $ obj | Dodaj element członkowski Noteproperty ProductKey -value $ productkey $ obj
- Uruchom wiersz polecenia z uprawnieniami administratora i uruchom w nim polecenie powershell, aby otworzyć konsolę PoSh
- W oknie, które się pojawi, musisz włączyć wykonywanie niepodpisanych skryptów za pomocą polecenia:
Set-ExecutionPolicy RemoteSigned
- Wykonuj polecenia
Moduł importu d: \ mój_plik.ps1; Get-windowskey
- W rezultacie klucz zainstalowanego systemu Windows zostanie wyświetlony w oknie programu Powershell
- Jeśli chcesz znaleźć klucze aktywacyjne na komputerach zdalnych, użyj polecenia Get-WindowsKey „computer1”, „serv-dc2”, „romp-buh02”
Gotowy skrypt PowerShell jest tutaj: get_windows_8_key_ps.zip
Kolejna wersja skryptu Powershell z komentarzy z akaNeo## Deklaracja funkcji uzyskania klucza produktu Windows ## Skrypt został zaprojektowany przez PowerShell w wersji 2.0 (dotyczy wszystkich wersji Windows) Funkcja Get-WindowsProduct ## Funkcja zwraca zainstalowany klucz Windows z dowolnego komputera w sieci, a także krótką informację o zainstalowanej wersji. Wywołanie bezkluczykowe obejmuje dostęp do hosta parametrów ($ Targets = [System.Net.Dns] :: GetHostName ()) PIDDecoderFromRegistry ($ digitalProductId) Nowa zmienna -nazwa base24 -Value 'BCDFGHJKMPQRTVWXY2346789' ## -Option Const # Znaki używane w kluczach produktu Windows i Office Nowa zmienna -nazwa dekodowaniaDługość -wartość 14 ## -Opcja Const ## Długość zaszyfrowanego klucza Nowa-zmienna -Name dekodowanieDługość -Wartość 14 ## -Opcja stała ## Długość zaszyfrowanego klucza produkt w bajtach (znaki są przechowywane w skubkach) Nowa-Zmienna -Nazwa zdekodowanyKlucz -Wartość ([System.String] :: Pusty) ## Ciąg zawierający odszyfrowany klucz produktu ## Sprawdzanie, czy klucz produktu zawiera „N” (jest to możliwe w systemie Windows 8 Office 15) $ zawiera N = ($ digitalProductId [$ decodeLength] / 8) -b I 1 ## ($ digitalProductId [$ decodeLength] -shr 3) -bAnd 1 ## PS 4.0 $ digitalProductId [$ decodeLength] = [System.Byte ] ($ digitalProductId [$ decodeLength] -bA [[System.Convert] :: ToByte ('F7', 16)) ## 247 ## Sam proces deszyfrowania dla ($ i = $ decodeStringLength; $ i -ge 0; $ i--) $ digitMapIndex = 0 dla ($ j = $ decodeLength; $ j -ge 0; $ j--) $ digitMapIndex = $ digitMapIndex * 256 -bXlub $ digitalProductId [$ j] ## $ digitMapIndex - shl 8 -bXor $ digitalProductId [$ j] ## PS 4.0 $ digitalProductId [$ j] = [System.Math] :: Obetnij ($ digitMapIndex / $ base24.Length) $ digitMapIndex = $ digitMapIndex% $ base24.Length $ decodedKey = $ decodedKey.Insert (0, $ base24 [$ digitMapIndex]) ## Usunięcie pierwszego znaku z klucza i umieszczenie „N” w żądanej pozycji, jeśli ([System.Boolean] $ zawieraN) $ firstLetterIndex = 0 dla ($ index = 0; $ index -lt $ decodeStringLength; $ index ++) if ($ decodedKey [0] -ne $ base24 [$ index]) kontynuuj $ firstLetterIndex = $ przerwa w indeksie $ keyWithN = $ zdekodowane Klucz $ keyWithN = $ keyWithN.Remove (0, 1) $ keyWithN = $ keyWithN.Substring (0, $ firstLetterIndex) + 'N' + $ keyWithN.Remove (0, $ firstLetterIndex) $ decodedKey = $ keyWithN; $ returnValue = $ decodedKey ## Wstawianie myślnika co pięć znaków dla ($ t = 20; $ t -ge 5; $ t - = 5) $ returnValue = $ returnValue.Insert ($ t, '-') return $ returnValue ## Główna nowa zmienna -Name hklm -Wartość 2147483650 ## -Option Const New-Variable -Name regPath -Value 'Software \ Microsoft \ Windows NT \ CurrentVersion' ## -Option Const New-Variable -Name regValue -Wartość „DigitalProductId” ## -Opcja Const Foreach ($ target w $ 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 $ produkt | Add-Member -MemberType „NoteProperty” -Name „Computer” -Wartość $ target $ produkt | Dodaj element członkowski -MemberType „NoteProperty” -Nazwa „Caption” -Wartość $ win32os.Caption $ produkt | Dodaj element członkowski -MemberType „NoteProperty” -Nazwa „CSDVersion” -Wartość $ win32os.CSDVersion $ produkt | Dodaj element członkowski -MemberType „NoteProperty” -Nazwa „OSArch” -Wartość $ win32os.OSArchitektura $ produkt | Dodaj element członkowski -MemberType „NoteProperty” -Nazwa „BuildNumber” -Wartość $ win32os.BuildNumber $ produkt | Dodaj członka -MemberType „NoteProperty” -Nazwa „RegisteredTo” -Wartość $ win32os.RejestrowanyUser $ produkt | Dodaj element członkowski -MemberType „NoteProperty” -Nazwa „ProductID” -Wartość $ win32os.SerialNumber $ produkt | Add-Member -MemberType 'NoteProperty' -Name 'ProductKey' -Value (PIDDecoderFromRegistry ($ binArray)) Write-Output $ product ## End Get-WindowsProduct