Что произойдет, если я отключу Windows RT?

669
gparyani

Windows RT, как и любой другой OEM-продукт Windows, предустановлен и предварительно активирован на ПК. Большинство ПК под управлением стандартной Windows имеют маркировку ключа продукта сзади (для настольных компьютеров) или снизу (для ноутбуков). Большинство других компьютеров, на которых нет метки ключа продукта, поставляются с компакт-дисками восстановления, которые позволяют восстановить операционную систему до исходного состояния, если она по какой-либо причине станет непригодной для использования. Однако на ПК с Windows RT такого нет (по крайней мере, у Surface нет; я не уверен насчет других устройств с Windows RT). Тем не менее, по-прежнему возможно деактивировать Windows RT, зайдя в Свойства системы и выбрав опцию деактивации. Если я случайно деактивирую Windows RT, как это, есть ли способ получить другой ключ продукта, чтобы активировать его снова? Я знаю, что для OEM-копий Windows,

0

2 ответа на вопрос

0
Martheen Cahya Paulo

This script from XDA can be used to extract the key, just save it as .bat and run it.

::' Windows RT 8.0 Product Key Dumper by Myria of xda-developers.com ::' Original Windows 8.0 VBScript by janek2012 of mydigitallife.info ::' Batch+VBScript hybrid trick by dbenham of stackoverflow.com ::' Fix for keys starting with N by Osprey00 of xda-developers.com ::' ::' Windows RT doesn't let unsigned VBScript use WScript.Shell, which is ::' required in order to read the registry in VBScript. So instead, we ::' have a batch file call reg.exe to do the registry lookup for us, then ::' execute the VBScript code. Might as well do things this way, since ::' it would really suck to write this math in batch... ::' --- Batch portion --------- rem^ &@echo off rem^ &call :'sub ::' If we were run from double-clicking in Explorer, pause. rem^ &if %0 == "%~0" pause rem^ &exit /b 0 :'sub ::' Read the registry key into VBScript's stdin. rem^ &("%SystemRoot%\System32\reg.exe" query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v DigitalProductId | cscript //nologo //e:vbscript "%~f0") ::'rem^ &echo end batch rem^ &exit /b 0 '----- VBS portion ------------ 'WScript.Echo "begin VBS" ' Get registry data that was piped in RegData = "" Do While Not WScript.StdIn.AtEndOfStream RegData = RegData & WScript.StdIn.ReadAll Loop ' Remove any carriage returns RegData = Replace(RegData, ChrW(13), "") ' Split into lines RegLines = Split(RegData, ChrW(10)) ' Sanity checking on data If (RegLines(0) <> "") Or (RegLines(1) <> "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion") Then WScript.Echo "Got invalid header trying to run reg.exe" WScript.Quit(1) End If If Left(RegLines(2), 38) <> " DigitalProductId REG_BINARY " Then WScript.Echo "Got invalid value list trying to run reg.exe" WScript.Quit(1) End If ' Get hex string HexString = Mid(RegLines(2), 39) If (Len(HexString) Mod 2) <> 0 Then WScript.Echo "Got an odd number of hex digits in REG_BINARY data" WScript.Quit(1) End If ' Convert to byte array Dim ByteArray() ReDim ByteArray((Len(HexString) / 2) - 1) ' VBScript is just weird with array dimensions >.< For i = 0 To (Len(HexString) - 2) Step 2 ByteArray(i / 2) = CInt("&H" + Mid(HexString, i + 1, 2)) Next Key = ConvertToKey(ByteArray) WScript.Echo Key ' janek2012's magic decoding function Function ConvertToKey(Key) Const KeyOffset = 52 ' Offset of the first byte of key in DigitalProductId - helps in loops isWin8 = (Key(66) \ 8) And 1 ' Check if it's Windows 8 here... Key(66) = (Key(66) And &HF7) Or ((isWin8 And 2) * 4) ' Replace 66 byte with logical result Chars = "BCDFGHJKMPQRTVWXY2346789" ' Characters used in Windows key ' Standard Base24 decoding... For i = 24 To 0 Step -1 Cur = 0 For X = 14 To 0 Step -1 Cur = Cur * 256 Cur = Key(X + KeyOffset) + Cur Key(X + KeyOffset) = (Cur \ 24) Cur = Cur Mod 24 Next KeyOutput = Mid(Chars, Cur + 1, 1) & KeyOutput Last = Cur Next ' If it's Windows 8, put "N" in the right place If (isWin8 = 1) Then keypart1 = Mid(KeyOutput, 2, Cur) insert = "N" KeyOutput = keypart1 & insert & Mid(KeyOutput, Cur + 2) End If ' Divide keys to 5-character parts a = Mid(KeyOutput, 1, 5) b = Mid(KeyOutput, 6, 5) c = Mid(KeyOutput, 11, 5) d = Mid(KeyOutput, 16, 5) e = Mid(KeyOutput, 21, 5) ' And join them again adding dashes ConvertToKey = a & "-" & b & "-" & c & "-" & d & "-" & e ' The result of this function is now the actual product key End Function 
Ах, но Windows RT доступна только в качестве лицензии OEM, а это означает, что ключ в реестре является главным ключом OEM, а не уникальным ключом. gparyani 10 лет назад 0
0
user371743

This Below Script reads the Unique Key from RT and not the OEM of the above code.

@echo off &setlocal call :GetProductKey sWinProdKey echo Windows Product Key: %sWinProdKey% echo( pause goto :eof :GetProductKey outVarName setlocal EnableDelayedExpansion set "sKeyChar=BCDFGHJKMPQRTVWXY2346789" set "sRegKey=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" set "sRegVal=DigitalProductId" for /f "tokens=3" %%i in ('reg query "%sRegKey%" /v "%sRegVal%"') do set "sHex=%%i" set /a "n = 52" for /l %%i in (104,2,132) do set /a "aRegValue_!n! = 0x!sHex:~%%i,2!, n += 1" for /l %%b in (24,-1,0) do ( set /a "c = 0, n = %%b %% 5" for /l %%i in (66,-1,52) do set /a "c = (c << 8) + !aRegValue_%%i!, aRegValue_%%i = c / 24, c %%= 24" for %%j in (!c!) do set "sProductKey=!sKeyChar:~%%j,1!!sProductKey!" if %%b neq 0 if !n!==0 set "sProductKey=-!sProductKey!" ) endlocal &set "%~1=%sProductKey%" &goto :eof 
Хотя этот блок кода может ответить на этот вопрос, было бы лучше, если бы вы могли объяснить, почему это происходит. Кроме того, пожалуйста, отформатируйте ваш код, чтобы он был читабельным. DavidPostill 9 лет назад 2

Похожие вопросы