Как узнать свой ключ продукта (активации) в Windows

В этой статье мы рассмотрим способы, позволяющие извлечь ключ продукта, с помощью которого активирована Windows на вашем устройстве, без использования сторонних утилит или программ. Ключ Windows представляет последовательность из 25 символов, разделенных на 5 групп по 5 символов в каждой ( XXXXX-XXXXX-XXXXX-XXXXX-XXXXX ), который используется для активации ОС и подтверждения легальность лицензии.

  • На старых моделях компьютеров/ноутбуков с предустановленной Windows, на корпус устройства могла быть приклеена наклейка COA (Certificate of Authenticity), содержащую OEM информацию вендора, версию и ключ продукта Windows (но это встречалось только на совсем старых устройствах с предустановленной Windows 7 и 8.1)
  • Где-то с 2012 года, вместо использования физических наклеек, Microsoft внедрила возможность записи ключа продукта в конфигурацию BIOS/UEFI компьютера.

Извлекаем OEM ключ Windows зашитый в UEFI/BIOS

На многих ноутбукам с предустановленной Windows (OEM устройства), ключ активации прописывается вендором в конфигурации BIOS (ключ хранится в специальной SLIC таблице) или UEFI (OEM embedded key в таблице ACPI MSDM).

Такой вшитый OEM ключ автоматически считывается установщиком Windows. Windows Setup по ключу сам определяет соответствующую редакцию, автоматически устанавливает и активирует ее (при этом окно выбора редакции просто скрывается).

Извлечь такой вшитый ключ OEM из прошивки UEFI/BIOS можно через WMI класс SoftwareLicensingService. Откройте консоль PowerShell с правами администратора и выполните:

Get-CimInstance SoftwareLicensingService | Select -Expand OA3xOriginalProductKey

Команда покажем OEM ключ Windows, хранящийся в UEFI.

PowerShell OA3xOriginalProductKey- извлечь ключ Windows из прошивки UEFI/BIOS

Если команда ничего не вернула, значит на этом устройстве, отсутствуют ключи в прошивке BIOS/UEFI. Скорее всего система активирована retail ключом.

Если на устройстве установлена Linux, можно извлечь ключ Windows из ACPI таблицы в UEFI, выполнив команду:

$ sudo strings /sys/firmware/acpi/tables/MSDM | tail -1

Linux получить ключ для Windows из ACPI таблицы MSDM

Скрипты для получить ключа активации Windows

Даже если у вас в BIOS/UEFI прописан ключ продукта, фактический ключ, используемый для активации Windows, может отличаться. Установленный ключ продукта хранится в зашифрованном виде в реестре Windows в параметре DigitalProductID (HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion). Для кодировки значения используется простой алгоритм base 24, который является легко декодируемым.

DigitalProductID параметр реестра содержит ключ Windows в кодировке

Ниже представлен код VBS скрипта, который извлекает значение DigitalProductID и декодирует его возвращая в открытом виде ключ, использовавшийся для активации Windows. Создайте текстовый файл get_windows_key.vbs, сохраните его на рабочем столе, вставьте в него следующий код и дважды щелкните по VBS файлу, чтобы запустить.

Set WshShell = CreateObject("WScript.Shell")
regKey = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\"
DigitalProductId = WshShell.RegRead(regKey & "DigitalProductId")
WinProductName = "Windows Product Name: " & WshShell.RegRead(regKey & "ProductName") & vbNewLine
WinProductID = "Windows Product ID: " & WshShell.RegRead(regKey & "ProductID") & vbNewLine
WinProductKey = ConvertToKey(DigitalProductId)
strProductKey ="Windows  Key: " & WinProductKey
WinProductID = WinProductName & WinProductID & strProductKey 
MsgBox(WinProductKey)
MsgBox(WinProductID)
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

Команда выведет версию Windows и используемые для активации ключ продукта.

VBScript для извлечения ключа Windows из установленной системы

В новых версиях Windows 11 компонент движка VBScript может быть отключен, поэтому вместо VBS скрипта для получения ключа установки Windows можно воспользоваться такой PowerShell функцией:

