Open-source project
massgravel/TSforge avatar
massgravel/TSforge

TSforge: a Windows activation toolkit that writes into the license store itself

A collection of activation/evaluation extension methods for Windows Vista through 11.

2,575 stars348 forksC#GPL-3.0

At a glance

What is it?
A small C# library and command line tool that manipulates the Windows Software Protection Platform physical store directly, with activation methods the authors reserve for older releases and add-on licenses.
Who is it for?
TSforge is a research codebase more than an end-user tool, and the README frames it that way: no support for direct use, with Microsoft Activation Scripts named as the only supported host. Its real interest is the physical store, a documented target that the project dumps, edits and reloads, and that its authors use to hold activation data that survives without services, tasks or injected libraries.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 38 days ago.
What is it written in?
Mainly C#, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 11, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A C# library plus a CLI, with the user-facing tool deliberately withheld

GitHub describes TSforge as a collection of activation and evaluation extension methods for Windows Vista through 11, authored by WitherOrNot and asdcorp, released under GPL-3.0, with no topics set on the repository. The source tree is short enough to read in one sitting: a `LibTSforge/` directory, a `TSforgeCLI/` directory, a `TSforge.slnx` solution file, a README and a LICENSE. The newer `.slnx` extension rather than the classic `.sln` is a small signal that the tooling here is current rather than an archived experiment.

The split matters for how you read the repository. `LibTSforge/` holds the methods, and `TSforgeCLI/` is a thin front end that exposes them as switches. The README is explicit that direct use of the tool is unsupported and that the only supported implementation of the methods lives in Microsoft Activation Scripts at massgrave.dev. So the repository you are reading is the library and a developer CLI, not the interface most people would meet in practice.

That framing also sets expectations about support. There is no compatibility matrix, no migration guide and no changelog beyond three releases. The last push was on 2026-09-03.

The physical store, also called the trusted store

The README's FAQ section explains the mechanism more directly than most activation projects do. TSforge manipulates data in a file Windows calls the physical store, which is where the operating system keeps activation data that actually decides whether a license is valid: expiry timers and the hardware IDs bound to each license. Through reverse engineering, the authors say they can insert their own data into that store, covering any product managed by the Software Protection Platform.

The trusted store name follows from the same source, since the data in the physical store is also known as the trusted store. Two switches do the raw file work:

code
/dump <filePath> (<encrFilePath>)         Dump and decrypt the physical store to the specified path.
/load <filePath>                          Load and re-encrypt the physical store from the specified path.

A dump and load round trip is the part of the design with the longest reach outside activation. Anything that can be written into the trusted store can be read back out, which makes the pair useful for inspecting what Windows has decided about a machine rather than only for changing it. The optional second argument on `/dump` is where the re-encrypted form goes.

Three activation methods and the edition each one needs

The method list in the README is not a set of interchangeable activations. Each one is gated on what the target edition supports, which is the single most useful thing to understand before reading further.

ZeroCID gives permanent activation until a reinstall or feature upgrade, and it only supports phone-activatable editions. KMS4k is an offline KMS activation valid for over 4000 years, limited to KMS-activatable editions. AVMA4k is the offline Activation Volume Management equivalent with the same long validity and a narrower target, Windows Server 2012 R2 and later only. Alongside them sit Reset Rearm Count and Reset Eval Period, which do not activate anything but clear the counters and timers that bound evaluation, giving what the README calls infinite evaluation.

The remainder of the list is store and key surgery rather than activation. Delete Unique ID removes a product key's unique ID, which the README says prevents online key validation. Install Generated Product Key installs key data for any product using only an Activation ID, without a key string. KMS Charger resets the charged count on a local KMS server to 25 and needs an activated KMS host, with the README noting client counts hold for a maximum of 30 days. Clear Tamper State removes the flags sppsvc sets when it detects tampering. Remove Evaluation Key Lock clears the key change lock, and Set IID Parameters writes Installation ID values independently of whatever key is installed.

Reading the switch list for what the tool refuses to do

The help text is the most complete documentation in the repository, and it is worth reading closely because it states several limits in the same breath as the features.

code
/ver <version>                            Override the detected version. Available versions: vista, 7, 8, blue, modern.
/prod                                     Use SPP production key.
/test                                     Use SPP test key.

The `/ver` list is short and specific, and `blue` is the internal name for Windows 8.1. The `/siid` switch takes four arguments, with the first choosing between the PKEY2005 and PKEY2009 key algorithms:

code
/siid <5/9> <group> <serial> <security>   Set Installation ID parameters independently of installed key.

