Merge branch 'dev/v2'

master
luzeadev 2021-12-06 21:42:10 +01:00
commit 9d98934d3a
6 changed files with 453 additions and 366 deletions

View File

@ -3,10 +3,9 @@ root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
[*.cmd]
end_of_line = crlf
[*.ps1]
indent_size = 4
indent_style = space

1
.gitattributes vendored
View File

@ -1,2 +1 @@
* text=auto
*.cmd text eol=crlf

View File

@ -4,23 +4,15 @@ Easy-to-use Windows HWID/KMS38 Activation Script.
## Usage
Run the script as an administrator. That's it. Your copy of Windows should be activated.
Run `winactivate.cmd` with administrative privileges, usually by right-clicking it and clicking on "Run as administrator".
If you explicitly want to use KMS38 activation, you can use the `/forcekms38` flag.
## Frequently Asked Questions
## Compatibility
### How can I activate Windows 10 Enterprise LTSC 2021 using HWID?
This script is compatible with build 10240 and above.
You can't. You'll first have to switch the edition to **Windows 10 IoT Enterprise LTSC 2021**. To do this with winactivate, run the following command:
## Troubleshooting
### Script doesn't detect Administrator privileges
Sometimes, it can happen that even though you have Administrator privileges, the script doesn't detect it. In this case, open a command prompt as administrator, navigate to the folder containing the script, and run the following command:
winactivate.cmd /skipadmincheck
This skips the detection of Administrator privileges.
winactivate.cmd -ProductKey QPM6N-7J2WJ-P88HH-P3YRH-YY74H
## Credits

BIN
slc.dll

Binary file not shown.

View File

