Activate Microsoft Volume License products in seconds.

One private KMS host, every supported edition. Auto-discovery via DNS SRV from inside the network, manual /skms from outside. No keys to remember — just install a Volume License edition and it activates itself.

Internal LAN host {{ .Site.Params.kmsHost }}:{{ .Site.Params.kmsPort }}
External / off-LAN host {{ .Site.Params.kmsHostExt }}:{{ .Site.Params.kmsPort }}
Auto-discovery SRV _vlmcs._tcp.viktorbarzin.lan

Quick start — fully automatic on a new machine

On the home / lab network, a freshly-installed Volume License edition will activate itself once Windows can find the SRV record. The bootstrap script below sets the Primary DNS Suffix, optionally installs Office + Project (LTSC 2024 VL), triggers slmgr /ato + ospp.vbs /act, and prompts for a single reboot.

PowerShell (run as Administrator)
powershell -ExecutionPolicy Bypass -File "\\nas.viktorbarzin.lan\Emo shared\kms-bootstrap.ps1"

Off-LAN? Skip auto-discovery and pin the host explicitly:

cmd.exe — explicit KMS host
slmgr /skms kms.viktorbarzin.me
slmgr /ato

cscript "C:\Program Files\Microsoft Office\Office16\ospp.vbs" /sethst:kms.viktorbarzin.me
cscript "C:\Program Files\Microsoft Office\Office16\ospp.vbs" /act
{{/* helper: build product family groupings */}} {{ $windows := .Site.Data.products.windows }} {{ $servers := .Site.Data.products.windows_server }} {{ $office := .Site.Data.products.office }}

Windows desktop

Per-edition GVLKs. Volume License only — Home and retail SKUs cannot KMS-activate. Click any key to copy.

{{ $order := slice "Windows 11 / 10" "Windows LTSC" "Legacy desktop" }} {{ range $family := $order }} {{ $items := where $windows "family" $family }} {{ if $items }}

{{ $family }}

{{ range $items }} {{ end }}
EditionGVLKNotes
{{ .edition }}{{ if .current }} current{{ end }} {{ .gvlk }} {{ with .notes }}{{ . }}{{ else }}—{{ end }}
{{ end }} {{ end }}
How to use a GVLK on Windows
:: open cmd.exe as Administrator
slmgr /upk                            :: remove existing key
slmgr /ipk <PASTE-GVLK-HERE>          :: install GVLK
slmgr /skms kms.viktorbarzin.me       :: optional: skip auto-discovery
slmgr /ato                            :: activate
slmgr /dlv                            :: verify (look for "LICENSED")

Windows Server

Server SKUs need only 5 unique clients to satisfy the KMS activation count threshold (vs. 25 for desktop).

{{ $serverOrder := slice "Windows Server 2025" "Windows Server 2022" "Windows Server 2019" "Windows Server 2016" "Windows Server 2012 R2" "Windows Server 2012" "Windows Server 2008 R2" "Windows Server 2008" }} {{ range $family := $serverOrder }} {{ $items := where $servers "family" $family }} {{ if $items }}

{{ $family }}

{{ range $items }} {{ end }}
EditionGVLKNotes
{{ .edition }}{{ if .current }} current{{ end }} {{ .gvlk }} {{ with .notes }}{{ . }}{{ else }}—{{ end }}
{{ end }} {{ end }}

Office · Project · Visio

All listed editions are Volume License. Install via the Office Deployment Tool with the matching Configuration.xml below (use Channel shown in each row), or manually swap a retail key with ospp.vbs /unpkey:<LAST5> + /inpkey:<GVLK> and /act.

{{ $officeOrder := slice "Office LTSC 2024" "Office LTSC 2021" "Office 2019" "Office 2016" }} {{ range $family := $officeOrder }} {{ $items := where $office "family" $family }} {{ if $items }}

{{ $family }}

{{ range $items }} {{ end }}
EditionProduct IDGVLKChannel
{{ .edition }}{{ if .current }} current{{ end }} {{ .product }} {{ .gvlk }} {{ .channel }}
{{ end }} {{ end }}
Sample Configuration.xml — Office Pro Plus 2024 + Project Pro 2024
<Configuration>
  <Add OfficeClientEdition="64" Channel="PerpetualVL2024">
    <Product ID="ProPlus2024Volume"   PIDKEY="XJ2XN-FW8RK-P4HMP-DKDBV-GCVGB">
      <Language ID="en-us"/>
    </Product>
    <Product ID="ProjectPro2024Volume" PIDKEY="FQQ23-N4YCY-73HQ3-FM9WC-76HF4">
      <Language ID="en-us"/>
    </Product>
  </Add>
  <Updates Enabled="TRUE" Channel="PerpetualVL2024"/>
  <Display Level="None" AcceptEULA="TRUE"/>
  <Property Name="AUTOACTIVATE" Value="1"/>
  <Property Name="FORCEAPPSHUTDOWN" Value="TRUE"/>
</Configuration>
Activation — bare commands
cd "C:\Program Files\Microsoft Office\Office16"
cscript ospp.vbs /sethst:kms.viktorbarzin.me
cscript ospp.vbs /inpkey:<PASTE-GVLK>
cscript ospp.vbs /act
cscript ospp.vbs /dstatus               :: verify --LICENSED--

Downloads

Office Deployment Tool

Single binary that installs every Office VL edition listed above, driven by a Configuration.xml.

{{ .Site.Data.products.downloads.odt.label }} ↗

{{ .Site.Data.products.downloads.odt.notes }}

Windows ISOs

Bootstrap script

One-shot PowerShell that wires DNS suffix, Office install, and activation:

kms-bootstrap.ps1 ↗

FAQ & gotchas

Why won't my retail Office activate?

KMS only grants licenses to Volume License editions. Retail / OEM / Microsoft 365 keys reject KMS responses. Either reinstall as VL via ODT, or swap the key in place: cscript ospp.vbs /unpkey:<LAST5> followed by cscript ospp.vbs /inpkey:<GVLK> and /act.

What about Windows Home?

Home editions cannot be KMS-activated. Either upgrade to Pro/Enterprise/Education (DISM /Set-Edition or in-place reinstall) or use a retail key.

The first activation fails with 0xC004F038

That's the KMS count threshold: 25 unique clients (or 5 servers) must contact the host before desktop clients can activate. The host caches counts for 30 days. The vlmcsd implementation in this server bypasses that — but real Microsoft KMS hosts enforce it. If you ever swap to a hardware host you may need to pre-seed activations.

Office LTSC vs Microsoft 365 — can they coexist?

No. The Click-to-Run installer refuses side-by-side. Run setup.exe /configure Remove.xml with <Remove All="TRUE"/> first, then install the VL edition.

How does auto-discovery work?

The Software Protection Service queries DNS for _vlmcs._tcp.<primary-dns-suffix>. If the SRV resolves it connects to that host on the returned port (1688 by default). On this network the suffix is viktorbarzin.lan and the SRV resolves to kms.viktorbarzin.lan:1688. Set the suffix once via System Properties → Computer Name → More → Primary DNS suffix.

How long does a KMS license last?

180 days. The client tries to renew every 7 days; one successful renewal resets the 180-day clock. As long as a machine reaches the KMS once a quarter it stays activated indefinitely.

Where can I see the GVLKs Microsoft publishes?

Windows: learn.microsoft.com/.../kms-client-activation-keys.
Office / Project / Visio: learn.microsoft.com/.../gvlks.