Ako zistiť aktivačný kľúč nainštalovaného balíka MS Office

Inštalačný kľúč balíka Microsoft Office po aktivácii produktu sa naďalej ukladá do systémového registra. Z dôvodu ochrany sa produktový kľúč neuchováva v otvorenom stave, ale v šifrovanom kódovaní base64 a. Táto metóda kódovania nie je trvalá, takže je ľahké ju extrahovať pomocou jednoduchého skriptu (podobnú techniku ​​sme preskúmali v článku, ktorý popisuje spôsob extrahovania inštalačného kľúča systému Windows 8). V tomto článku si ukážeme, ako získať aktivačný kód už nainštalovanej kópie MS Office pomocou skriptov PowerShell a vbs bez použitia pomocných programov tretích strán..

Tieto skripty sa dajú pohodlne použiť pri strate dokumentov alebo nálepiek s inštalačnými kľúčmi pre balík Microsoft Office.

Najprv zvážte skript na získanie kľúča PowerShell

  1. Vytvorenie nového textového súboru (v rovnakom poznámkovom bloku.exe)
  2. Skopírujte doň nasledujúci kód:
    function Get-MSOfficeProductKey param ([string []] $ 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 Názov_počítača, Názov produktu, 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šifrovať binárne dáta kódované base24 $ productKey = "" $ chars = "BCDFGHJKMPQRTVWXY2346789" pre ($ i = 24; $ i -ge 0; $ i--) $ r = 0 pre ($ j = 14; $ j -ge 0; $ j- -) $ r = ($ r * 256) -bx alebo $ valueData [$ j] $ valueData [$ j] = [math] :: Skrátiť ($ 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 súbor s príponou .ps1
  4. V závislosti od verzie systému MS Office: ak používate 32-bitovú verziu balíka Office, spustite 32-bitovú konzolu PowerShell ako správca. Ak používate 64-bitovú kanceláriu, spustite 64-bitovú konzolu PowerShell.Tipy. Office 2007 a nižšie sú iba 32 bitové. Kancelária 2010, 2013 a 2016 - existuje 32 aj 64 bitov. 64-bitovú verziu balíka Office nie je možné nainštalovať do 32-bitového systému Windows.
  5. V našom príklade je 32-bitová verzia balíka Office nainštalovaná v 64-bitovom systéme Windows, takže spustíme Windows PoweShell (x86).
  6. Povoliť miestne spustenie nepodpísaných skriptov:Set-ExecutionPolicy RemoteSignedPo zobrazení výzvy stlačte kláves Y a Enter.
  7. Importujeme predtým uložený skript pomocou príkazu a z neho zavoláme funkciu:Importovací modul C: \ Tools \ getmsofficekey.ps1; Get-MSOfficeProductKey
  8. Na obrazovke by sa mala objaviť značka obsahujúca informácie o všetkých nainštalovaných verziách balíka Office. Pole ProductName bude obsahovať názov nainštalovaného produktu a pole ProductKey bude obsahovať aktivačný kľúč.

Skript Ready Powershell si môžete stiahnuť tu: getmsofficekey-posh.zip

Podobný skript na získanie kľúčov 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 Pre každú položku v objekte InsDate = item.InstallDate 'Gather Operating System Information 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) Ak nie IsArray (arrKey), potom ukončite funkciu intIsWin8 = BitShiftRight (arrKey (a 1eyKey)) intKeyOffset + 14) = arrKey (intKeyOffset + 14) a 247 alebo bitShiftLeft (intIsWin8 a 2,2) i = 24 strChars = "BCDFGHJKMPQRTVWXY2346789" strKeyOutput = "" Zatiaľ čo i> -1 intCur = 0 intX = 14 zatiaľ čo intX intCur = BitShiftLeft (i ntCur, 8) intCur = arrKey (intX + intKeyOffset) + intCur arrKey (intX + intKeyOffset) = Int (intCur / 24) intCur = intCur Mod 24 intX = intX - 1 stláčať i = i - 1 strKeyOutput = stredný (strChars, intCur + 1,1) & strKeyOutput intLast = intCur Wend Ak intIsWin8 = 1, potom strKeyOutput = Mid (strKeyOutput, 2, intLast) & "N" & Right (strKeyOutput, Len (strKeyOutput) - (intLast + 1)) End If strKeyGUIDOutput = Mid (strKeyOutput, 1.5) & "-" & Mid (strKeyOutput, 6.5) & "- & Mid (strKeyOutput, 11.5) &" - ​​"& Mid (strKeyOutput, 16.5) &" - "& Mid (strKeyOutput, 21,5) DecodeProductKey = strKeyGUIDOutput End Function Funkcia RegReadBinary (strRegPath, strRegValue) Set objReg = GetObject (" winmgmts: impersonationLevel = impersonate! \\. \ Root \ default: StdreegegPegerPegerPeg HKLM, strRegPath, strRegValue, arrRegBinaryData RegReadBinary = arrRegBinaryData Set objReg = Nič End Function Function BitShiftLeft (intValue, intShift) BitShiftLeft = intValue * 2 ^ intShift End FunctionShift BitShiftRight (intValhi) ftRight = Int (intValue / (2 ^ intShift)) End Function Funkcia QueryOfficeProductKeys () strBaseKey = "SOFTWARE \" strOfficeKey = strBaseKey & "Microsoft \ Office" Set objReg = GetObject ("winmgmts: impersonationLevel = impersonate!) \ root \ default: StdRegProv ") objReg.EnumKey HKLM, strOfficeKey, arrOfficeVersionSubKeys intProductCount = 1 Ak IsArray (arrOfficeVersionSubKeys) potom na každom strOfficeVersionKey V arrOfficeVersionSubKeys Select Case strOfficeVersionKey Case" 11,0 "CheckOfficeKey strOfficeKey &" \ 11.0 \ Registration ", 52, intProductCount Prípad "12.0" CheckOfficeKey strOfficeKey & "\ 12.0 \ Registration", 52, intProductCount Prípad "14.0" CheckOfficeKey strOfficeKey & "\ 14.0 \ Registration", 808, intProductCount Case "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), potom pre každú strOfficeVersionKey In arrOfficeVersionSeyKeyKeyKeyKeyKey01KeyKey 11 Kľúč Key 11 \ 12.0 \ Registration ", 52, int intctctCount Case" 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ňovať \\ \ root \ default:!. StdRegProv") objReg.EnumKey HKLM, strRegPath, arrOfficeRegistrations ak IsArray (arrOfficeRegistrations ) Potom pre každú strOfficeRegistráciu V arrOfficeRegistations objReg.GetStringValue HKLM, strRegPath & "\" & strOfficeRegistration, "ConvertToEdition", strOfficeEdit ion objReg.GetBinaryValue HKLM, strRegPath & "\" a strOfficeRegistration, "DigitalProductID", arrProductID Ak strOfficeEdition "" A IsArray (arrProductID) Potom WriteData "tovar", strOfficeEdition WriteData "Key", DecodeProductKey (arrProductID, intKeyOffset) vbCrLf intProductCount = 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 = Nič End End Function Funkcia OsArch () Set objShell = WScript.CreateObject ("WScript.Shell") If objShell.ExpandEnvironmentStrings ("% ProgramFiles (x86)%") = "% ProgramFiles ( "Potom OsArch =" x86 "Else OsArch =" x64 "End If Set objShell = Nič End Function Sub WriteData (strProperty, strValue) WScript.Echo strProperty &": "& Trim (strValue) End Sub 

Pripravený súbor * .vbs súbor: get-office-keys-vbs.zip

Prijaté tlačidlo skontrolujeme pomocou štandardnej funkcie, ktorá vám umožní zobraziť posledných 5 znakov kľúča. Pre 32-bitovú kanceláriu v 64-bitovom systéme Windows príkaz:

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

Časť kľúča sa musí zhodovať s predchádzajúcimi údajmi.

poznámka. Na snímke obrazovky Office 2010, aktivovanej pomocou kľúča KMS).

ID SKU: 6f327760-8c5c-417c-9b61-836a98287e0c
LICENČNÝ NÁZOV: Office 14, vydanie OfficeProPlus-KMS_Client
OPIS LICENCIE: Kancelária 14, VOLUME_KMSCLIENT kanál
LICENČNÝ ŠTATÚT: --- LICENCIA---
CHYBA KÓDU: 0 podľa licencie
Posledných 5 znakov nainštalovaného kódu Product Key: H3GVB
ZOSTATKOVÝ GRACE: 178 dní (255897 minút pred uplynutím platnosti)