首页 > 系统相关 >一段读取Windows激活信息的vbscript

一段读取Windows激活信息的vbscript

时间:2025-01-14 17:56:52浏览次数:9  
标签:objshell 读取 Windows vbscript Mid Current Key KeyOutput

直接上代码:

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 = "产品ID:" & objshell.RegRead(Path & "ProductID")
ProductKey = "已安装密钥:" & ConvertToKey(DigitalID)
ProductData = ProductName & vbNewLine & ProductID & vbNewLine & ProductKey
'Show messbox if save to a file
If vbYes = MsgBox(ProductData & vbLf & vbLf & "要将密钥保存到文件吗?", vbYesNo + vbQuestion, "软媒魔方备份Windows密钥信息") Then
    Save ProductData
End If
'Convert binary to chars
Function ConvertToKey(Key)
    Const KeyOffset = 52
    Dim isWin10, Maps, i, j, Current, KeyOutput, Last, keypart1, insert
    'Check if OS is Windows 10
    isWin10 = (Key(66) \ 6) And 1
    Key(66) = (Key(66) And &HF7) Or ((isWin10 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
    If (isWin10 = 1) Then
        keypart1 = Mid(KeyOutput, 2, Last)
        insert = "N"
        KeyOutput = Replace(KeyOutput, keypart1, keypart1 & insert, 2, 1, 0)
        If Last = 0 Then KeyOutput = insert & KeyOutput
    End If
    ConvertToKey = Mid(KeyOutput, 1, 5) & "-" & Mid(KeyOutput, 6, 5) & "-" & Mid(KeyOutput, 11, 5) & "-" & Mid(KeyOutput, 16, 5) & "-" & Mid(KeyOutput, 21, 5)
End Function
'Save data to a file
Function Save(Data)
    Dim fso, fName, txt, objshell, UserName
    Set objshell = CreateObject("wscript.shell")
    'Get current user name
    UserName = objshell.ExpandEnvironmentStrings("%UserName%")
    'Create a text file on desktop
    fName = "C:\Users\" & UserName & "\Desktop\Windows密钥备份.txt"
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set txt = fso.CreateTextFile(fName)
    txt.Writeline Data
    txt.Close
End Function

执行方式:将以上代码保存为lic.vbs,然后在cmd中运行:

cscript /nologo lic.vbs

 就可以在弹出的消息框中看到自己的产品ID和激活密钥了,并且可以保存到桌面。

标签:objshell,读取,Windows,vbscript,Mid,Current,Key,KeyOutput
From: https://www.cnblogs.com/achillis/p/18671326

相关文章