Получаем ключ Windows при помощи PowerShell

Иногда нужно получить ключ Windows, который находится в реестре, но он там записан в виде ID, а поэтому его после считывания необходимо преобразовать в соответствующий вид.

function Get-ProductKey {    
    $map="BCDFGHJKMPQRTVWXY2346789" 
    $value = (get-itemproperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").digitalproductid[0x34..0x42]  
    $ProductKey = ""  
    for ($i = 24; $i -ge 0; $i--) { 
      $r = 0 
      for ($j = 14; $j -ge 0; $j--) { 
        $r = ($r * 256) -bxor $value[$j] 
        $value[$j] = [math]::Floor([double]($r/24)) 
        $r = $r % 24 
      } 
      $ProductKey = $map[$r] + $ProductKey 
      if (($i % 5) -eq 0 -and $i -ne 0) { 
        $ProductKey = "-" + $ProductKey 
      } 
    } 
    $ProductKey
}
Теги:

Понравилась статья? Оставьте комментарий или подпишитесь на RSS рассылку.

Комментарии

Для успешной работы на Server 2008 строку
$value = (get-itemproperty «HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion»).digitalproductid[0x34..0x42]
нужно заменить на:
$value = (get-itemproperty «HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion»).digitalproductid4[0x34..0x42]

Не на всех версия Windows можно получить указанным методом.
Получается вот такое BBBBB-BBBBB-BBBBB-BBBBB-BBBBB.
Пришлось хорошо погуглить прежде чем нашёл утилиту показывающую ключ на таких системах.

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

(required)

(required)