사용중인 윈도우 키가 여러개라 포맷할 컴퓨터의 제품 키를 알 수가 없었습니다. ;ㅁ;
초스피드 구글링 후 적절한 VBS 스크립트를 발견해서 이 블로그에도 저장해 둡니다.
이렇게 찾은 스크립트에는 key를 저장하는 기능이 있기는 하나 본인은 굳이 쓸 이유는 없는 것 같아서 "이름", "ID", "키 정보" 세 가지만 확인하고 닫는 정도로만 줄였습니다.
여기서 제일 중요한건 "키 정보"입니다. 인증할 경우 입력하는 25자리 인증키 값이 바로 이 값이기 때문입니다.
실행해 보려면 아래 소스코드를 메모장에 붙여넣고 WindowsKey.vbs로 저장후에 실행을 거나, 첨부파일을 받아 압축 해제해서 실행하면 됩니다. (아래 소스코드나 첨부파일의 내용은 같습니다)
FindWindow10Key.vbs
Option Explicit
Dim objshell,path,DigitalID, Result
Set objshell = CreateObject("WScript.Shell")
'Set registry key path
Path = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\"
'Registry key value
DigitalID = objshell.RegRead(Path & "DigitalProductId")
Dim ProductName,ProductID,ProductKey,ProductData
'Get ProductName, ProductID, ProductKey
ProductName = "제품 이름: " & objshell.RegRead(Path & "ProductName")
ProductID = "제품 아이디: " & objshell.RegRead(Path & "ProductID")
ProductKey = "키 정보: " & ConvertToKey(DigitalID)
ProductData = ProductName & vbNewLine & ProductID & vbNewLine & ProductKey
'Show messbox if save to a file
MsgBox ProductData & vblf & vblf, 0, "윈도우 인증 정보"
'Convert binary to chars
Function ConvertToKey(Key)
Const KeyOffset = 52
Dim isWin8, Maps, i, j, Current, KeyOutput, Last, keypart1, insert
'Check if OS is Windows 8
isWin8 = (Key(66) \ 6) And 1
Key(66) = (Key(66) And &HF7) Or ((isWin8 And 2) * 4)
i = 24
Maps = "BCDFGHJKMPQRTVWXY2346789"
Do
Current= 0
j = 14
Do
Current = Current* 256
Current = Key(j + KeyOffset) + Current
Key(j + KeyOffset) = (Current \ 24)
Current=Current Mod 24
j = j -1
Loop While j >= 0
i = i -1
KeyOutput = Mid(Maps,Current+ 1, 1) & KeyOutput
Last = Current
Loop While i >= 0
keypart1 = Mid(KeyOutput, 2, Last)
insert = "N"
KeyOutput = Replace(KeyOutput, keypart1, keypart1 & insert, 2, 1, 0)
If Last = 0 Then KeyOutput = insert & KeyOutput
ConvertToKey = Mid(KeyOutput, 1, 5) & "-" & Mid(KeyOutput, 6, 5) & "-" & Mid(KeyOutput, 11, 5) & "-" & Mid(KeyOutput, 16, 5) & "-" & Mid(KeyOutput, 21, 5)
End Function
위의 소스코드는 다음과 같은 동작을 수행합니다.
1. 아래의 경로의 레지스트리 정보를 획득합니다.
(HKEY_LOCAL_MACHINE > SOFTWARE > Microsoft > Windows NT > CurrentVersion)
2. 단, DigitalProductID의 경우 사람이 바로 읽을 수 없게 저장되어 있으므로 이를 Character로 변환해주는 함수가 있습니다.
참고: (감사합니다!)
그 이전 버전(XP, 7, 비스타 등)에 관한 사항은 위의 블로그를 참조해 주시기 바랍니다~
'소프트웨어' 카테고리의 다른 글
[IDE] Jet Brains IDE(WebStorm, IntelliJ, Android Studio 등)에 Terminal을 git bash로 변경 (0) | 2021.03.24 |
---|