У цій статті ми поговоримо про те, як можна дізнатися ключ Windows 8, за допомогою якого активована система. Нагадаємо, в Windows 8, як і в попередніх ОС сімейства Microsoft – ключ продукту являє собою послідовність з 25 символів, розділених на 5 груп по 5 символів в кожній (XXXXX-XXXXX-XXXXX-XXXXX-XXXXX). Даний ключ використовується для активації всіх версій Windows 8.

При активації Windows 8 потрібно враховувати наступні моменти:

  • Ключ Windows 8 можна використовувати тільки для активації тієї редакції Windows 8, для якої він призначений, і не для якої іншої (тобто за допомогою ключа Windows 8 Pro не вийде активувати Windows 8 home).
  • OEM ключ можна використовувати для активації OEM-ної копії Windows 8 на тому ж самому комп’ютері, на якому він був активований вперше і ні на якому іншому
  • ключем роздрібна торгівля можна активувати Windows 8 на будь-якому комп’ютері, але тільки на одному одночасно

При покупці роздрібна торгівля версії Windows 8 ключ продукту поставляється у вигляді наклейки, яку можна наклеїти на системний блок або ноутбук, в разі покупці пристрою з попередньо встановленою Windows 8, OEM– ключ вже буде приклеєний до корпусу девайса. Ця наклейка називається Сертифікат справжності (COA).

Як дізнатися ключ windows 8

Однак нерідко трапляється, що з якої-небудь «трагічної причини», текст на такий ліцензійної наклейці стає нечитабельним (пролився кави, стерся про коліна, просто загубився і т.д.). Як в цьому випадку можна програмно знайти ключ Windows 8, щоб можна було в подальшому при перевстановлення системи її знову активувати? Крім того може виникнути необхідність перевірки системи на ліцензійність і збіг встановленого в системі ключа і ключа на наклейці.

Ключ активації Windows 8 зберігається в системному реєстрі, але не у відкритому вигляді, а в зашифрованому (кодування основа 24). І в принципі його можна звідти витягти, розшифрувати і переписати на папірець. Інформація про ключі зберігається в ключі реєстру HKLM SOFTWARE Microsoft Windows NT CurrentVersion DigitalProductId, Нам потрібно лише його витягти і розшифрувати.

Ключ Windows 8 зберігається в реєстрі

У загальному випадку активоване ключ можна витягти через WMI. Зробити це можна без використання сторонніх програм засобами, засобами вже наявними в складі ОС Windows 8: VBScrit і Powershell. Нижче наведемо обидва способи, що дозволяють визначити ключ Windows 8.

Отримуємо ключ активації Windows 8 за допомогою VBScript

  1. Створіть новий текстовий файл з ім’ям get_windows_8_key.vbs і збережіть його на робочому столі
  2. Вставте в нього наступний код
    Set WshShell = CreateObject("WScript.Shell")
regKey = "HKLMSOFTWAREMicrosoftWindows NTCurrentVersion"
DigitalProductId = WshShell.RegRead(regKey & "DigitalProductId")

Win8ProductName = "Windows Product Name: " & WshShell.RegRead(regKey & "ProductName") & vbNewLine
Win8ProductID = "Windows Product ID: " & WshShell.RegRead(regKey & "ProductID") & vbNewLine
Win8ProductKey = ConvertToKey(DigitalProductId)
strProductKey ="Windows 8 Key: " & Win8ProductKey
Win8ProductID = Win8ProductName & Win8ProductID & strProductKey 

MsgBox(Win8ProductKey)
MsgBox(Win8ProductID)

Function ConvertToKey(regKey)
    Const KeyOffset = 52
    isWin8 = (regKey(66)  6) And 1
    regKey(66) = (regKey(66) And &HF7) Or ((isWin8 And 2) * 4)
    j = 24
    Chars = "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 While y >= 0
        j = j -1
        winKeyOutput = Mid(Chars, Cur + 1, 1) & winKeyOutput
        Last = Cur
    Loop While j >= 0
    If (isWin8 = 1) Then
        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 = 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
  3. Двічі клацніть по файлу, після чого має з’явитися вікно, з відображеним в ньому ключем продукту. У нашому випадку система активована ключем Windows 8 Release Preview.

Отримати ключ windows 8 за допомогою vbs

Готовий vbs скрипт можна скачати тут: get_windows_8_key_vbs.zip.

Як дізнатися ключ активації Windows 8 за допомогою Powershell

