备份与恢复Win7激活文件方法

03-22 | 夜光 | 电脑相关

一、备份Win7激活文件:

①右击“备份Win7激活文件.bat”-“以管理员身份运行”-即在当前文件夹得到两个文件:pkeyconfig.xrm-ms 和 tokens.dat

②用“Windows序列号查看器.vbs”来查看激活时所用的序列号,并记录下来

二、恢复Win7激活文件:(计算机名要与原来一致)

①首先右击编辑“恢复Win7激活文件.bat”,将其中的序列号改为当时激活时所用的序列号

②接下来右击“恢复Win7激活文件.bat”-“以管理员身份运行”(这个批处理要与上述两个文件放在同一文件夹)

查看自己的Win7产品信息方法:

右击“命令提示符”“以管理员身份运行”,然后输入以下命令查看:

slmgr.vbs -dli
显示:操作系统版本、部分产品密钥、许可证状态

slmgr.vbs -dlv
显示:操作系统版本、激活ID、安装ID、各种证书地址、部分产品密钥、许可证状态等

slmgr.vbs -xpr
显示:是否永久激活

“备份Win7激活文件.bat”文件内容:

@echo off
copy %windir%\System32\spp\tokens\pkeyconfig\pkeyconfig.xrm-ms
copy %windir%\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform\tokens.dat
pause
exit

“Windows序列号查看器.vbs”文件内容:(以ANSI编码保存为.vbs文件运行即可)

'==========================================================================
' Windows序列号查看器
'==========================================================================
Option Explicit
ON ERROR RESUME NEXT
Dim g_strComputer, g_objRegistry, g_EchoString
g_strComputer = "."
g_EchoString = ""
private const L_MsgErrorPKey                          = "没有安装Windows序列号, 以下为注册表残留信息。"
private const L_MsgErrorRegPKey                       = "没有在注册表中找到Windows序列号。"
private const L_MsgErrorRegPID                        = "没有在注册表中找到Windows产品ID。"
Private const L_MsgProductName                        = "系统: "
private const L_MsgProductDesc                        = "系统描述: "
private const L_MsgVersion                            = "版本号: "
Private Const L_MsgServicePack                        = "补丁包: "
Private Const L_MsgBuild                              = "编译代号: "
private const L_MsgProductKey                         = "序列号: "
private const L_MsgProductId                          = "产品ID: "
private const HKEY_LOCAL_MACHINE                      = &H80000002
Private Const WindowsNTInfoPath                       = "SOFTWARE\Microsoft\Windows NT\CurrentVersion"
'If this is the local computer, set everything immediately
If g_strComputer = "." Then
Set g_objRegistry = GetObject("winmgmts:\\" & g_strComputer & "\root\default:StdRegProv")
End If
Call ExecCommand()
Call ShowInfo()
ExitScript 0
Private Sub ExecCommand
Dim productKeyFound
Dim strProductKey, strProductId, strProductVersion, strTmp
Dim bRegPKeyFound, bRegPIDFound        ' value exists in registry
'Retrieve information from registry
bRegPKeyFound = False : bRegPIDFound = False : productKeyFound = False
g_objRegistry.GetBinaryValue HKEY_LOCAL_MACHINE, WindowsNTInfoPath, "DigitalProductId", strTmp
If Not IsNull(strTmp) Then
strProductKey=GetKey(strTmp)
bRegPKeyFound = True
End If
g_objRegistry.GetStringValue HKEY_LOCAL_MACHINE, WindowsNTInfoPath, "ProductId", strTmp
If Not IsNull(strTmp) Then
strProductId = strTmp
bRegPIDFound = True
End If
LineOut ""
g_objRegistry.GetStringValue HKEY_LOCAL_MACHINE, WindowsNTInfoPath, "ProductName", strTmp
LineOut GetResource("L_MsgProductName") & strTmp
g_objRegistry.GetStringValue HKEY_LOCAL_MACHINE, WindowsNTInfoPath, "CSDVersion", strTmp
If Not IsNull(strTmp) Then
LineOut GetResource("L_MsgServicePack") & strTmp
End If
g_objRegistry.GetStringValue HKEY_LOCAL_MACHINE, WindowsNTInfoPath, "CurrentVersion", strProductVersion
g_objRegistry.GetStringValue HKEY_LOCAL_MACHINE, WindowsNTInfoPath, "CurrentBuildNumber", strTmp
strProductVersion=strProductVersion & "." & strTmp
LineOut GetResource("L_MsgVersion") & strProductVersion
g_objRegistry.GetStringValue HKEY_LOCAL_MACHINE, WindowsNTInfoPath, "BuildLabEx", strTmp
If IsNull(strTmp) Then
g_objRegistry.GetStringValue HKEY_LOCAL_MACHINE, WindowsNTInfoPath, "BuildLab", strTmp
End If
LineOut GetResource("L_MsgBuild") & strTmp
productKeyFound = True
LineOut ""
If productKeyFound <> True Then
    LineOut GetResource("L_MsgErrorPKey")
