Jak zjistit aktivační klíč nainstalované MS Office

Instalační klíč sady Microsoft Office po aktivaci produktu se pokračuje v ukládání do systémového registru. Z důvodu ochrany není produktový klíč uložen na otevřeném místě, ale v šifrovaném kódování Base64 formulář. Tato metoda kódování není perzistentní, takže je snadné ji extrahovat pomocí jednoduchého skriptu (podobnou techniku ​​jsme prozkoumali v článku, který popisuje, jak extrahovat instalační klíč Windows 8). V tomto článku si ukážeme, jak získat aktivační kód již nainstalované kopie MS Office pomocí skriptů PowerShell a vbs bez použití nástrojů třetích stran.

Tyto skripty je vhodné použít při ztrátě dokumentů nebo nálepek s instalačními klíči pro sadu Microsoft Office.

Nejprve zvažte skript pro získání klíče PowerShell

  1. Vytvoření nového textového souboru (ve stejném poznámkovém bloku.exe)
  2. Zkopírujte do něj následující kód:
    funkce Get-MSOfficeProductKey param ([řetězec []] $ computerName = ".") $ product = @ () $ hklm = 2147483650 $ path = "SOFTWARE \ Microsoft \ Office" foreach ($ computer in $ computerName) $ wmi = [WMIClass] "\\ $ computer \ root \ default: stdRegProv" $ subkeys1 = $ wmi.EnumKey ($ hklm, $ path) foreach ($ subkey1 v $ subkeys1.snames) $ subkeys2 = $ wmi.EnumKey ($ hklm, "$ path \ $ subkey1") foreach ($ subkey2 v $ subkeys2.snames) $ subkeys3 = $ wmi.EnumKey ($ hklm, "$ path \ $ subkey1 \ $ subkey2") foreach ($ subkey3 v $ subkeys3) .snames) $ subkeys4 = $ wmi.EnumValues ​​($ hklm, "$ path \ $ subkey1 \ $ subkey2 \ $ subkey3") foreach ($ subkey4 v $ subkeys4.snames) if ($ subkey4 -eq "digitalproductid") $ temp = "" | vyberte ComputerName, ProductName, ProductKey $ temp.ComputerName = $ computer $ productName = $ wmi.GetStringValue ($ hklm, "$ path \ $ subkey1 \ $ subkey2 \ $ subkey3", "productname") $ temp.ProductName = $ productName. sValue $ data = $ wmi.GetBinaryValue ($ hklm, "$ path \ $ subkey1 \ $ subkey2 \ $ subkey3", "digitalproductid") $ valueData = ($ data.uValue) [52 ... 66] # dešifrovat base24 kódovaná binární data $ productKey = "" $ chars = "BCDFGHJKMPQRTVWXY2346789" pro ($ i = 24; $ i -ge 0; $ i--) $ r = 0 pro ($ j = 14; $ j -ge 0; $ j- -) $ r = ($ r * 256) -bx nebo $ valueData [$ j] $ valueData [$ j] = [math] :: zkrátit ($ r / 24) $ r = $ r% 24 $ productKey = $ chars [$ r] + $ productKey if (($ i% 5) -eq 0 - a $ i -ne 0) $ productKey = "-" + $ productKey $ temp.ProductKey = $ productKey $ product + = $ temp $ product 
  3. Uložte soubor s příponou .ps1
  4. V závislosti na verzi sady MS Office: Pokud používáte 32bitovou verzi sady Office, spusťte 32bitovou konzolu PowerShell jako správce. V případě použití 64bitové sady Office spusťte 64bitovou konzolu PowerShell.Tipy. Office 2007 a nižší jsou pouze 32 bitové. Kancelář 2010, 2013 a 2016 - existuje 32 i 64 bitů. 64bitovou verzi sady Office nelze nainstalovat do 32bitového systému Windows.
  5. V našem příkladu je 32bitová verze sady Office nainstalována v 64bitovém systému Windows, takže spustíme Windows PoweShell (x86).
  6. Povolit místní spuštění nepodepsaných skriptů:Set-ExecutionPolicy RemoteSignedPo zobrazení výzvy stiskněte Y a Enter.
  7. Dříve uložený skript importujeme pomocí příkazu a voláme z něj funkci:Importní modul C: \ Tools \ getmsofficekey.ps1; Get-MSOfficeProductKey
  8. Na obrazovce by se měla zobrazit značka obsahující informace o všech nainstalovaných verzích sady Office. Pole ProductName bude obsahovat název nainstalovaného produktu a pole ProductKey bude obsahovat aktivační klíč.