Дізнатися ключ встановленою Windows 8 можна також за допомогою Powerhell.

  1. Створіть файл з розширенням get_windows_8_key.ps1 і скопіюйте в нього наступний код:
    function Get-WindowsKey {
## get the Windows Product Key from any PC

param ($targets = ".")
$hklm = 2147483650
$regPath = "SoftwareMicrosoftWindows NTCurrentVersion"
$regValue = "DigitalProductId"
Foreach ($target in $targets) {
$productKey = $null
$win32os = $null
$wmi = [WMIClass]"\$targetrootdefault: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"
## decrypt base24 encoded binary data
For ($i = 24; $i -ge 0; $i--) {
$k = 0
For ($j = 14; $j -ge 0; $j--) {
$k = $k * 256 -bxor $binArray[$j]
$binArray[$j] = [math]::truncate($k / 24)
$k = $k % 24
}
$productKey = $charsArray[$k] + $productKey
If (($i % 5 -eq 0) -and ($i -ne 0)) {
$productKey = "-" + $productKey
}
}
$win32os = Get-WmiObject Win32_OperatingSystem -computer $target
$obj = New-Object Object
$obj | Add-Member Noteproperty Computer -value $target
$obj | Add-Member Noteproperty Caption -value $win32os.Caption
$obj | Add-Member Noteproperty CSDVersion -value $win32os.CSDVersion
$obj | Add-Member Noteproperty OSArch -value $win32os.OSArchitecture
$obj | Add-Member Noteproperty BuildNumber -value $win32os.BuildNumber
$obj | Add-Member Noteproperty RegisteredTo -value $win32os.RegisteredUser
$obj | Add-Member Noteproperty ProductID -value $win32os.SerialNumber
$obj | Add-Member Noteproperty ProductKey -value $productkey
$obj
}
}
  2. Запустіть командний рядок з правами адміністратора і для відкриття консолі PoSh виконайте в ній команду powershell
  3. У вікні потрібно дозволити виконання непідписаних скриптів командою:
    Set-ExecutionPolicy RemoteSigned
  4. виконайте команди
    Import-Module d:myfile.ps1;
Get-WindowsKey
  5. В результаті у вікні Powershell відобразиться ключ встановленою Windowsяк знайти ключ windows 8 за допомогою powershell
  6. Якщо потрібно дізнатися ключі активації на віддалених комп’ютерах, скористайтеся командою Get-WindowsKey «computer1», «serv-dc2», «romp-buh02»

Готовий powershell скрипт знаходиться тут: get_windows_8_key_ps.zip

Ще одна версія Powershell скрипта з коментарів від akaNeo


 

## Декларация функции получения ключа продукта Windows

## Скрипт предназначен PowerShell версии 2.0 (актуальна для всех версии Windows)

Function Get-WindowsProduct {

## Функция возвращает ключ установленной Windows с любой машины в сети, плюс краткую инфу по установленной версии. Вызов без ключей подразумевает обращение к хосту

param ($Targets = [System.Net.Dns]::GetHostName())

function PIDDecoderFromRegistry($digitalProductId) {

New-Variable -Name base24 -Value 'BCDFGHJKMPQRTVWXY2346789' ## -Option Const ## <24> символа использующиеся в ключах продукта Windows и Office

New-Variable -Name decodeStringLength -Value 24 ## -Option Const ## ‘Чистая’ длина зашифрованного ключа продукта

New-Variable -Name decodeLength -Value 14 ## -Option Const ## Длина зашифрованного ключа продукта в байтах (символы хранятся в полубайтах)

New-Variable -Name decodedKey -Value ([System.String]::Empty) ## Строка содержащая расшифрованный ключ продукта

## Проверка, содержит ли ключ продукта ‘N’ (такое возможно для Windows 8 и Office 15)

$containsN = ($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

## Собственно процесс расшифровки

for ($i = $decodeStringLength; $i -ge 0; $i--)

{

$digitMapIndex = 0

for ($j = $decodeLength; $j -ge 0; $j--)

{

$digitMapIndex = $digitMapIndex * 256 -bXor $digitalProductId[$j] ## $digitMapIndex -shl 8 -bXor $digitalProductId[$j] ## PS 4.0

$digitalProductId[$j] = [System.Math]::Truncate($digitMapIndex / $base24.Length)

$digitMapIndex = $digitMapIndex % $base24.Length

}

$decodedKey = $decodedKey.Insert(0, $base24[$digitMapIndex])

}

## Удаление первого символа в ключе и помещение ‘N’ в нужную позицию

if ([System.Boolean]$containsN)

{

$firstLetterIndex = 0

for ($index = 0; $index -lt $decodeStringLength; $index++)

{

if ($decodedKey[0] -ne $base24[$index]) {continue}

$firstLetterIndex = $index

break

}

$keyWithN = $decodedKey

$keyWithN = $keyWithN.Remove(0, 1)

$keyWithN = $keyWithN.Substring(0, $firstLetterIndex) + 'N' + $keyWithN.Remove(0, $firstLetterIndex)

$decodedKey = $keyWithN;

}

$returnValue = $decodedKey

## Вставка тире через каждые пять символов

for ($t = 20; $t -ge 5; $t -= 5)

{

$returnValue = $returnValue.Insert($t, '-')

}

return $returnValue

}

## Main

New-Variable -Name hklm -Value 2147483650 ## -Option Const

New-Variable -Name regPath -Value 'SoftwareMicrosoftWindows NTCurrentVersion' ## -Option Const

New-Variable -Name regValue -Value 'DigitalProductId' ## -Option Const

Foreach ($target in $Targets) {

$win32os = $null

$wmi = [WMIClass]"\$targetrootdefault:stdRegProv"

$binArray = $wmi.GetBinaryValue($hklm,$regPath,$regValue).uValue[52..66]

$win32os = Get-WmiObject -Class 'Win32_OperatingSystem' -ComputerName $target

$product = New-Object -TypeName System.Object

## Конструктор

$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

Описані вище методики, що дозволяють дізнатися ключ встановленої Windows, працюватимуть на всіх системах з ОС: Windows XP, Vista, Windows 7 і Windows 8.

Leave a Reply

Your email address will not be published. Required fields are marked *