@ -1,348 +1 @@
@echo off
set "working_directory=%~dp0"
pushd "%working_directory%"
set "force_kms38=0"
set "headless=0"
set "skip_admin_check=0"
echo ================================================================
echo winactivate - Easy-to-use Windows HWID/KMS38 Activation Script.
echo https://github.com/luzeadev/winactivate
echo ================================================================
echo.
goto parse_arguments
:parse_arguments
if "%~1" neq "" (
if "%~1" equ "/forcekms38" set "force_kms38=1"
if "%~1" equ "/headless" set "headless=1"
if "%~1" equ "/skipadmincheck" set "skip_admin_check=1"
shift
goto parse_arguments
)
goto main
:main
if "%skip_admin_check%" equ "0" (
reg query "HKU\S-1-5-19" >nul 2>&1 || (
echo This script requires Administrator privileges to run.
echo Either run it from an administrator command prompt, or right-click the script and choose "Run as administrator".
echo.
goto exit
)
)
for /f "tokens=6 delims=[]. " %%a in ('ver') do (
if "%%a" lss "10240" (
echo This script requires build 10240 or above to run.
echo.
goto exit
)
)
echo Installing product key...
set "product_key=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX"
set "product_key_is_retail=0"
for /f "skip=2 tokens=3 delims=." %%a in ('reg query HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions /v OSProductPfn') do (
if "%%a" equ "4" (
if "%force_kms38%" neq "0" (
set "product_key=NPPR9-FWDCX-D2C8J-H872K-2YT43"
) else (
set "product_key=XGVPP-NMH47-7TTHJ-W3FW7-8HV2C"
set "product_key_is_retail=1"
)
)
if "%%a" equ "7" (
for /f "tokens=6 delims=[]. " %%b in ('ver') do (
if "%%b" equ "14393" set "product_key=WC2BQ-8NRM3-FDDYY-2BFGV-KHKQY"
if "%%b" equ "17763" set "product_key=N69G4-B89J2-4G8F4-WWYCC-J464C"
if "%%b" geq "20348" set "product_key=VDYBN-27WPP-V4HQT-9VMD4-VMK7H"
)
)
if "%%a" equ "8" (
for /f "tokens=6 delims=[]. " %%b in ('ver') do (
if "%%b" equ "14393" set "product_key=CB7KF-BWN84-R7R2Y-793K2-8XDDG"
if "%%b" equ "17763" set "product_key=WMDGN-G9PQG-XVVXX-R3X43-63DFG"
if "%%b" geq "20348" set "product_key=WX4NM-KYWYW-QJJR4-XV3QB-6VM33"
)
)
if "%%a" equ "27" (
if "%force_kms38%" neq "0" (
set "product_key=DPH2V-TTNVB-4X9Q3-TJR4H-KHJW4"
) else (
set "product_key=3V6Q6-NQXCX-V8YXR-9QCYV-QPFCT"
set "product_key_is_retail=1"
)
)
if "%%a" equ "48" (
if "%force_kms38%" neq "0" (
set "product_key=W269N-WFGWX-YVC9B-4J6C9-T83GX"
) else (
set "product_key=VK7JG-NPHTM-C97JM-9MPGT-3V66T"
set "product_key_is_retail=1"
)
)
if "%%a" equ "49" (
if "%force_kms38%" neq "0" (
set "product_key=MH37W-N47XK-V7XM9-C7227-GCQG9"
) else (
set "product_key=2B87N-8KFHP-DKV6R-Y2C8J-PKCKT"
set "product_key_is_retail=1"
)
)
if "%%a" equ "50" (
for /f "tokens=6 delims=[]. " %%b in ('ver') do (
if "%%b" equ "14393" set "product_key=JCKRF-N37P4-C2D82-9YXRT-4M63B"
if "%%b" equ "17763" set "product_key=WVDHN-86M7X-466P6-VHXV7-YY726"
)
)
if "%%a" equ "98" (
if "%force_kms38%" neq "0" (
set "product_key=3KHY7-WNT83-DGQKR-F7HPR-844BM"
) else (
set "product_key=4CPRK-NM3K3-X6XXQ-RXX86-WXCHW"
set "product_key_is_retail=1"
)
)
if "%%a" equ "99" (
if "%force_kms38%" neq "0" (
set "product_key=PVMJN-6DFY6-9CCP6-7BKTT-D3WVR"
) else (
set "product_key=N2434-X9D7W-8PF6X-8DV9T-8TYMD"
set "product_key_is_retail=1"
)
)
if "%%a" equ "100" (
if "%force_kms38%" neq "0" (
set "product_key=7HNRX-D7KGG-3K4RQ-4WPJ4-YTDFH"
) else (
set "product_key=BT79Q-G7N6G-PGBYW-4YWX6-6F4BT"
set "product_key_is_retail=1"
)
)
if "%%a" equ "101" (
if "%force_kms38%" neq "0" (
set "product_key=TX9XD-98N7V-6WMQ6-BX7FG-H8Q99"
) else (
set "product_key=YTMG3-N6DKC-DKB77-7M9GH-8HVX7"
set "product_key_is_retail=1"
)
)
if "%%a" equ "121" (
if "%force_kms38%" neq "0" (
set "product_key=NW6C2-QMPVW-D7KKK-3GKT6-VCFB2"
) else (
set "product_key=YNMGQ-8RYV3-4PGQ3-C8XTP-7CFBY"
set "product_key_is_retail=1"
)
)
if "%%a" equ "122" (
if "%force_kms38%" neq "0" (
set "product_key=2WH4N-8QGBV-H22JP-CT43Q-MDWWJ"
) else (
set "product_key=84NGF-MHBT6-FXBX8-QWJK7-DRR8H"
set "product_key_is_retail=1"
)
)
if "%%a" equ "125" (
for /f "tokens=6 delims=[]. " %%b in ('ver') do (
if "%%b" gtr "17763" (
set "product_key=M7XTQ-FN8P6-TTKYV-9D4CC-J462D"
) else (
if "%force_kms38%" neq "0" (
if "%%b" equ "10240" set "product_key=WNMTR-4C88C-JK8YV-HQ7T2-76DF9"
if "%%b" equ "14393" set "product_key=DCPHK-NFMTC-H88MJ-PFHPY-QJ4BJ"
if "%%b" equ "17763" set "product_key=M7XTQ-FN8P6-TTKYV-9D4CC-J462D"
) else (
if "%%b" equ "10240" set "product_key=FWN7H-PF93Q-4GGP8-M8RF3-MDWWW"
if "%%b" equ "14393" set "product_key=NK96Y-D9CD8-W44CQ-R8YTK-DYJWX"
if "%%b" equ "17763" set "product_key=43TBQ-NH92J-XKTM7-KT3KK-P39PB"
set "product_key_is_retail=1"
)
)
)
)
if "%%a" equ "126" (
for /f "tokens=6 delims=[]. " %%b in ('ver') do (
if "%%b" gtr "17763" (
set "product_key=92NFX-8DJQP-P6BBQ-THF9C-7CG2H"
) else (
if "%force_kms38%" neq "0" (
if "%%b" equ "10240" set "product_key=2F77B-TNFGY-69QQF-B8YKP-D69TJ"
if "%%b" equ "14393" set "product_key=QFFDN-GRT3P-VKWWX-X7T3R-8B639"
if "%%b" equ "17763" set "product_key=92NFX-8DJQP-P6BBQ-THF9C-7CG2H"
) else (
if "%%b" equ "10240" set "product_key=8V8WN-3GXBH-2TCMG-XHRX3-9766K"
if "%%b" equ "14393" set "product_key=2DBW3-N2PJG-MVHW3-G7TDK-9HKR4"
if "%%b" equ "17763" set "product_key=M33WV-NHY3C-R7FPM-BQGPT-239PG"
set "product_key_is_retail=1"
)
)
)
)
if "%%a" equ "145" (
for /f "tokens=6 delims=[]. " %%b in ('ver') do (
if "%%b" equ "14393" set "product_key=2HXDN-KRXHB-GPYC7-YCKFJ-7FVDG"
if "%%b" equ "17763" set "product_key=6NMRW-2C8FM-D24W7-TQWMY-CWH2D"
if "%%b" geq "20348" set "product_key=QFND9-D3Y9C-J3KKY-6RPVP-2DPYV"
)
)
if "%%a" equ "146" (
for /f "tokens=6 delims=[]. " %%b in ('ver') do (
if "%%b" equ "14393" set "product_key=PTXN8-JFHJM-4WC78-MPCBR-9W4KR"
if "%%b" equ "17763" set "product_key=N2KJX-J94YW-TQVFB-DG9YT-724CC"
if "%%b" geq "20348" set "product_key=67KN8-4FYJW-2487Q-MQ2J7-4C4RG"
)
)
if "%%a" equ "161" (
if "%force_kms38%" neq "0" (
set "product_key=NRG8B-VKK3Q-CXVCJ-9G2XF-6Q84J"
) else (
set "product_key=DXG7C-N36C4-C4HTG-X4T3X-2YV77"
set "product_key_is_retail=1"
)
)
if "%%a" equ "162" (
if "%force_kms38%" neq "0" (
set "product_key=9FNHH-K3HBT-3W4TD-6383H-6XYWF"
) else (
set "product_key=WYPNQ-8C467-V2W6J-TX4WX-WT2RQ"
set "product_key_is_retail=1"
)
)
if "%%a" equ "164" (
if "%force_kms38%" neq "0" (
set "product_key=6TP4R-GNPTD-KYYHQ-7B7DP-J447Y"
) else (
set "product_key=8PTT6-RNW4C-6V7J2-C2D3X-MHBPB"
set "product_key_is_retail=1"
)
)
if "%%a" equ "165" (
if "%force_kms38%" neq "0" (
set "product_key=YVWGF-BXNMC-HTQYQ-CPQ99-66QFC"
) else (
set "product_key=GJTYN-HDMQY-FRR76-HVGC7-QPF8P"
set "product_key_is_retail=1"
)
)
if "%%a" equ "168" (
for /f "tokens=6 delims=[]. " %%b in ('ver') do (
if "%%b" equ "14393" set "product_key=VP34G-4NPPG-79JTQ-864T4-R3MQX"
if "%%b" equ "17763" set "product_key=FDNH6-VW9RW-BXPJ7-4XTYG-239TB"
if "%%b" geq "20348" set "product_key=6N379-GGTMK-23C6M-XVVTC-CKFRQ"
)
)
if "%%a" equ "171" (
set "product_key=YYVX9-NTFWV-6MDM3-9PT4T-4M68B"
)
if "%%a" equ "172" (
set "product_key=44RPN-FTY23-9VTTB-MP9BX-T84FV"
)
if "%%a" equ "175" (
if "%force_kms38%" neq "0" (
set "product_key=7NBT4-WGBQX-MP4H7-QXFF8-YP3KX"
) else (
set "product_key=NJCF7-PW8QT-3324D-688JX-2YV66"
set "product_key_is_retail=1"
)
)
if "%%a" equ "188" (
set "product_key=XQQYW-NFFMW-XJPBH-K8732-CKFFD"
set "product_key_is_retail=1"
)
if "%%a" equ "191" (
set "product_key=QPM6N-7J2WJ-P88HH-P3YRH-YY74H"
set "product_key_is_retail=1"
)
if "%%a" equ "203" (
set "product_key=KY7PN-VR6RX-83W6Y-6DDYQ-T6R4W"
set "product_key_is_retail=1"
)
)
if "%product_key%" equ "XXXXX-XXXXX-XXXXX-XXXXX-XXXXX" (
echo This edition or version of Windows is not supported by this script.
echo.
goto exit
)
cscript /nologo "%systemdrive%\Windows\System32\slmgr.vbs" /ipk "%product_key%"
if "%errorlevel%" neq "0" (
echo An error occurred while installing the product key.
echo.
goto exit
)
if exist "%working_directory%GenuineTicket.xml" del /f "%working_directory%GenuineTicket.xml"
if not exist "%working_directory%gatherosstate.exe" (
echo This script requires gatherosstate.exe to be in the same directory as this script.
echo Please re-download the script from https://github.com/luzeadev/winactivate/releases.
echo.
goto exit
)
if not exist "%working_directory%slc.dll" (
echo This script requires slc.dll to be in the same directory as this script.
echo Please re-download the script from https://github.com/luzeadev/winactivate/releases.
echo.
goto exit
)
echo Patching gatherosstate.exe...
rundll32 "%working_directory%slc.dll",PatchGatherosstate
if not exist "%working_directory%gatherosstatemodified.exe" (
echo An error occurred while patching gatherosstate.exe.
echo.
goto exit
)
echo Generating GenuineTicket.xml...
"%working_directory%gatherosstatemodified.exe"
if not exist "%working_directory%GenuineTicket.xml" (
echo GenuineTicket.xml generation failed. Please check your internet connection and try again.
echo.
goto exit
)
echo Applying GenuineTicket.xml...
copy /y /b "%working_directory%GenuineTicket.xml" "%systemdrive%\ProgramData\Microsoft\Windows\ClipSVC\GenuineTicket"
"%systemdrive%\Windows\System32\ClipUp.exe" -o -v
echo.
if "%errorlevel%" neq "0" (
echo ClipUp.exe failed to apply GenuineTicket.xml. Please check your internet connection and try again.
echo.
goto exit
)
if "%product_key_is_retail%" neq "0" (
echo Activating Windows...
cscript /nologo "%systemdrive%\Windows\System32\slmgr.vbs" /ato
)
for /f %%a in ('powershell -NoProfile -Command "(Get-CimInstance -Query 'SELECT LicenseStatus FROM SoftwareLicensingProduct WHERE ApplicationId=''55c92734-d682-4d71-983e-d6ec3f16059f'' AND LicenseStatus <> 0').LicenseStatus"') do (
if "%%a" neq "1" (
echo Activation failed. Please check your internet connection and try again.
echo.
goto exit
)
)
echo Activation complete.
echo.
goto exit
:exit
popd
if "%headless%" equ "0" (
pause
)
goto :eof
@powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0winactivate.ps1" %*