function Get-WindowsProduct { param ($Targets = [System.Net.Dns]::GetHostName())
    function PIDDecoderFromRegistry($digitalProductId) {
        $base24 = 'BCDFGHJKMPQRTVWXY2346789'; $decodeStringLength = 24; $decodeLength = 14; $decodedKey = ''
        $containsN = ($digitalProductId[$decodeLength] / 8) -band 1
        $digitalProductId[$decodeLength] = [byte]($digitalProductId[$decodeLength] -band 0xF7)
        for ($i = $decodeStringLength; $i -ge 0; $i--) {
            $digitMapIndex = 0
            for ($j = $decodeLength; $j -ge 0; $j--) {
                $digitMapIndex = $digitMapIndex * 256 -bxor $digitalProductId[$j]
                $digitalProductId[$j] = [math]::Truncate($digitMapIndex / $base24.Length)
                $digitMapIndex = $digitMapIndex % $base24.Length
            }
            $decodedKey = $base24[$digitMapIndex] + $decodedKey
        }
        if ($containsN) {
            $firstLetterIndex = $base24.IndexOf($decodedKey[0])
            $decodedKey = $decodedKey.Remove(0,1); $decodedKey = $decodedKey.Substring(0,$firstLetterIndex) + 'N' + $decodedKey.Remove(0,$firstLetterIndex)
        }
        for ($t = 20; $t -ge 5; $t -= 5) { $decodedKey = $decodedKey.Insert($t, '-') }
        return $decodedKey
    }
    $hklm = 2147483650; $regPath = 'Software\Microsoft\Windows NT\CurrentVersion'; $regValue = 'DigitalProductId'
    foreach ($target in $Targets) {
        $wmi = [WMIClass]"\\$target\root\default:stdRegProv"
        $binArray = $wmi.GetBinaryValue($hklm,$regPath,$regValue).uValue[52..66]
        $win32os = Get-WmiObject -Class 'Win32_OperatingSystem' -ComputerName $target
        $product = [PSCustomObject]@{
            Computer = $target
            Caption = $win32os.Caption
            CSDVersion = $win32os.CSDVersion
            OSArch = $win32os.OSArchitecture
            BuildNumber = $win32os.BuildNumber
            RegisteredTo = $win32os.RegisteredUser
            ProductID = $win32os.SerialNumber
            ProductKey = PIDDecoderFromRegistry $binArray
        }
        Write-Output $product
    }
}

Скопируйте указанный код в консоль PowerShell (или сохранится код в PS1 файл скрипта PowerShell), а потом выполните команду Get-WindowsProduct , чтобы вызвать функцию. Команда выведет в консоль информацию о версии Windows и используемый для активации ключ.

PowerShell функция Get-WindowsProduct

В моем случае для активации Windows 10 Pro использовался публичный GVLK ключ W269N-WFGWX-YVC9B-4J6C9-T83GX (https://learn.microsoft.com/en-us/windows-server/get-started/kms-client-activation-keys?tabs=windows1110ltsc%2Cwindows81%2Cserver2025%2Cversion1803 ), это означает что компьютер активирован на KMS сервере.

Публичные GVLK для KMS активации Windows

Оба скрипта для получения ключа из установленной Windows, работают на всех версиях, начиная с XP и заканчивая 11.

Если скрипты вернули, что ваш ключ BBBBB-BBBBB-BBBBB-BBBBB-BBBBB , это указывает что для активации Windows использоваться кооперативный ключ многократной активации (MAK). Такой ключ в целях безопасности не сохраняется в реестре в отркытом виде. Или такой ключ указывает, что версия вашей ОС была бесплатно обновлена с предыдущей версии ОС (например Windows 8.1 до Windows 10). А для устройства была выпущена цифровая лицензия.

Windows активирована с цифровой лицензией

Для извлечения ключа с офлайн системы (вышедшего из строя компьютера, диск с Windows на котором остался исправным), можно использовать бесплатную утилиту ProduKey от NirSoft (она позволяет выбрать каталог Windows, в котором нужно выполнить поиск ключа).

ProduKey от NirSof - извлечь ключ Windows из офлайн системы


Предыдущая статья Следующая статья


Комментариев: 141 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)