본문 바로가기

소프트웨어

[Windows 8, 8.1, 10] 윈도우 키 찾기

사용중인 윈도우 키가 여러개라 포맷할 컴퓨터의 제품 키를 알 수가 없었습니다. ;ㅁ;

 

초스피드 구글링 후 적절한 VBS 스크립트를 발견해서 이 블로그에도 저장해 둡니다.

 

 

 

 이렇게 찾은 스크립트에는 key를 저장하는 기능이 있기는 하나 본인은 굳이 쓸 이유는 없는 것 같아서 "이름", "ID", "키 정보" 세 가지만 확인하고 닫는 정도로만 줄였습니다.

 

 여기서 제일 중요한건 "키 정보"입니다. 인증할 경우 입력하는 25자리 인증키 값이 바로 이 값이기 때문입니다.

 

 

확인하고 끝

 

 

 

 실행해 보려면 아래 소스코드를 메모장에 붙여넣고 WindowsKey.vbs로 저장후에 실행을 거나, 첨부파일을 받아 압축 해제해서 실행하면 됩니다. (아래 소스코드나 첨부파일의 내용은 같습니다)

 

FindWindows10Key.zip
0.00MB

 

 

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로 변환해주는 함수가 있습니다.

 

 

 

 

 

참고: (감사합니다!)

https://blog.iroot.kr/280

 

설치된 윈도우 제품키 확인하는 방법

안녕하세요. RootKR입니다. 윈도우 제품키(시디키)를 분실해서 프로그램을 이용해서 제품키를 찾아야하는 경우가 있는데 블로그상에 배포중인 프로그램은 바이러스 포함되어있을수도있고 배포��

blog.iroot.kr

 

 

그 이전 버전(XP, 7, 비스타 등)에 관한 사항은 위의 블로그를 참조해 주시기 바랍니다~