444
winactivate.ps1 Normal file
View File

@ -0,0 +1,444 @@
[CmdletBinding()]
param (
[Parameter()]
[switch]
$ForceKMS38,
[Parameter()]
[switch]
$Headless,
[Parameter()]
[string]
$ProductKey
)
function Activate-Windows {
process {
Invoke-CimMethod -MethodName 'Activate' -Query 'SELECT * FROM SoftwareLicensingProduct WHERE ApplicationID = ''55c92734-d682-4d71-983e-d6ec3f16059f'' AND PartialProductKey IS NOT NULL' -ErrorAction Stop | Out-Null
}
}
function Exit-Script {
[CmdletBinding()]
param (
[Parameter(Position = 0)]
[int]
$ExitCode = 0
)
process {
$TemporaryFiles = @(
'gatherosstatemodified.exe'
'GenuineTicket.xml'
)
foreach ($TemporaryFile in $TemporaryFiles) {
if (Test-Path -Path $TemporaryFile) {
Remove-Item -Path $TemporaryFile -Force
}
}
Pop-Location
if (!$Headless.IsPresent) {
Pause
}
Exit $ExitCode
}
}
function Get-BuildNumber {
process {
[int](Get-CimInstance -Query 'SELECT BuildNumber FROM Win32_OperatingSystem').BuildNumber
}
}
function Get-HWIDProductKey {
[CmdletBinding()]
param (
[Parameter(Mandatory = $true, Position = 0)]
[int]
$SkuId,
[Parameter(Mandatory = $true, Position = 1)]
[int]
$Build
)
process {
$ProductKey = $null
$ProductKeys = @{
4 = 'XGVPP-NMH47-7TTHJ-W3FW7-8HV2C'
27 = '3V6Q6-NQXCX-V8YXR-9QCYV-QPFCT'
48 = 'VK7JG-NPHTM-C97JM-9MPGT-3V66T'
49 = '2B87N-8KFHP-DKV6R-Y2C8J-PKCKT'
98 = '4CPRK-NM3K3-X6XXQ-RXX86-WXCHW'
99 = 'N2434-X9D7W-8PF6X-8DV9T-8TYMD'
100 = 'BT79Q-G7N6G-PGBYW-4YWX6-6F4BT'
101 = 'YTMG3-N6DKC-DKB77-7M9GH-8HVX7'
121 = 'YNMGQ-8RYV3-4PGQ3-C8XTP-7CFBY'
122 = '84NGF-MHBT6-FXBX8-QWJK7-DRR8H'
161 = 'DXG7C-N36C4-C4HTG-X4T3X-2YV77'
162 = 'WYPNQ-8C467-V2W6J-TX4WX-WT2RQ'
164 = '8PTT6-RNW4C-6V7J2-C2D3X-MHBPB'
165 = 'GJTYN-HDMQY-FRR76-HVGC7-QPF8P'
175 = 'NJCF7-PW8QT-3324D-688JX-2YV66'
188 = 'XQQYW-NFFMW-XJPBH-K8732-CKFFD'
191 = 'QPM6N-7J2WJ-P88HH-P3YRH-YY74H'
203 = 'KY7PN-VR6RX-83W6Y-6DDYQ-T6R4W'
}
if ($null -ne $ProductKeys[$SkuId]) {
$ProductKey = $ProductKeys[$SkuId]
}
switch ($Build) {
{$_ -eq 10240} {
$ProductKeys = @{
125 = 'FWN7H-PF93Q-4GGP8-M8RF3-MDWWW'
126 = '8V8WN-3GXBH-2TCMG-XHRX3-9766K'
}
}
{$_ -eq 14393} {
$ProductKeys = @{
125 = 'NK96Y-D9CD8-W44CQ-R8YTK-DYJWX'
126 = '2DBW3-N2PJG-MVHW3-G7TDK-9HKR4'
}
}
{$_ -eq 17763} {
$ProductKeys = @{
125 = '43TBQ-NH92J-XKTM7-KT3KK-P39PB'
126 = 'M33WV-NHY3C-R7FPM-BQGPT-239PG'
}
}
}
if ($null -ne $ProductKeys[$SkuId]) {
$ProductKey = $ProductKeys[$SkuId]
}
$ProductKey
}
}
function Get-KMS38ProductKey {
[CmdletBinding()]
param (
[Parameter(Mandatory = $true, Position = 0)]
[int]
$SkuId,
[Parameter(Mandatory = $true, Position = 1)]
[int]
$Build
)
process {
$ProductKey = $null
$ProductKeys = @{
4 = 'NPPR9-FWDCX-D2C8J-H872K-2YT43'
27 = 'DPH2V-TTNVB-4X9Q3-TJR4H-KHJW4'
48 = 'W269N-WFGWX-YVC9B-4J6C9-T83GX'
49 = 'MH37W-N47XK-V7XM9-C7227-GCQG9'
98 = '3KHY7-WNT83-DGQKR-F7HPR-844BM'
99 = 'PVMJN-6DFY6-9CCP6-7BKTT-D3WVR'
100 = '7HNRX-D7KGG-3K4RQ-4WPJ4-YTDFH'
101 = 'TX9XD-98N7V-6WMQ6-BX7FG-H8Q99'
121 = 'NW6C2-QMPVW-D7KKK-3GKT6-VCFB2'
122 = '2WH4N-8QGBV-H22JP-CT43Q-MDWWJ'
161 = 'NRG8B-VKK3Q-CXVCJ-9G2XF-6Q84J'
162 = '9FNHH-K3HBT-3W4TD-6383H-6XYWF'
164 = '6TP4R-GNPTD-KYYHQ-7B7DP-J447Y'
165 = 'YVWGF-BXNMC-HTQYQ-CPQ99-66QFC'
171 = 'YYVX9-NTFWV-6MDM3-9PT4T-4M68B'
172 = '44RPN-FTY23-9VTTB-MP9BX-T84FV'
175 = '7NBT4-WGBQX-MP4H7-QXFF8-YP3KX'
}
if ($null -ne $ProductKeys[$SkuId]) {
$ProductKey = $ProductKeys[$SkuId]
}
switch ($Build) {
{$_ -eq 10240} {
$ProductKeys = @{
125 = 'WNMTR-4C88C-JK8YV-HQ7T2-76DF9'
126 = '2F77B-TNFGY-69QQF-B8YKP-D69TJ'
}
}
{$_ -eq 14393} {
$ProductKeys = @{
7 = 'WC2BQ-8NRM3-FDDYY-2BFGV-KHKQY'
8 = 'CB7KF-BWN84-R7R2Y-793K2-8XDDG'
50 = 'JCKRF-N37P4-C2D82-9YXRT-4M63B'
125 = 'DCPHK-NFMTC-H88MJ-PFHPY-QJ4BJ'
126 = 'QFFDN-GRT3P-VKWWX-X7T3R-8B639'
145 = '2HXDN-KRXHB-GPYC7-YCKFJ-7FVDG'
146 = 'PTXN8-JFHJM-4WC78-MPCBR-9W4KR'
168 = 'VP34G-4NPPG-79JTQ-864T4-R3MQX'
}
}
{$_ -eq 17763} {
$ProductKeys = @{
7 = 'N69G4-B89J2-4G8F4-WWYCC-J464C'
8 = 'WMDGN-G9PQG-XVVXX-R3X43-63DFG'
50 = 'WVDHN-86M7X-466P6-VHXV7-YY726'
125 = 'M7XTQ-FN8P6-TTKYV-9D4CC-J462D'
126 = '92NFX-8DJQP-P6BBQ-THF9C-7CG2H'
145 = '6NMRW-2C8FM-D24W7-TQWMY-CWH2D'
146 = 'N2KJX-J94YW-TQVFB-DG9YT-724CC'
168 = 'FDNH6-VW9RW-BXPJ7-4XTYG-239TB'
}
}
{$_ -eq 19044} {
$ProductKeys = @{
125 = 'M7XTQ-FN8P6-TTKYV-9D4CC-J462D'
126 = '92NFX-8DJQP-P6BBQ-THF9C-7CG2H'
}
}
{$_ -ge 20348} {
$ProductKeys = @{
7 = 'VDYBN-27WPP-V4HQT-9VMD4-VMK7H'
8 = 'WX4NM-KYWYW-QJJR4-XV3QB-6VM33'
145 = 'QFND9-D3Y9C-J3KKY-6RPVP-2DPYV'
146 = '67KN8-4FYJW-2487Q-MQ2J7-4C4RG'
168 = '6N379-GGTMK-23C6M-XVVTC-CKFRQ'
}
}
}
if ($null -ne $ProductKeys[$SkuId]) {
$ProductKey = $ProductKeys[$SkuId]
}
$ProductKey
}
}
function Get-LicenseStatus {
process {
[int](Get-CimInstance -Query 'SELECT LicenseStatus FROM SoftwareLicensingProduct WHERE ApplicationID = ''55c92734-d682-4d71-983e-d6ec3f16059f'' AND PartialProductKey IS NOT NULL').LicenseStatus
}
}
function Get-SKU {
process {
[int](Get-CimInstance -Query 'SELECT OperatingSystemSKU FROM Win32_OperatingSystem').OperatingSystemSKU
}
}
function Install-ProductKey {
[CmdletBinding()]
param (
[Parameter(Mandatory = $true, Position = 0)]
[string]
$ProductKey
)
process {
Invoke-CimMethod -Arguments @{'ProductKey' = $ProductKey} -MethodName 'InstallProductKey' -Query 'SELECT * FROM SoftwareLicensingService' -ErrorAction Stop | Out-Null
}
}
function Set-KeyManagementServiceMachine {
process {
Invoke-CimMethod -Arguments @{'MachineName' = '127.0.0.1'} -MethodName 'SetKeyManagementServiceMachine' -Query 'SELECT * FROM SoftwareLicensingProduct WHERE ApplicationID = ''55c92734-d682-4d71-983e-d6ec3f16059f'' AND PartialProductKey IS NOT NULL' -ErrorAction Stop | Out-Null
}
}
function Test-AdministrativePrivileges {
process {
([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
}
}
function Test-KMS38ProductKey {
[CmdletBinding()]
param (
[Parameter(Mandatory = $true, Position = 0)]
[string]
$ProductKey
)
process {
$KMS38ProductKeys = @(
'2F77B-TNFGY-69QQF-B8YKP-D69TJ'
'2HXDN-KRXHB-GPYC7-YCKFJ-7FVDG'
'2WH4N-8QGBV-H22JP-CT43Q-MDWWJ'
'3KHY7-WNT83-DGQKR-F7HPR-844BM'
'44RPN-FTY23-9VTTB-MP9BX-T84FV'
'67KN8-4FYJW-2487Q-MQ2J7-4C4RG'
'6N379-GGTMK-23C6M-XVVTC-CKFRQ'
'6NMRW-2C8FM-D24W7-TQWMY-CWH2D'
'6TP4R-GNPTD-KYYHQ-7B7DP-J447Y'
'7HNRX-D7KGG-3K4RQ-4WPJ4-YTDFH'
'7NBT4-WGBQX-MP4H7-QXFF8-YP3KX'
'92NFX-8DJQP-P6BBQ-THF9C-7CG2H'
'92NFX-8DJQP-P6BBQ-THF9C-7CG2H'
'9FNHH-K3HBT-3W4TD-6383H-6XYWF'
'CB7KF-BWN84-R7R2Y-793K2-8XDDG'
'DCPHK-NFMTC-H88MJ-PFHPY-QJ4BJ'
'DPH2V-TTNVB-4X9Q3-TJR4H-KHJW4'
'FDNH6-VW9RW-BXPJ7-4XTYG-239TB'
'JCKRF-N37P4-C2D82-9YXRT-4M63B'
'M7XTQ-FN8P6-TTKYV-9D4CC-J462D'
'M7XTQ-FN8P6-TTKYV-9D4CC-J462D'
'MH37W-N47XK-V7XM9-C7227-GCQG9'
'N2KJX-J94YW-TQVFB-DG9YT-724CC'
'N69G4-B89J2-4G8F4-WWYCC-J464C'
'NPPR9-FWDCX-D2C8J-H872K-2YT43'
'NRG8B-VKK3Q-CXVCJ-9G2XF-6Q84J'
'NW6C2-QMPVW-D7KKK-3GKT6-VCFB2'
'PTXN8-JFHJM-4WC78-MPCBR-9W4KR'
'PVMJN-6DFY6-9CCP6-7BKTT-D3WVR'
'QFFDN-GRT3P-VKWWX-X7T3R-8B639'
'QFND9-D3Y9C-J3KKY-6RPVP-2DPYV'
'TX9XD-98N7V-6WMQ6-BX7FG-H8Q99'
'VDYBN-27WPP-V4HQT-9VMD4-VMK7H'
'VP34G-4NPPG-79JTQ-864T4-R3MQX'
'W269N-WFGWX-YVC9B-4J6C9-T83GX'
'WC2BQ-8NRM3-FDDYY-2BFGV-KHKQY'
'WMDGN-G9PQG-XVVXX-R3X43-63DFG'
'WNMTR-4C88C-JK8YV-HQ7T2-76DF9'
'WVDHN-86M7X-466P6-VHXV7-YY726'
'WX4NM-KYWYW-QJJR4-XV3QB-6VM33'
'YVWGF-BXNMC-HTQYQ-CPQ99-66QFC'
'YYVX9-NTFWV-6MDM3-9PT4T-4M68B'
)
if ($KMS38ProductKeys.Contains($ProductKey)) {
$true
}
$false
}
}
Push-Location -Path $PSScriptRoot
Write-Host @'
=============================================================
winactivate v2.0 - https://github.com/luzeadev/winactivate
=============================================================
'@
if (!(Test-AdministrativePrivileges)) {
Write-Error 'This script requires administrative privileges.'
Exit-Script -ExitCode 1
}
$Build = Get-BuildNumber
if ($Build -lt 10240) {
Write-Error 'This build of Windows isn''t supported by this script.'
Exit-Script -ExitCode 1
}
if ($ProductKey.Length -eq 0) {
$SkuId = Get-SKU
if ($ForceKMS38.IsPresent) {
$ProductKey = Get-KMS38ProductKey -SkuId $SkuId -Build $Build
} else {
$ProductKey = Get-HWIDProductKey -SkuId $SkuId -Build $Build
if ($ProductKey.Length -eq 0) {
$ProductKey = Get-KMS38ProductKey -SkuId $SkuId -Build $Build
}
}
}
if ($null -eq $ProductKey) {
Write-Error 'This edition of Windows isn''t supported by this script.'
Exit-Script -ExitCode 1
}
Write-Host "Installing product key $ProductKey..."
try {
Install-ProductKey -ProductKey $ProductKey
} catch {
Write-Error $_
Exit-Script -ExitCode 1
}
Write-Host 'Done.' -ForegroundColor Magenta
Write-Host
if (Test-KMS38ProductKey -ProductKey $ProductKey) {
Write-Host 'Setting key management service machine to 127.0.0.1...'
try {
Set-KeyManagementServiceMachine
} catch {
Write-Error $_
Exit-Script -ExitCode 1
}
Write-Host 'Done.' -ForegroundColor Magenta
Write-Host
}
Write-Host 'Patching gatherosstate.exe...'
$Process = Start-Process -FilePath 'rundll32.exe' -ArgumentList """$PSScriptRoot\slc.dll"",PatchGatherosstate" -PassThru -Wait
if ($Process.ExitCode -ne 0) {
Write-Error 'Failed to patch gatherosstate.exe.'
Exit-Script -ExitCode 1
}
Write-Host 'Done.' -ForegroundColor Magenta
Write-Host
Write-Host 'Generating GenuineTicket.xml...'
$Process = Start-Process -FilePath "$PSScriptRoot\gatherosstatemodified.exe" -PassThru -Wait
if ($Process.ExitCode -ne 0) {
Write-Error 'Failed to generate GenuineTicket.xml.'
Exit-Script -ExitCode 1
}
Write-Host 'Done.' -ForegroundColor Magenta
Write-Host
Write-Host 'Applying GenuineTicket.xml...'
Copy-Item -Path "$PSScriptRoot\GenuineTicket.xml" -Destination "$env:SystemDrive\ProgramData\Microsoft\Windows\ClipSVC\GenuineTicket" -Force
$Process = Start-Process -FilePath 'ClipUp.exe' -ArgumentList '-o' -PassThru -WindowStyle Hidden -Wait
if ($Process.ExitCode -ne 0) {
Write-Error 'Failed to apply GenuineTicket.xml.'
Exit-Script -ExitCode 1
}
Write-Host 'Done.' -ForegroundColor Magenta
Write-Host
Write-Host 'Activating Windows...'
if (!(Test-KMS38ProductKey -ProductKey $ProductKey)) {
try {
Activate-Windows
} catch {
Write-Error $_
Exit-Script -ExitCode 1
}
}
$LicenseStatus = Get-LicenseStatus
if ($LicenseStatus -ne 1) {
Write-Error 'Failed to activate Windows.'
Exit-Script -ExitCode 1
}
Write-Host 'Done.' -ForegroundColor Magenta
Write-Host
Exit-Script -ExitCode 0