[HOW-TO/SUPPORT/CHAT] OFFICE C2R Download/Install/Activation

Discussion in 'Microsoft Office' started by s1ave77, Jul 19, 2015.

  1. Dark Vador

    Dark Vador X Æ A-12

    Feb 2, 2011
    4,828
    7,137
    150
    #5141 Dark Vador, Feb 27, 2024
    Last edited: Feb 27, 2024
    uploaded v4.0
    https://forums.mydigitallife.net/threads/62571/page-258#post-1824883

    fixed stop service command,
    sc is also an alias in PS, not just a CMD command
    replace with this instead

    **
    I need to stop this thing of C/P command to PS ...
    it's not always working, most of the time it is, but not always

    Code:
      gwmi Win32_Service | ? Name -Match "WSearch|ClickToRunSvc" | % {
        $_.StopService() | Out-Null }
     
      Get-Service -Name @("WSearch", "ClickToRunSvc") |
        Stop-Service -Force -PassThru | Out-Null
    
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  2. NickH

    NickH MDL Novice

    Jan 24, 2010
    36
    5
    0
    #5142 NickH, Mar 4, 2024
    Last edited: Mar 4, 2024
    Just as a follow up to this. I have 2 PCs I am decommissioning. Do I have to do something to deactivate their licences to return them to the pool of available licences or reduce the used license count before wiping the PCs?
     
  3. abbodi1406

    abbodi1406 MDL KB0000001

    Feb 19, 2011
    18,610
    100,025
    340
  4. abbodi1406

    abbodi1406 MDL KB0000001

    Feb 19, 2011
    18,610
    100,025
    340
  5. Dark Vador

    Dark Vador X Æ A-12

    Feb 2, 2011
    4,828
    7,137
    150
    #5146 Dark Vador, Mar 22, 2024
    Last edited: Mar 22, 2024
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  6. dazed01

    dazed01 MDL Novice

    Mar 24, 2020
    13
    0
    0
    #5147 dazed01, Mar 29, 2024
    Last edited: Mar 29, 2024
    Microsoft Office LTSC Professional Plus, Can I install the version on Macbook? Do I have a chance to get a KMS license?

    (I'm sorry if I wrote in the wrong topic. This is my first time working with a Macbook. I have no knowledge. We do not use Windows at work.)
     
  7. Sajjo

    Sajjo MDL Member

    Feb 6, 2018
    3,282
    4,445
    120
  8. Oneill83

    Oneill83 MDL Novice

    Nov 23, 2013
    14
    1
    0
    Good afternoon, you see, I have purchased an Office 2021 Professional Plus license but I don't know where I can download the latest version available in Spanish.

    All the best.
     
  9. Dolmatov

    Dolmatov MDL Addicted

    Aug 16, 2017
    561
    501
    30
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  10. Dolmatov

    Dolmatov MDL Addicted

    Aug 16, 2017
    561
    501
    30
    What? You choose the product you purchased.
    There is no "Office ltsc" option (two words) in the list, so it is not clear where you are looking for it.
    upload_2024-3-30_21-23-0.png
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  11. Oneill83

    Oneill83 MDL Novice

    Nov 23, 2013
    14
    1
    0
    I buy Office 2021 Porfessional Plus Retail
     
  12. Dark Vador

    Dark Vador X Æ A-12

    Feb 2, 2011
    4,828
    7,137
    150
    Office Licenses Information by Yerong ~ New version
    updated with latest keys of 2024 channel
    thanks abbodi1406 for providing the new keys
    still have some missing retail keys ..
    it is what it is.

    upload_2024-4-11_21-18-52.png
     

    Attached Files:

    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  13. Dark Vador

    Dark Vador X Æ A-12

    Feb 2, 2011
    4,828
    7,137
    150
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  14. richwood

    richwood MDL Novice

    Nov 16, 2013
    39
    30
    0
  15. Dark Vador

    Dark Vador X Æ A-12

    Feb 2, 2011
    4,828
    7,137
    150
    #5160 Dark Vador, Apr 22, 2024
    Last edited: Apr 22, 2024
    `pkeyconfig` data reader, just for fun [v6]
    new Result's ..................... :D

    Code:
    Ref: 5041
    Type: Volume:GVLK
    ID: {FCEDA083-1203-402A-8EC4-3D7ED9F3648C}
    Name: Office24_ProPlus2024PreviewVL_KMS_Client_AE
    KeyInfo command line usage => KeyInfo 13B1 0 0
    KeyRange: [0] => [999], Number: X23-60459, Type: ltKMS, IsValid: True
    
    Ref: 5044
    Type: Volume:MAK
    ID: {8FDB1F1E-663F-4F2E-8FDB-7C35AEE7D5EA}
    Name: Office24_ProPlus2024PreviewVL_MAK_AE
    KeyInfo command line usage => KeyInfo 13B4 0 0
    KeyRange: [0] => [99999], Number: X23-60462, Type: ltMAK, IsValid: True
    
    upload_2024-4-22_10-24-46.png

    Code:
    Class KeyRange {
      [string] $RefActConfigId
      [string] $PartNumber
      [string] $EulaType
      [bool]   $IsValid
      [int]    $Start
      [int]    $End
    }
    
    Class ConfigInfo {
      [string] $ActConfigId
      [int]    $RefGroupId
      [string] $ProductDescription
      [string] $ProductKeyType
      [bool]   $IsRandomized
      [KeyRange[]] $KeyRanges
    
      [String] ToString() {
        $output = $null
        $GroupId = [System.String]::Format("{0:X}",$this.RefGroupId)
        $output = "Ref: $($this.RefGroupId)`nType: $($this.ProductKeyType)`nID: $($this.ActConfigId)`nName: $($this.ProductDescription)`n"
        $output += "KeyInfo command line usage => KeyInfo $($GroupId) 0 0`n"
        $this.KeyRanges | Sort-Object -Property @{Expression = "Start"; Descending = $false } | % {
          $keyInfo = $_ -as [KeyRange]
          $output += "KeyRange: [$($keyInfo.Start)] => [$($keyInfo.End)], Number: $($keyInfo.PartNumber), Type: $($keyInfo.EulaType), IsValid: $($keyInfo.IsValid)`n" }
        return $output
      }
    }
    
    $LicenseInfo =
      Join-Path @([Environment]::GetFolderPath("Desktop")) 'LicenseInfo.xml'
    
    Function GenerateConfigList {
      param  (
        [ValidateNotNullOrEmpty()]
        [Parameter(ValueFromPipeline)]
        [string] $pkeyconfig = "$env:ProgramFiles\Microsoft Office\root\Licenses16\pkeyconfig-office.xrm-ms"
      )
    $Output = @{}
    if (-not [IO.FILE]::Exists($pkeyconfig)) {
      return $null }
    
    $data = Get-Content -Path $pkeyconfig
    $iStart = $data.IndexOf('<tm:infoBin name="pkeyConfigData">') + 34
    $iEnd = $data.Substring($iStart).IndexOf('</tm:infoBin>')
    $Conf = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($data.Substring($iStart, $iEnd)))
    
    $iStart = $Conf.IndexOf('<pkc:Configurations>') + 21
    $iEnd   = [INT]::Parse($Conf.IndexOf('</pkc:Configurations>')) - $iStart
    $Configurations = $Conf.Substring($iStart,$iEnd) -split '<pkc:Configuration>'
    
    $iStart = $Conf.IndexOf('<pkc:KeyRanges>') + 17
    $iEnd   = [INT]::Parse($Conf.IndexOf('</pkc:KeyRanges>')) - $iStart
    $KeyRanges = $Conf.Substring($iStart,$iEnd) -split '<pkc:KeyRange>'
    
    $Configurations | % {
     $Source = $_|Out-String
    
     if ($Source.IndexOf('<pkc:ActConfigId>') -ne '-1') {
      $iStart = $Source.IndexOf('<pkc:ActConfigId>') + 17
      $iEnd   = $Source.IndexOf('</pkc:ActConfigId>') - $iStart
      $ActConfigId = $Source.Substring($iStart, $iEnd)
    
      $iStart = $Source.IndexOf('<pkc:RefGroupId>') + 16
      $iEnd   = $Source.IndexOf('</pkc:RefGroupId>') - $iStart
      $RefGroupId = $Source.Substring($iStart, $iEnd)
    
      $iStart = $Source.IndexOf('<pkc:EditionId>') + 15
      $iEnd   = $Source.IndexOf('</pkc:EditionId>') - $iStart
      $EditionId = $Source.Substring($iStart, $iEnd)
    
      $iStart = $Source.IndexOf('<pkc:ProductDescription>') + 24
      $iEnd   = $Source.IndexOf('</pkc:ProductDescription>') - $iStart
      $ProductDescription = $Source.Substring($iStart, $iEnd)
    
      $iStart = $Source.IndexOf('<pkc:ProductKeyType>') + 20
      $iEnd   = $Source.IndexOf('</pkc:ProductKeyType>') - $iStart
      $ProductKeyType = $Source.Substring($iStart, $iEnd)
    
      $iStart = $Source.IndexOf('<pkc:IsRandomized>') + 18
      $iEnd   = $Source.IndexOf('</pkc:IsRandomized>') - $iStart
      $IsRandomized = $Source.Substring($iStart, $iEnd) -as [BOOL]
    
      $cInfo = [ConfigInfo]::new()
      $cInfo.ActConfigId = $ActConfigId
      $cInfo.IsRandomized= $IsRandomized
      $cInfo.ProductDescription = $ProductDescription
      $cInfo.RefGroupId = $RefGroupId
      $cInfo.ProductKeyType = $ProductKeyType
      $cInfo.KeyRanges =
     
      $Output.Add(
        $ActConfigId, $cInfo )
     }}
    
     $KeyRanges | % {
       $Source = $_|Out-String
       if ($Source.IndexOf('<pkc:RefActConfigId>') -ne '-1') {
    
        $iStart = $Source.IndexOf('<pkc:RefActConfigId>') + 20
        $iEnd   = $Source.IndexOf('</pkc:RefActConfigId>') - $iStart
        $RefActConfigId = $Source.Substring($iStart, $iEnd)
    
        $iStart = $Source.IndexOf('<pkc:PartNumber>') + 16
        $iEnd   = $Source.IndexOf('</pkc:PartNumber>') - $iStart
        $PartNumber = $Source.Substring($iStart, $iEnd)
    
        $iStart = $Source.IndexOf('<pkc:EulaType>') + 14
        $iEnd   = $Source.IndexOf('</pkc:EulaType>') - $iStart
        $EulaType = $Source.Substring($iStart, $iEnd)
    
        $iStart = $Source.IndexOf('<pkc:IsValid>') + 13
        $iEnd   = $Source.IndexOf('</pkc:IsValid>') - $iStart
        $IsValid = $Source.Substring($iStart, $iEnd) -as [BOOL]
    
        $iStart = $Source.IndexOf('<pkc:Start>') + 11
        $iEnd   = $Source.IndexOf('</pkc:Start>') - $iStart
        $Start = $Source.Substring($iStart, $iEnd) -as [INT]
    
        $iStart = $Source.IndexOf('<pkc:End>') + 9
        $iEnd   = $Source.IndexOf('</pkc:End>') - $iStart
        $End = $Source.Substring($iStart, $iEnd) -as [INT]
    
        $kRange = [KeyRange]::new()
        
        $kRange.End = $End
        $kRange.Start = $Start
        $kRange.IsValid = $IsValid
        $kRange.EulaType = $EulaType
        $kRange.PartNumber = $PartNumber
        $kRange.RefActConfigId = $RefActConfigId
    
        $cInfo = $Output[$RefActConfigId] -as [ConfigInfo]
        $cInfo.KeyRanges += $kRange
       }
     }
    
     return $Output.Values
    }
    
    cls;
    Write-Host;
    
    $Licenses = GenerateConfigList |
      OGV -Title 'Select Licenses' -OutputMode Multiple
    
    if ($Licenses) {
      $Licenses | % {$_.ToString()} }
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...