Windows:Рецепты/Забыли ключ Windows 8: различия между версиями
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Myagkij (обсуждение | вклад) Нет описания правки |
Myagkij (обсуждение | вклад) Нет описания правки |
||
(не показаны 3 промежуточные версии этого же участника) | |||
Строка 2: | Строка 2: | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
= | =Забыли ключ Windows 8= | ||
==Проблема== | ==Проблема== | ||
Строка 10: | Строка 10: | ||
==Решение== | ==Решение== | ||
Скачайте и запустите скрипт:[[Media:get_windows_8_key.zip]]. | Скачайте и запустите скрипт:[[Media:get_windows_8_key.zip|get_windows_8_key.zip]]. | ||
Код скрипта: | |||
<syntaxhighlight lang="VBScript "> | |||
Set WshShell = CreateObject("WScript.Shell") | |||
regKey = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\" | |||
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 | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Текущая версия от 09:45, 7 сентября 2023
Проверка/Оформление/Редактирование: Мякишев Е.А.
Забыли ключ Windows 8
Проблема
Потеряли/забыли ключ от Windows 8.
Решение
Скачайте и запустите скрипт:get_windows_8_key.zip.
Код скрипта:
Set WshShell = CreateObject("WScript.Shell")
regKey = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\"
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
См.также
Внешние ссылки