The Vista section of the FAQ is the clearest statement of refusal in the project. `/duid` is not available because the key unique ID cannot be removed from the Vista physical store. `/igpk` and `/siid` are both unavailable because the data is derived directly from the key string, which prevents forgery. `/revl` is absent because the evaluation key lock does not exist on Vista at all. The consequence the README draws is blunt: on Vista you must supply a real product key to activate a SKU. It also flags that ZeroCID on Vista and Server 2008 had no protection against deactivation by the WGA update KB929391, an update no longer served through Windows Update.

Activating by Activation ID, which is the add-on path

The `/igpk` switch accepts a bare Activation ID rather than a product key, and that is what makes TSforge relevant to add-on licenses such as ESU. The README gives the procedure: run `slmgr /dlv all` to get the list of installable licenses and their Activation IDs, click into the dialog and press CTRL + C to copy it, then pass the ID you want.

code
TSforge.exe /igpk <activation id>

The same two switches set up a KMS host. Combining `/igpk` and `/zcid` with the KMS Host SKU's Activation ID activates the host, and `/kmsc` then charges that server with 25 clients. The 30 day ceiling on that count is in the README, so a host has to be recharged regularly to stay useful.

The FAQ also claims two firsts. TSforge is described as the only public activator able to activate any Windows add-on, and the only one offering hardware-invariant activation with no persistent network connections, no added services or tasks, and no injected DLLs. Take those as project claims rather than measured results; the part that follows from the design is the absence of a network component, since every method is stated to work locally with no internet connection.

Where the README tells you to use something else

The downsides section is the most useful paragraph in the README, and it argues against the tool on current Windows. For Windows 10 and 11 the authors recommend the HWID method instead, describing TSforge as less reliable there and missing capabilities HWID offers, specifically surviving feature upgrades and complete OS reinstalls. For Windows 7 through 8.1 they state there are no notable downsides, and elsewhere the tool's advantages are claimed for exactly that range, on the grounds that it can permanently activate any edition of those releases without modifying the boot process or Windows system executables.

Their own one line summary is that you should only use TSforge if you are on an old Windows release or if you want to activate add-ons such as ESU to extend the support end date. That is a narrower target than the Windows Vista through 11 range in the project description, and for a reader deciding whether this fits, the narrower statement is the one to plan around.

On release history, three tags are published. Version 1.1.0 Longhorn 1 on 2025-04-14 added the `/siid` switch, increased a service timeout for older systems and improved detection of SPP store files. Version 1.1.0 on 2025-04-15 fixed ZeroCID on Vista, and version 1.1.1 on 2025-09-09 added a fix for poorly written pkeyconfigs, which reads as tolerance for malformed configuration input rather than a feature. The GPL-3.0 license governs redistribution of the code. Whether any particular use complies with Microsoft's licensing terms is a separate question the repository does not address.

Editorial conclusion

TSforge is a research codebase more than an end-user tool, and the README frames it that way: no support for direct use, with Microsoft Activation Scripts named as the only supported host. Its real interest is the physical store, a documented target that the project dumps, edits and reloads, and that its authors use to hold activation data that survives without services, tasks or injected libraries. The narrower the target, the more the method matters: ZeroCID needs a phone-activatable edition, KMS4k needs a KMS-activatable one, and AVMA4k is Server 2012 R2 or later. For Windows 10 and 11 the authors themselves point at the HWID method instead. Start by reading the FAQ section in the README, which is where the honest limits are written down, and check the GPL-3.0 terms against whatever you intend to do with it.

Frequently asked questions

What is TSforge and how is it different from running a KMS emulator?

TSforge edits the Windows license physical store directly, which the README also calls the trusted store, rather than standing up a KMS service that the machine then believes. It also requires no internet connection, no added services or scheduled tasks and no injected DLLs, according to the project.

Which Windows editions can TSforge activate?

It depends on the method. ZeroCID only supports phone-activatable editions, KMS4k only KMS-activatable editions, and AVMA4k is limited to Windows Server 2012 R2 and later. On Vista and Server 2008 the README says a real product key must be supplied, because key data is derived directly from the key string there.

Why is TSforge not recommended for Windows 10 and Windows 11?

The README says to use the HWID method on those releases instead, describing TSforge as less reliable and missing the ability to survive feature upgrades and a full OS reinstall. It recommends TSforge for Windows 7 through 8.1 and for activating add-on licenses such as ESU.

Do any TSforge methods need an internet connection?

No. The README states that none of the methods require connecting to the internet, and that everything is done locally. One related exception is worth knowing: a charged KMS host holds its client count for a maximum of 30 days, so that case needs periodic recharging.

Official sources

  1. Issues
  2. License: GPL-3.0
  3. massgravel/TSforge on GitHub
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/massgravel-tsforge.svg)](https://hysenlabs.com/projects/massgravel-tsforge)