Тема: WSH: Получение кода установки Windows
Иногда возникает ситуация, когда код установки Windows потерян, этикетку заляпали, оторвали на половину и т.п. Как его узнать из "ещё работающей" ОС? В инете нашёл решение для Win8, логично предположил, что оно работает и для Win7. Недавно переставлял win7 "домашняя базовая", этикетка присутствовала, просто решил проверить работу скрипта... Установил, когда в третий раз не смог активировать, полез смотреть в этикетку, там совсем другой код...
Варианта 2:
1) скрипт работает не правильно;
2) "продавцы в магазине" не пользовались кодом установки того продукта, который официально продали (что конечно странно?!)
В запарке не проверил работу скрипта, после того как активировал Win с помощью кода на этикетке.
Скрипт вот такой:
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Вопрос: он работать корректно должен? Может кто знает другой рецепт, для описанного случая?
Т.е. как получить код установки продукта из уже установленной ОС Win7

