Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@ name: C/C++ CI (Windows)

on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
branches: [ "*" ]

jobs:
build:
Expand Down
431 changes: 431 additions & 0 deletions ICON_LICENSE.txt

Large diffs are not rendered by default.

504 changes: 504 additions & 0 deletions LICENSE

Large diffs are not rendered by default.

277 changes: 0 additions & 277 deletions LICENSE.txt

This file was deleted.

46 changes: 20 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
# xpmgr
![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/UMSKT/xpmgr/windows.yml)

Command line interface for Windows XP license management, inspired by Microsoft's "slmgr".

## Usage
Expand All @@ -10,42 +12,34 @@ If you have Windows XP Professional x64 Edition or a x64 version of Windows Serv

If you have an Itanium version of Windows XP or Server 2003, Windows Product Activation is not on those editions, so there is no need for this tool.

If you're trying to manage products other than Windows, you need `xpmgr_x86.exe`, regardless of your architecture.

`--GetProductID`: Gets the product ID (ex: `76477-755-3803223-21229`).

`--SetProductKey` or `/ipk`: Sets the product key (tested to work with dashes). If already activated, this should give an error instead.
`/dli`: Gets the product ID (ex: `76477-755-3803223-21229`).

`--GetInstallationID` or `/dti`: Gets an Installation ID with **no dashes** (ex: `253286028742154311079061239762245184619981623171292574`). If already activated, this should give an error instead.
`/ipk`: Sets the product key (tested to work with dashes). If already activated, this should give an error instead.

`--SetConfirmationID` or `/atp`: Sets a Confirmation ID (tested to work with dashes). If already activated, this should give an error instead. If successful, this also removes the "Activate Windows" shortcuts and kills the WPA notifier process (`wpabaln.exe`) if it's running.
`/dti`: Gets an Installation ID with **no dashes** (ex: `253286028742154311079061239762245184619981623171292574`). If already activated, this should give an error instead.

`--GetWPALeft`: Gets the number of days before activation is required, in days. If already activated, this should give an error instead.
`/atp`: Sets a Confirmation ID (tested to work with dashes). If already activated, this should give an error instead. If successful, this also removes the "Activate Windows" shortcuts and kills the WPA notifier process (`wpabaln.exe`) if it's running.

`--GetEvalLeft`: Gets the number of days before the evaluation period expires, in days. In non-evaluation copies of Windows, this should give an error instead.
`/xpr`: Gets the number of days before activation is required, in days. If already activated, this should give an error instead.

`--Office2003`: This provides **EXPERIMENTAL** support for Office 2003. When this parameter is used, all other parameters except `--GetInstallationID` and `--SetConfirmationID` are disabled, and those two (attempt) to go what they do on Office 2003, rather than Windows.
`/xpr-eval`: Gets the number of days before the evaluation period expires, in days. In non-evaluation copies of Windows, this should give an error instead.

`--BypassInstallCheck`: Disables the check to see if Office 2003 is installed. Intended for debugging purposes only. If it doesn't work without this enabled, it probably won't work with it either.

`--GetUsage`: Outputs all the commands you can use.
`/?`: Outputs all the commands you can use.

## Releases
https://github.com/UMSKT/xpmgr/releases

## Building
Make sure Visual Studio 2017 or later is installed. Then, install [TDM-GCC](https://jmeubank.github.io/tdm-gcc/about/). Then, run, at the source folder:
```
mkdir build
mkdir build\x86
mkdir build\x64
windres icon.rc -F pe-i386 -O coff -o build\x86\icon_x86.res
g++ -m32 -o build\x86\xpmgr_x86 xpmgr.cpp build\x86\icon_x86.res -lole32 -luuid -loleaut32
windres icon.rc -O coff -o build\x64\icon_x64.res
g++ -o build\x64\xpmgr_x64 xpmgr.cpp build\x64\icon_x64.res -lole32 -luuid -loleaut32
```
## Credits
Icon made by %fillin%, released under Creative Commons CC-BY-SA 4.0. Modified by [TheTank20](https://github.com/thepwrtank18) to differenciate from UMSKT.

Or, if you like one-liners:
## License
This code is licensed under the LGPLv3 license.
> [!IMPORTANT]
> Versions from May 7th, 2025 and earlier are licensed under the EPL license.

## Building
Make sure Visual Studio 2017 or later is installed (recommended, might not be needed). Then, install [TDM-GCC](https://jmeubank.github.io/tdm-gcc/about/). Then, use CMake to build:
```
mkdir build & mkdir build\x86 & mkdir build\x64 & windres icon.rc -F pe-i386 -O coff -o build\x86\icon_x86.res & g++ -m32 -o build\x86\xpmgr_x86 xpmgr.cpp build\x86\icon_x86.res -lole32 -luuid -loleaut32 & windres icon.rc -O coff -o build\x64\icon_x64.res & g++ -o build\x64\xpmgr_x64 xpmgr.cpp build\x64\icon_x64.res -lole32 -luuid -loleaut32
cmake -S . -B build -G "MinGW Makefiles" -DCMAKE_CXX_COMPILER=C:/TDM-GCC-64/bin/g++.exe
cmake --build build --config Debug
```
Binary file modified icon.ico
Binary file not shown.
Loading