End If
If bRegPKeyFound Then
    LineOut GetResource("L_MsgProductKey") & strProductKey
Else
    LineOut GetResource("L_MsgErrorRegPKey")
End If
If bRegPIDFound Then
    LineOut GetResource("L_MsgProductId") & strProductId
Else
    LineOut GetResource("L_MsgErrorRegPID")
End If
LineOut ""
LineOut "本程序用来查看Windows的序列号。"
LineOut "适用于绝大多数Windows系统,包括 XP/Vista/Win7 系列等。"
End Sub
Private Sub ShowInfo
Dim Ans, objFSO, outFile, strSave
Set objFSO = CreateObject("Scripting.FileSystemObject")
strSave = vbNewLine & "-----------------------------------------------------------" & vbNewLine & g_EchoString
strSave = strSave & vbNewLine & "------  " & Now() & "  " & "由Windows序列号查看器保存" & "  ------" & vbNewLine
LineOut ""
LineOut ""
LineOut "是否保存以上信息到文本文件 WindowsKey.txt ?"
Ans = MsgBox(g_EchoString, 4, "Windows序列号查看器")
g_EchoString = ""
If Ans = vbYes Then
    Set outFile = objFSO.OpenTextFile(".\WindowsKey.txt", 8 , True) ' append to file
outFile.WriteLine strSave
outFile.Close
LineOut "已经保存到文件 WindowsKey.txt !"
End If
End Sub
Private Function GetKey(rpk)   'Decode the product key
Const rpkOffset=52
Dim dwAccumulator, szPossibleChars, szProductKey
dim i,j
i=28 : szPossibleChars="BCDFGHJKMPQRTVWXY2346789"
Do 'Rep1
    dwAccumulator=0 : j=14
    Do
        dwAccumulator=dwAccumulator*256
        dwAccumulator=rpk(j+rpkOffset)+dwAccumulator
        rpk(j+rpkOffset)=(dwAccumulator\24) and 255
        dwAccumulator=dwAccumulator Mod 24
        j=j-1
    Loop While j>=0
    i=i-1 : szProductKey=mid(szPossibleChars,dwAccumulator+1,1)&szProductKey
    if (((29-i) Mod 6)=0) and (i<>-1) then
        i=i-1 : szProductKey="-"&szProductKey
    end if
Loop While i>=0 'Goto Rep1
GetKey=szProductKey
End Function
' Get the resource string with the given name using the built-in default.
Private Function GetResource(name)
GetResource = Eval(name)
End Function
Private Sub ExitScript(retval)
if (g_EchoString <> "") Then
    MsgBox g_EchoString, 0, "Windows序列号查看器"
End If
WScript.Quit retval
End Sub
' Functions Without Change Below
Private Sub LineOut(str)
g_EchoString = g_EchoString & str & vbNewLine
End Sub

“恢复Win7激活文件.bat”文件内容:

@echo off
net stop sppsvc /y
takeown /f "%WinDir%\System32\spp\tokens\pkeyconfig\pkeyconfig.xrm-ms"
cacls "%WinDir%\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform\tokens.dat" /e /g everyone:f
cacls "%WinDir%\System32\spp\tokens\pkeyconfig\pkeyconfig.xrm-ms" /e /g everyone:f
ren "%WinDir%\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform\tokens.dat" "tokens.bak"
ren "%WinDir%\System32\spp\tokens\pkeyconfig\pkeyconfig.xrm-ms" "pkeyconfig.bak"
copy tokens.dat "%WinDir%\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform\"
copy pkeyconfig.xrm-ms "%WinDir%\System32\spp\tokens\pkeyconfig\"
del "%WinDir%\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform\tokens.bak"
del "%WinDir%\System32\spp\tokens\pkeyconfig\pkeyconfig.bak"
net start sppsvc
cscript %windir%\system32\slmgr.vbs -ipk XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
cscript %windir%\system32\slmgr.vbs -ato
pause
exit
本文标签: ,
本文链接: backup-and-restore-win7-activation-file-method/
版权所有: 玻璃泉, 转载请注明本文出处。