Перейти к содержанию

Просмотр ключа Windows

Виды ключей:

  • Installed Key — ключ продукта установленный в настоящий момент системы: это может быть Retail-ключ продукта, а может быть и «универсальный» ключ, в случае если при установке он не вводился и используется цифровая лицензия, привязанная к оборудованию.
  • OEM Key — ключ продукта предустановленной при покупке системы (может отсутствовать), хранящийся в UEFI. Это может быть не только Windows 11, но и одна из предыдущих версий системы. Как правило, с помощью этого ключа (даже если он от предыдущей ОС) можно установить Windows 11 на этом же компьютере или ноутбуке.
  • OEM Edition — система, которая была установлена на текущем компьютере производителем изначально, не обязательно Windows

Стороннее ПО:

  1. ShowKeyPlus
  2. produkey

Через CMD & PowerShell

Запустить терминал от имени администратора

Если при вводе команд ничего не выводиться, значит система активирована при помощи [[Активация Windows через CMD#^bd7faa| KMS]]

CMD:

wmic path softwarelicensingservice get OA3xOriginalProductKey

PowerShell:

(Get-WmiObject -query "select * from SoftwareLicensingService").OA3xOriginalProductKey

С помощью скрипта PowerShell:

  1. Создайте текстовый файл с этим кодом и сохраните его (сохраняем в кодировке ANSI/Windows) с расширением ps1
  2. Запустите PowerShell от имени администратора и используйте команду Set-ExecutionPolicy RemoteSigned чтобы разрешить выполнение локальных скриптов. Это можно сделать и без команд: Параметры — Конфиденциальность и защита — Для разработчиков, в разделе «PowerShell» отметить пункт «Измените политику выполнения так, чтобы можно было выполнять локальные сценарии PowerShell без подписи».
  3. Введите полный путь к файлу скрипта в окне PowerShell и нажмите Enter.
#Main function
Function GetWin11Key
{
    $Hklm = 2147483650
    $Target = $env:COMPUTERNAME
    $regPath = "Software\Microsoft\Windows NT\CurrentVersion"
    $DigitalID = "DigitalProductId"
    $wmi = [WMIClass]"\\$Target\root\default:stdRegProv"
    #Get registry value 
    $Object = $wmi.GetBinaryValue($hklm,$regPath,$DigitalID)
    [Array]$DigitalIDvalue = $Object.uValue 
    #If get successed
    If($DigitalIDvalue)
    {
        #Get producnt name and product ID
        $ProductName = (Get-itemproperty -Path "HKLM:Software\Microsoft\Windows NT\CurrentVersion" -Name "ProductName").ProductName 
        $ProductID =  (Get-itemproperty -Path "HKLM:Software\Microsoft\Windows NT\CurrentVersion" -Name "ProductId").ProductId
        #Convert binary value to serial number 
        $Result = ConvertTokey $DigitalIDvalue
        $OSInfo = (Get-WmiObject "Win32_OperatingSystem"  | select Caption).Caption
        If($OSInfo -match "Windows 11")
        {
            if($Result)
            {

                [string]$value ="ProductName  : $ProductName `r`n" `
                + "ProductID    : $ProductID `r`n" `
                + "Installed Key: $Result"
                $value 
                #Save Windows info to a file 
                $Choice = GetChoice
                If( $Choice -eq 0 )
                {   
                    $txtpath = "C:\Users\"+$env:USERNAME+"\Desktop"
                    New-Item -Path $txtpath -Name "WindowsKeyInfo.txt" -Value $value   -ItemType File  -Force | Out-Null 
                }
                Elseif($Choice -eq 1)
                {
                    Exit 
                }
            }
            Else
            {
                Write-Warning "Запускайте скрипт в Windows 11"
            }
        }
        Else
        {
            Write-Warning "Запускайте скрипт в Windows 11"
        }

    }
    Else
    {
        Write-Warning "Возникла ошибка, не удалось получить ключ"
    }

}
#Get user choice 
Function GetChoice
{
    $yes = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes",""
    $no = New-Object System.Management.Automation.Host.ChoiceDescription "&No",""
    $choices = [System.Management.Automation.Host.ChoiceDescription[]]($yes,$no)
    $caption = "Подтверждение"
    $message = "Сохранить ключ в текстовый файл?"
    $result = $Host.UI.PromptForChoice($caption,$message,$choices,0)
    $result
}
#Convert binary to serial number 
Function ConvertToKey($Key)
{
    $Keyoffset = 52 
    $isWin11 = [int]($Key[66]/6) -band 1
    $HF7 = 0xF7
    $Key[66] = ($Key[66] -band $HF7) -bOr (($isWin11 -band 2) * 4)
    $i = 24
    [String]$Chars = "BCDFGHJKMPQRTVWXY2346789" 
    do
    {
        $Cur = 0 
        $X = 14
        Do
        {
            $Cur = $Cur * 256    
            $Cur = $Key[$X + $Keyoffset] + $Cur
            $Key[$X + $Keyoffset] = [math]::Floor([double]($Cur/24))
            $Cur = $Cur % 24
            $X = $X - 1 
        }while($X -ge 0)
        $i = $i- 1
        $KeyOutput = $Chars.SubString($Cur,1) + $KeyOutput
        $last = $Cur
    }while($i -ge 0)

    $Keypart1 = $KeyOutput.SubString(1,$last)
    $Keypart2 = $KeyOutput.Substring(1,$KeyOutput.length-1)
    if($last -eq 0 )
    {
        $KeyOutput = "N" + $Keypart2
    }
    else
    {
        $KeyOutput = $Keypart2.Insert($Keypart2.IndexOf($Keypart1)+$Keypart1.length,"N")
    }
    $a = $KeyOutput.Substring(0,5)
    $b = $KeyOutput.substring(5,5)
    $c = $KeyOutput.substring(10,5)
    $d = $KeyOutput.substring(15,5)
    $e = $KeyOutput.substring(20,5)
    $keyproduct = $a + "-" + $b + "-"+ $c + "-"+ $d + "-"+ $e
    $keyproduct 


}
GetWin11Key

С помощью скрипта на Visual Basik

Cоздать текстовый файл с расширением .VBS, в кодировке ANSI (Windows) и следующим кодом. После этого достаточно будет запустить файл, чтобы получить сведения о Windows 11, включая ключ продукта:

Set WshShell = CreateObject("WScript.Shell")
regKey = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\"
DigitalProductId = WshShell.RegRead(regKey & "DigitalProductId")
Win11ProductName = "Версия Windows 11: " & WshShell.RegRead(regKey & "ProductName") & vbNewLine
Win11ProductID = "ID продукта: " & WshShell.RegRead(regKey & "ProductID") & vbNewLine
Win11ProductKey = ConvertToKey(DigitalProductId)
ProductKeyLabel ="Ключ Windows 11: " & Win11ProductKey
Win11ProductID = Win11ProductName & Win11ProductID & ProductKeyLabel
MsgBox(Win11ProductID)
Function ConvertToKey(regKey)
Const KeyOffset = 52
isWin11 = (regKey(66) \ 6) And 1
regKey(66) = (regKey(66) And &HF7) Or ((isWin11 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 (isWin11 = 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