Připravený skript Powershell si můžete stáhnout zde: getmsofficekey-posh.zip

Podobný skript pro získání klíčů ProducId a MS Office na Vbscript

Const HKLM = & H80000002 Počítač = "." Set objWMIService = GetObject ("winmgmts: \\" & Computer & "\ root \ cimv2") Set Obj = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem") dim InsDate Pro každou položku v Obj InsDate = item.InstallDate 'Gather Operating Systémové informace Caption = Item.Caption OSArchitecture = Item.OSArchitecture CSDVersion = Item.CSDVersion Version = Item.Version Next dim NewDate NewDate = mid (InsDate, 9,2) & ":" & mid (InsDate, 11,2) & " : "& mid (InsDate, 13,2) NewDate = NewDate &" "& mid (InsDate, 7,2) &" / "& mid (InsDate, 5,2) &" / "& mid (InsDate, 1, 4) wscript.echo 'vbCrLf & "Office Keys" & vbCrLf QueryOfficeProductKeys () Function DecodeProductKey (arrKey, intKeyOffset) Pokud není IsArray (arrKey), pak opusťte funkci intIsWin8 = BitShiftRight (arrKey (a 1eyKey)) intKeyOffset + 14) = arrKey (intKeyOffset + 14) a 247 nebo bitShiftLeft (intIsWin8 a 2,2) i = 24 strChars = "BCDFGHJKMPQRTVWXY2346789" strKeyOutput = "" zatímco i> -1 intCur = 0 intX = 14 zatímco intX intCur = BitShiftLeft (i ntCur, 8) intCur = arrKey (intX + intKeyOffset) + intCur arrKey (intX + intKeyOffset) = Int (intCur / 24) intCur = intCur Mod 24 intX = intX - 1 Wend i = i - 1 strKeyOutput = střední (strChars, intCur + 1,1) & strKeyOutput intLast = intCur Wend Pokud intIsWin8 = 1 Pak strKeyOutput = Mid (strKeyOutput, 2, intLast) & "N" & Right (strKeyOutput, Len (strKeyOutput) - (intLast + 1)) End If strKeyGUIDOutput = Střední (strKeyOutput, 1.5) & "-" & Střední (strKeyOutput, 6,5) & "- & Střední (strKeyOutput, 11,5) &" - ​​"& Střední (strKeyOutput, 16,5) &" - "& Mid (strKeyOutput, 21,5) DecodeProductKey = strKeyGUIDOutput End Function Function RegReadBinary (strRegPath, strRegValue) Set objReg = GetObject (" winmgmts: impersonationLevel = impersonate! \\. \ Root \ default: StdgreggegPegerPegerPeger HKLM, strRegPath, strRegValue, arrRegBinaryData RegReadBinary = arrRegBinaryData Set objReg = Nic End Function Function BitShiftLeft (intValue, intShift) BitShiftLeft = intValue * 2 ^ intShift End FunctionShift BitShiftRight (intValhi ftRight = Int (intValue / (2 ^ intShift)) End Function Funkce QueryOfficeProductKeys () strBaseKey = "SOFTWARE \" strOfficeKey = strBaseKey & "Microsoft \ Office" Set objReg = GetObject ("winmgmts: impersonationLevel = impersonate!) \ root \ default: StdRegProv ") objReg.EnumKey HKLM, strOfficeKey, arrOfficeVersionSubKeys intProductCount = 1 Když IsArray (arrOfficeVersionSubKeys) pak na každém strOfficeVersionKey V arrOfficeVersionSubKeys Select Case strOfficeVersionKey Case" 11,0 "CheckOfficeKey strOfficeKey &" \ 11.0 \ Registration“, 52, intProductCount Případ "12.0" CheckOfficeKey strOfficeKey & "\ 12.0 \ Registration", 52, intProductCount Případ "14.0" CheckOfficeKey strOfficeKey & "\ 14.0 \ Registration", 808, intProductCount Případ "15.0" CheckOfficeKey strOfficeKey & "\ 15.0 \ Registration", 808, intProductCount End Select Next End If strBaseKey = "SOFTWARE \ Wow6432Node \" strOfficeKey = strBaseKey & "Microsoft \ Office" Set objReg = GetObject ("winmgmts: impersonationLevel = impersonate! \\. \ root \ default: StdRegProv" ob Reg.EnumKey HKLM, strOfficeKey, arrOfficeVersionSubKeys intProductCount = 1 If IsArray (arrOfficeVersionSubKeys), pak pro každý strOfficeVersionKey In arrOfficeVersionSeyKeyKeyKeyKeyKey01KeyKey 11eyeyeyeyey \ 12.0 \ Registration ", 52, case intProductCount" 14.0 "CheckOfficeKey strOfficeKey &" \ 14.0 \ Registration ", 808, intProductCount Case" 15.0 "CheckOfficeKey strOfficeKey &" \ 15.0 \ Registration ", 808, intProductCount End Select Next End If End Function Function ‚Office Product Key Sub CheckOfficeKey (strRegPath, intKeyOffset, intProductCount) Set objReg = GetObject ( "winmgmts: impersonationLevel = zosobňovat \\ \ root \ default:!. StdRegProv") objReg.EnumKey HKLM, strRegPath, arrOfficeRegistrations-li IsArray (arrOfficeRegistrations ) Pak pro každou strOfficeRegistraci V arrOfficeRegistrace objReg.GetStringValue HKLM, strRegPath & "\" & strOfficeRegistration, "ConvertToEdition", strOfficeEdit ionty intProductCount + 1 End If Next End If End Sub Function RegReadBinary (strRegPath, strRegValue) Set objReg = GetObject ("winmgmts: impersonationLevel = impersonate! \\. \ root \ default: StdRegProv,) , arrRegBinaryData RegReadBinary = arrRegBinaryData Set objReg = Nic End Function Function OsArch () Set objShell = WScript.CreateObject ("WScript.Shell") If objShell.ExpandEnvironmentStrings ("% ProgramFiles (x86)%") = "% ProgramFiles ( "Pak OsArch =" x86 "Else OsArch =" x64 "End If Set objShell = Nic End Function Sub WriteData (strProperty, strValue) WScript.Echo strProperty &": "& Trim (strValue) End Sub 

Připravený soubor * .vbs file: get-office-keys-vbs.zip

Přijatou klávesu zkontrolujeme pomocí standardní funkce, která vám umožní zobrazit posledních 5 znaků klíče. Pro 32bitovou sadu Office v 64bitovém systému Windows je příkaz:

cscript "C: \ Program Files (x86) \ Microsoft Office \ Office14 \ OSPP.VBS" / dstatus

Část klíče se musí shodovat s předchozími daty.

Poznámka:. Na snímku obrazovky Office 2010, aktivovaného klíčem KMS).

Číslo SKU: 6f327760-8c5c-417c-9b61-836a98287e0c
LICENČNÍ NÁZEV: Office 14, vydání OfficeProPlus-KMS_Client
POPIS LICENCE: Kancelář 14, VOLUME_KMSCLIENT kanál
LICENČNÍ STAV: --- LICENČNÍ---
CHYBA KÓDU: 0 jako licence
Posledních 5 znaků nainstalovaného kódu Product Key: H3GVB
ZMĚNA ZMĚNY: 178 dní (255897 minut před vypršením platnosti)