mirror of
https://github.com/massgravel/Microsoft-Activation-Scripts.git
synced 2025-06-01 00:03:13 +00:00
Added HWID support for Windows 10 LTSC 2019
- Now Microsoft support HWID (Digital License) for Windows 10 LTSC 2019, added key for it in the script. - Some minor improvements.
This commit is contained in:
parent
118379f292
commit
d4b8f942ec
30 changed files with 32915 additions and 0 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,45 @@
|
|||
====================================================================================================
|
||||
File Details:
|
||||
====================================================================================================
|
||||
|
||||
fabb5a0fc1e6a372219711152291339af36ed0b5 *gatherosstate.exe Virus Total = 0/71
|
||||
ca3a51fdfc8749b8be85f7904b1c238a6dfba135 *slc.dll Virus Total = 0/68
|
||||
578364cb2319da7999acd8c015b4ce8da8f1b282 *ARM64_gatherosstate.exe Virus Total = 0/69
|
||||
5dbea3a580cf60391453a04a5c910a3ceca2b810 *ARM64_slc.dll Virus Total = 0/67
|
||||
48d928b1bec25a56fe896c430c2c034b7866aa7a *ClipUp.exe Virus Total = 0/68
|
||||
|
||||
Virus Total Report Date: 2020-01-21
|
||||
|
||||
- File Sources:
|
||||
|
||||
- ClipUp.exe (Original):
|
||||
From Windows server 2016 x64 ISO
|
||||
|
||||
- gatherosstate.exe (Original):
|
||||
From Windows 10 x86 14393 ADK
|
||||
|
||||
- ARM64_gatherosstate.exe (Original):
|
||||
From Windows 10 ARM64 18362 ISO
|
||||
|
||||
- ARM64_slc.dll and slc.dll:
|
||||
|
||||
Original slshim
|
||||
https://github.com/vyvojar/slshim
|
||||
|
||||
Improved by @mspaintmsi
|
||||
https://www.nsaneforums.com/topic/316668--/?do=findComment&comment=1497887
|
||||
https://github.com/massgravel/MASSGRAVE
|
||||
https://gitlab.com/massgrave/massgrave
|
||||
|
||||
Source code is included.
|
||||
slc.dll is based on Integrated_Patcher_2 method.
|
||||
It is currently in use in HWID/KMS38 Activation script.
|
||||
|
||||
____________________________________________________________________________________________________
|
||||
|
||||
You can safely delete the following files if it's not required for you.
|
||||
|
||||
ClipUp.exe - Required to KMS38 activate Server Cor and Acor editions.
|
||||
ARM64_gatherosstate.exe and ARM64_slc.dll - Required to activate ARM64 Arch Windows 10.
|
||||
|
||||
====================================================================================================
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,765 @@
|
|||
@setlocal DisableDelayedExpansion
|
||||
@echo off
|
||||
|
||||
|
||||
:: For unattended mode, run the script with /u parameter.
|
||||
|
||||
|
||||
|
||||
::=========================================================================================================
|
||||
: Credits:
|
||||
::=========================================================================================================
|
||||
::
|
||||
:: @mspaintmsi Original co-authors of HWID/KMS38 Activation without KMS or predecessor install/upgrade.
|
||||
:: and Created various methods for HWID/KMS38 Activation
|
||||
:: *Anonymous https://www.nsaneforums.com/topic/316668--/?do=findComment&comment=1497887
|
||||
:: https://github.com/massgravel/MASSGRAVE
|
||||
:: https://gitlab.com/massgrave/massgrave
|
||||
::
|
||||
:: @vyvojar Original slshim (slc.dll)
|
||||
:: https://github.com/vyvojar/slshim/releases
|
||||
::
|
||||
::---------------------------------------------------------------------------------------------------------
|
||||
::
|
||||
:: HWID/KMS38 methods Suggestions and improvements:-
|
||||
::
|
||||
:: @sponpa New ideas for the HWID/KM38 Generation
|
||||
:: https://www.nsaneforums.com/topic/316668--/page/21/?tab=comments#comment-1431257
|
||||
::
|
||||
:: @leitek8 Improvements for the slc.dll
|
||||
:: https://www.nsaneforums.com/topic/316668--/page/22/?tab=comments#comment-1438005
|
||||
::
|
||||
::---------------------------------------------------------------------------------------------------------
|
||||
::
|
||||
:: Kind Help:-
|
||||
::
|
||||
:: Thanks for having my back and answering all of my queries. (In no particular order)
|
||||
::
|
||||
:: @AveYo aka @BAU, @sponpa, @mspaintmsi @RPO, @leitek8, @mxman2k, @Yen, @abbodi1406
|
||||
::
|
||||
:: @BorrowedWifi for providing support in fixing English grammar errors in the Read Me.
|
||||
:: @Chibi ANUBIS and @smashed for testing scripts for ARM64 system.
|
||||
::
|
||||
:: Special thanks to @abbodi1406 for providing the great help.
|
||||
::
|
||||
::---------------------------------------------------------------------------------------------------------
|
||||
::
|
||||
:: This script is a part of 'Microsoft Activation Scripts' project.
|
||||
::
|
||||
:: Homepages-
|
||||
:: NsaneForums: (Login Required) https://www.nsaneforums.com/topic/316668-microsoft-activation-scripts/
|
||||
:: GitHub: https://github.com/massgravel/Microsoft-Activation-Scripts
|
||||
:: GitLab: https://gitlab.com/massgrave/microsoft-activation-scripts
|
||||
::
|
||||
:: Maintained by @WindowsAddict
|
||||
::
|
||||
:: P.S. I (@WindowsAddict) did not help in the development of HWID/KMS38 Activation in any way, I only
|
||||
:: manage batch script tool which is based on the above mentioned original co-authors activation methods.
|
||||
::
|
||||
::=========================================================================================================
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
cls
|
||||
title [HWID] Digital License Activation
|
||||
set Unattended=
|
||||
set _args=
|
||||
set _elev=
|
||||
set "_arg1=%~1"
|
||||
if not defined _arg1 goto :DL_NoProgArgs
|
||||
set "_args=%~1"
|
||||
set "_arg2=%~2"
|
||||
if defined _arg2 set "_args=%~1 %~2"
|
||||
for %%A in (%_args%) do (
|
||||
if /i "%%A"=="-el" set _elev=1
|
||||
if /i "%%A"=="/u" set Unattended=1)
|
||||
:DL_NoProgArgs
|
||||
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
|
||||
set "_psc=powershell"
|
||||
set "nul=1>nul 2>nul"
|
||||
set "Red="white" "DarkRed""
|
||||
set "Green="white" "DarkGreen""
|
||||
set "Magenta="white" "darkmagenta""
|
||||
set "Gray="white" "darkgray""
|
||||
set "Black="white" "Black""
|
||||
set "ELine=echo: &call :DL_color "==== ERROR ====" %Red% &echo:"
|
||||
set slp=SoftwareLicensingProduct
|
||||
set sls=SoftwareLicensingService
|
||||
set wApp=55c92734-d682-4d71-983e-d6ec3f16059f
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
for %%i in (powershell.exe) do if "%%~$path:i"=="" (
|
||||
echo: &echo ==== ERROR ==== &echo:
|
||||
echo Powershell is not installed in the system.
|
||||
echo Aborting...
|
||||
goto DL_Done
|
||||
)
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
if %winbuild% LSS 10240 (
|
||||
%ELine%
|
||||
echo Unsupported OS version Detected.
|
||||
echo Project is supported only for Windows 10.
|
||||
goto DL_Done
|
||||
)
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:: Elevate script as admin and pass arguments and preventing loop
|
||||
:: Thanks to @hearywarlot [ https://forums.mydigitallife.net/threads/.74332/ ] for the VBS method.
|
||||
:: Thanks to @abbodi1406 for the powershell method and solving special characters issue in file path name.
|
||||
|
||||
%nul% reg query HKU\S-1-5-19 && (
|
||||
goto :DL_Passed
|
||||
) || (
|
||||
if defined _elev goto :DL_E_Admin
|
||||
)
|
||||
|
||||
set "_batf=%~f0"
|
||||
set "_vbsf=%temp%\admin.vbs"
|
||||
set _PSarg="""%~f0""" -el
|
||||
if defined _args set _PSarg="""%~f0""" -el """%_args%"""
|
||||
|
||||
setlocal EnableDelayedExpansion
|
||||
|
||||
(
|
||||
echo Set strArg=WScript.Arguments.Named
|
||||
echo Set strRdlproc = CreateObject^("WScript.Shell"^).Exec^("rundll32 kernel32,Sleep"^)
|
||||
echo With GetObject^("winmgmts:\\.\root\CIMV2:Win32_Process.Handle='" ^& strRdlproc.ProcessId ^& "'"^)
|
||||
echo With GetObject^("winmgmts:\\.\root\CIMV2:Win32_Process.Handle='" ^& .ParentProcessId ^& "'"^)
|
||||
echo If InStr ^(.CommandLine, WScript.ScriptName^) ^<^> 0 Then
|
||||
echo strLine = Mid^(.CommandLine, InStr^(.CommandLine , "/File:"^) + Len^(strArg^("File"^)^) + 8^)
|
||||
echo End If
|
||||
echo End With
|
||||
echo .Terminate
|
||||
echo End With
|
||||
echo CreateObject^("Shell.Application"^).ShellExecute "cmd.exe", "/c " ^& chr^(34^) ^& chr^(34^) ^& strArg^("File"^) ^& chr^(34^) ^& strLine ^& chr^(34^), "", "runas", 1
|
||||
)>"!_vbsf!"
|
||||
|
||||
(%nul% cscript //NoLogo "!_vbsf!" /File:"!_batf!" -el "!_args!") && (
|
||||
del /f /q "!_vbsf!"
|
||||
exit /b
|
||||
) || (
|
||||
del /f /q "!_vbsf!"
|
||||
%nul% %_psc% "start cmd.exe -arg '/c \"!_PSarg:'=''!\"' -verb runas" && (
|
||||
exit /b
|
||||
) || (
|
||||
goto :DL_E_Admin
|
||||
)
|
||||
)
|
||||
exit /b
|
||||
|
||||
:DL_E_Admin
|
||||
%ELine%
|
||||
echo This script require administrator privileges.
|
||||
echo To do so, right click on this script and select 'Run as administrator'.
|
||||
goto DL_Done
|
||||
|
||||
:DL_Passed
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:: Fix for the special characters limitation in path name
|
||||
:: Written by @abbodi1406
|
||||
|
||||
set "_work=%~dp0"
|
||||
if "%_work:~-1%"=="\" set "_work=%_work:~0,-1%"
|
||||
|
||||
set "_batf=%~f0"
|
||||
set "_batp=%_batf:'=''%"
|
||||
|
||||
setlocal EnableDelayedExpansion
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
mode con: cols=102 lines=31
|
||||
|
||||
:: Check Windows OS name
|
||||
|
||||
set winos=
|
||||
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName 2^>nul') do if not errorlevel 1 set "winos=%%b"
|
||||
if not defined winos for /f "tokens=2* delims== " %%a in ('"wmic os get caption /value" 2^>nul') do if not errorlevel 1 set "winos=%%b"
|
||||
|
||||
call :DL_CheckPermAct
|
||||
if defined PermAct (
|
||||
|
||||
echo ___________________________________________________________________________________________
|
||||
echo:
|
||||
call :DL_color1 " " %Black% &call :DL_color "Checking: %winos% is Permanently Activated." %Green%
|
||||
call :DL_color1 " " %Black% &call :DL_color "Activation is not required." %Gray%
|
||||
echo ___________________________________________________________________________________________
|
||||
echo:
|
||||
if defined Unattended goto DL_Done
|
||||
|
||||
echo Press [1] or [2] button in Keyboard :
|
||||
echo ___________________________________________
|
||||
echo:
|
||||
choice /C:12 /N /M "> [1] Activate [2] Exit : "
|
||||
|
||||
if errorlevel 2 exit /b
|
||||
if errorlevel 1 Goto DL_Continue
|
||||
)
|
||||
|
||||
:DL_Continue
|
||||
cls
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
cd /d "!_work!"
|
||||
pushd "!_work!"
|
||||
|
||||
if not exist "!_work!\BIN\" (
|
||||
%ELine%
|
||||
echo 'BIN' Folder does not exist in current directory.
|
||||
echo It's supposed to have files required for the Activation.
|
||||
goto DL_Done
|
||||
)
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
echo %winos%| findstr /I Evaluation >nul && set Eval=1||set Eval=
|
||||
if defined Eval (
|
||||
%ELine%
|
||||
echo [%winos% ^| %winbuild%] HWID Activation is Not Supported.
|
||||
echo %winos%| findstr /I Server >nul && (
|
||||
echo Server Evaluation cannot be activated. Convert it to full Server OS.
|
||||
) || (
|
||||
echo Evaluation Editions cannot be activated. Install full Windows OS.
|
||||
)
|
||||
goto DL_Done
|
||||
)
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:: Check SKU value
|
||||
|
||||
set SKU=
|
||||
for /f "tokens=2 delims==" %%a IN ('"wmic Path Win32_OperatingSystem Get OperatingSystemSKU /format:LIST" 2^>nul') do if not errorlevel 1 (set osSKU=%%a)
|
||||
if not defined SKU for /f "tokens=3 delims=." %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions" /v OSProductPfn 2^>nul') do if not errorlevel 1 (set osSKU=%%a)
|
||||
|
||||
if "%osSKU%"=="" (
|
||||
%ELine%
|
||||
echo SKU value was not detected properly. Aborting...
|
||||
goto DL_Done
|
||||
)
|
||||
|
||||
:: Check Windows Edition with SKU value for better accuracy
|
||||
|
||||
set osedition=
|
||||
call :_CheckEdition %nul%
|
||||
|
||||
if "%osedition%"=="" (
|
||||
%ELine%
|
||||
echo [%winos% ^| %winbuild% ^| SKU:%osSKU%] HWID Activation is Not Supported.
|
||||
goto DL_Done
|
||||
)
|
||||
|
||||
:: Check Windows Architecture
|
||||
|
||||
set arch=
|
||||
reg Query "HKLM\Hardware\Description\System\CentralProcessor\0" | find /i "x86" > nul && set arch=x86|| set arch=x64
|
||||
wmic os get osarchitecture | find /i "ARM" > nul && set arch=ARM64|| echo %PROCESSOR_ARCHITECTURE% | find /i "ARM" > nul && set arch=ARM64
|
||||
|
||||
if "%arch%"=="ARM64" call :DL_check ARM64_gatherosstate.exe ARM64_slc.dll
|
||||
if not "%arch%"=="ARM64" call :DL_check gatherosstate.exe slc.dll
|
||||
if defined _miss goto DL_Done
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
cls
|
||||
set key=
|
||||
call :%osedition% %nul%
|
||||
|
||||
if "%key%"=="" (
|
||||
%ELine%
|
||||
echo [%winos% ^| %winbuild%] HWID Activation is Not Supported.
|
||||
goto DL_Done
|
||||
)
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
cls
|
||||
echo Checking OS Info [%winos% ^| %winbuild% ^| %arch%]
|
||||
|
||||
set "Chkint=Checking Internet Connection "
|
||||
set IntCon=
|
||||
ping -n 1 www.microsoft.com %nul% && (
|
||||
set IntCon=1
|
||||
echo %Chkint% [Connected]
|
||||
) || (
|
||||
call :DL_color "%Chkint% [Not connected] [Ping www.microsoft.com - Failed]" %Red%
|
||||
)
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
echo:
|
||||
set _1=ClipSVC
|
||||
set _2=wlidsvc
|
||||
set _3=sppsvc
|
||||
set _4=wuauserv
|
||||
|
||||
for %%# in (%_1% %_2% %_3% %_4%) do call :DL_ServiceCheck %%#
|
||||
|
||||
set "CLecho=Checking %_1% [Service Status -%Cl_state%] [Startup Type -%Cl_start_type%]"
|
||||
set "wlecho=Checking %_2% [Service Status -%wl_state%] [Startup Type -%wl_start_type%]"
|
||||
set "specho=Checking %_3% [Service Status -%sp_state%] [Startup Type -%sp_start_type%]"
|
||||
set "wuecho=Checking %_4% [Service Status -%wu_state%] [Startup Type -%wu_start_type%]"
|
||||
|
||||
if not "%Cl_start_type%"=="Demand" (call :DL_color "%CLecho%" %Red% & set Clst_e=1) else (echo %CLecho%)
|
||||
if not "%wl_start_type%"=="Demand" (call :DL_color "%wlecho%" %Red% & set wlst_e=1) else (echo %wlecho%)
|
||||
if not "%sp_start_type%"=="Delayed-Auto" (call :DL_color "%specho%" %Red% & set spst_e=1) else (echo %specho%)
|
||||
|
||||
if "%wu_start_type%"=="Disabled" (set "_C=%Red%") else (set "_C=%Gray%")
|
||||
if not "%wu_start_type%"=="Auto" (call :DL_color "%wuecho%" %_C% & set wust_e=1) else (echo %wuecho%)
|
||||
|
||||
echo:
|
||||
if defined Clst_e (sc config %_1% start= Demand %nul% && set Clst_s=%_1%-Demand || set Clst_u=%_1%-Demand )
|
||||
if defined wlst_e (sc config %_2% start= Demand %nul% && set wlst_s=%_2%-Demand || set wlst_u=%_2%-Demand )
|
||||
if defined spst_e (sc config %_3% start= Delayed-Auto %nul% && set spst_s=%_3%-Delayed-Auto || set spst_u=%_3%-Delayed-Auto )
|
||||
if defined wust_e (sc config %_4% start= Auto %nul% && set wust_s=%_4%-Auto || set wust_u=%_4%-Auto )
|
||||
|
||||
for %%# in (Clst_s,wlst_s,spst_s,wust_s) do if defined %%# set st_s=1
|
||||
if defined st_s (echo Changing services Startup Type to [ %Clst_s%%wlst_s%%spst_s%%wust_s%] [Successful])
|
||||
|
||||
for %%# in (Clst_u,wlst_u,spst_u,wust_u) do if defined %%# set st_u=1
|
||||
if defined st_u (call :DL_color "Error in changing Startup Type to [ %Clst_u%%wlst_u%%spst_u%%wust_u%]" %Red%)
|
||||
|
||||
if not "%Cl_state%"=="Running" (%_psc% start-service %_1% %nul% && set Cl_s=%_1% || set Cl_u=%_1% )
|
||||
if not "%wl_state%"=="Running" (%_psc% start-service %_2% %nul% && set wl_s=%_2% || set wl_u=%_2% )
|
||||
if not "%sp_state%"=="Running" (%_psc% start-service %_3% %nul% && set sp_s=%_3% || set sp_u=%_3% )
|
||||
if not "%wu_state%"=="Running" (%_psc% start-service %_4% %nul% && set wu_s=%_4% || set wu_u=%_4% )
|
||||
|
||||
for %%# in (Cl_s,wl_s,sp_s,wu_s) do if defined %%# set s_s=1
|
||||
if defined s_s (echo Starting services [ %Cl_s%%wl_s%%sp_s%%wu_s%] [Successful])
|
||||
|
||||
for %%# in (Cl_u,wl_u,sp_u,wu_u) do if defined %%# set s_u=1
|
||||
if defined s_u (call :DL_color "Error in starting services [ %Cl_u%%wl_u%%sp_u%%wu_u%]" %Red%)
|
||||
|
||||
if defined wust_u (
|
||||
call :DL_color "Most likely the Windows Update Service was blocked with a tool, identify and unblock it." %Magenta%
|
||||
)
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:: Thanks to @abbodi1406 for the WMI methods
|
||||
|
||||
echo:
|
||||
set _channel=
|
||||
set _Keyexist=
|
||||
set _partial=
|
||||
|
||||
for /f "tokens=2 delims==" %%# in ('wmic path %slp% where "ApplicationID='%wApp%' and PartialProductKey<>null" Get ProductKeyChannel /value 2^>nul') do set "_channel=%%#"
|
||||
for %%A in (MAK, OEM, Retail) do echo %_channel%| findstr /i %%A >nul && set _Keyexist=1
|
||||
|
||||
if defined _Keyexist (
|
||||
for /f "tokens=2 delims==" %%# in ('wmic path %slp% where "ApplicationID='%wApp%' and PartialProductKey<>null" Get PartialProductKey /value 2^>nul') do set "_partial=%%#"
|
||||
call echo Checking Installed Product Key [%_channel%] [Partial Key -%%_partial%%]
|
||||
)
|
||||
|
||||
if not defined _Keyexist (
|
||||
set "InsKey=Installing Generic Product Key "
|
||||
wmic path %sls% where __CLASS='%sls%' call InstallProductKey ProductKey="%key%" %nul% && (
|
||||
for /f "tokens=2 delims==" %%# in ('wmic path %slp% where "ApplicationID='%wApp%' and PartialProductKey<>null" Get ProductKeyChannel /value 2^>nul') do set "_channel=%%#"
|
||||
call echo %%InsKey%% [%key%] [%%_channel%%] [Successful]
|
||||
) || (
|
||||
call :DL_color "%%InsKey%% [%key%] [Unsuccessful]" %Red%
|
||||
)
|
||||
)
|
||||
|
||||
wmic path %sls% where __CLASS='%sls%' call RefreshLicenseStatus %nul%
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:: Files are copied to temp to generate ticket to avoid possible issues in case the path contains special character or non English names.
|
||||
|
||||
echo:
|
||||
set "temp_=%SystemRoot%\Temp\_Ticket_Work"
|
||||
if exist "%temp_%\" @RD /S /Q "%temp_%\" %nul%
|
||||
md "%temp_%\" %nul%
|
||||
|
||||
cd /d "!_work!\BIN\"
|
||||
|
||||
set ARM64_file=
|
||||
if "%arch%"=="ARM64" set ARM64_file=ARM64_
|
||||
|
||||
copy /y /b "%ARM64_file%gatherosstate.exe" "%temp_%\gatherosstate.exe" %nul%
|
||||
copy /y /b "%ARM64_file%slc.dll" "%temp_%\slc.dll" %nul%
|
||||
|
||||
set cfailed=
|
||||
if not exist "%temp_%\gatherosstate.exe" set cfailed=1
|
||||
if not exist "%temp_%\slc.dll" set cfailed=1
|
||||
|
||||
set "copyfiles=Copying Required Files to Temp "
|
||||
if defined cfailed (
|
||||
call :DL_color "%copyfiles% [%SystemRoot%\Temp\_Ticket_Work\] [Unsuccessful] Aborting..." %Red%
|
||||
goto :DL_Act_Cont
|
||||
) else (
|
||||
echo %copyfiles% [%SystemRoot%\Temp\_Ticket_Work\] [Successful]
|
||||
)
|
||||
|
||||
cd /d "%temp_%\"
|
||||
attrib -R -A -S -H *.*
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
set "GatherMod=Creating modified gatherosstate "
|
||||
|
||||
if not "%arch%"=="ARM64" (
|
||||
rundll32 "%temp_%\slc.dll",PatchGatherosstate %nul%
|
||||
if not exist "%temp_%\gatherosstatemodified.exe" (
|
||||
call :DL_color "%GatherMod% [Unsuccessful] Aborting" %Red%
|
||||
call :DL_color "Most likely Antivirus program blocked the process, disable it and-or create proper exclsuions." %Magenta%
|
||||
goto :DL_Act_Cont
|
||||
) else (
|
||||
echo %GatherMod% [Successful]
|
||||
)
|
||||
)
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
set _gather=
|
||||
if "%arch%"=="ARM64" (
|
||||
set _gather=gatherosstate.exe
|
||||
) else (
|
||||
set _gather=gatherosstatemodified.exe
|
||||
)
|
||||
|
||||
:: Multiple attempts to generate the ticket because in some cases, one attempt is not enough.
|
||||
|
||||
set "_noxml=if not exist "%temp_%\GenuineTicket.xml""
|
||||
|
||||
start /wait "" "%temp_%/%_gather%" %nul%
|
||||
%_noxml% timeout /t 3 %nul%
|
||||
%_noxml% call "%temp_%/%_gather%" %nul%
|
||||
%_noxml% timeout /t 3 %nul%
|
||||
%_noxml% "%temp_%/%_gather%" %nul%
|
||||
%_noxml% timeout /t 3 %nul%
|
||||
|
||||
set "GenTicket=Generating GenuineTicket.xml "
|
||||
%_noxml% (
|
||||
call :DL_color "%GenTicket% [Unsuccessful] Aborting..." %Red%
|
||||
goto :DL_Act_Cont
|
||||
) else (
|
||||
echo %GenTicket% [Successful]
|
||||
)
|
||||
|
||||
:: clipup -v -o -altto <Ticket path> method to apply ticket was not used to avoid the certain issues in case the username have spaces or non English names.
|
||||
|
||||
set "InsTicket=Installing GenuineTicket.xml "
|
||||
set "TDir=%ProgramData%\Microsoft\Windows\ClipSVC\GenuineTicket"
|
||||
if exist "%TDir%\*.xml" del /f /q "%TDir%\*.xml" %nul%
|
||||
copy /y /b "%temp_%\GenuineTicket.xml" "%TDir%\GenuineTicket.xml" %nul%
|
||||
|
||||
if not exist "%TDir%\GenuineTicket.xml" (
|
||||
call :DL_color "Failed to copy Ticket to [%ProgramData%\Microsoft\Windows\ClipSVC\GenuineTicket\] Aborting..." %Red%
|
||||
goto :DL_Act_Cont
|
||||
)
|
||||
|
||||
set "_xmlexist=if exist "%TDir%\GenuineTicket.xml""
|
||||
|
||||
%_psc% Restart-Service ClipSVC %nul%
|
||||
%_xmlexist% timeout /t 2 %nul%
|
||||
%_xmlexist% timeout /t 2 %nul%
|
||||
|
||||
%_xmlexist% (
|
||||
%_psc% stop-Service ClipSVC %nul%
|
||||
%_psc% start-Service ClipSVC %nul%
|
||||
%_xmlexist% timeout /t 2 %nul%
|
||||
%_xmlexist% timeout /t 2 %nul%
|
||||
)
|
||||
|
||||
set fallback_=
|
||||
%_xmlexist% (
|
||||
set fallback_=1
|
||||
%nul% clipup -v -o
|
||||
%_xmlexist% timeout /t 2 %nul%
|
||||
)
|
||||
|
||||
%_xmlexist% (
|
||||
call :DL_color "%InsTicket% [Unsuccessful] Aborting..." %Red%
|
||||
if exist "%TDir%\*.xml" del /f /q "%TDir%\*.xml" %nul%
|
||||
goto :DL_Act_Cont
|
||||
) else (
|
||||
if not defined fallback_ echo %InsTicket% [Successful]
|
||||
if defined fallback_ call :DL_color "%InsTicket% [Successful] [Fallback method: clipup -v -o]" %Red%
|
||||
)
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
echo:
|
||||
echo Activating...
|
||||
echo:
|
||||
|
||||
wmic path %slp% where "ApplicationID='%wApp%' and PartialProductKey<>null" call Activate %nul%
|
||||
call :DL_CheckPermAct
|
||||
if defined PermAct goto DL_Act_successful
|
||||
|
||||
call :DL_ReTry
|
||||
if not "%ErrCode%"=="" set "Error_Code_=[Error Code %ErrCode%]"
|
||||
call :DL_CheckPermAct
|
||||
|
||||
:DL_Act_successful
|
||||
|
||||
if defined PermAct (
|
||||
call :DL_color "%winos% is permanently activated." %Green%
|
||||
goto :DL_Act_Cont
|
||||
)
|
||||
|
||||
call :DL_color "Activation Failed %Error_Code_%" %Red%
|
||||
call :DL_color "Try the Troubleshoot Guide listed in the ReadMe." %Magenta%
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:DL_Act_Cont
|
||||
|
||||
echo:
|
||||
set "changing_wust_back=Changing wu Startup Type back to [%wu_start_type%]"
|
||||
if defined wust_s (
|
||||
sc config %_4% start= %wu_start_type% %nul% && echo %changing_wust_back% [Successful]
|
||||
) || (
|
||||
call :DL_color "%changing_wust_back% [Unsuccessful]" %Red%
|
||||
)
|
||||
|
||||
cd /d "!_work!\"
|
||||
if exist "%temp_%\" @RD /S /Q "%temp_%\" %nul%
|
||||
set "delFiles=Cleaning Temp Files "
|
||||
if exist "%temp_%\" (
|
||||
call :DL_color "%delFiles% [Unsuccessful]" %Red%
|
||||
) else (
|
||||
echo %delFiles% [Successful]
|
||||
)
|
||||
|
||||
goto DL_Done
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:: Echo all the missing files.
|
||||
:: Written by @abbodi1406 (MDL)
|
||||
|
||||
:DL_check
|
||||
|
||||
for %%# in (%1 %2) do (if not exist "!_work!\BIN\%%#" (if defined _miss (set "_miss=!_miss! %%#") else (set "_miss=%%#")))
|
||||
if defined _miss (
|
||||
%ELine%
|
||||
echo Following required file^(s^) is missing in 'BIN' folder. Aborting...
|
||||
echo:
|
||||
echo !_miss!
|
||||
)
|
||||
exit /b
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:DL_ServiceCheck
|
||||
|
||||
:: Detect Service status and start type
|
||||
:: Written by @RPO
|
||||
|
||||
for /f "tokens=1,3 delims=: " %%a in ('sc query %1') do (if /i %%a==state set "state=%%b")
|
||||
for /f "tokens=1-4 delims=: " %%a in ('sc qc %1') do (if /i %%a==start_type set "start_type=%%c %%d")
|
||||
|
||||
if /i "%state%"=="STOPPED" set state=Stopped
|
||||
if /i "%state%"=="RUNNING" set state=Running
|
||||
|
||||
if /i "%start_type%"=="auto_start (delayed)" set start_type=Delayed-Auto
|
||||
if /i "%start_type%"=="auto_start " set start_type=Auto
|
||||
if /i "%start_type%"=="demand_start " set start_type=Demand
|
||||
if /i "%start_type%"=="disabled " set start_type=Disabled
|
||||
|
||||
for %%i in (%*) do (
|
||||
if /i "%%i"=="%_4%" set "wu_start_type=%start_type%" & set "wu_state=%state%"
|
||||
if /i "%%i"=="%_3%" set "sp_start_type=%start_type%" & set "sp_state=%state%"
|
||||
if /i "%%i"=="%_1%" set "Cl_start_type=%start_type%" & set "Cl_state=%state%"
|
||||
if /i "%%i"=="%_2%" set "wl_start_type=%start_type%" & set "wl_state=%state%"
|
||||
)
|
||||
exit /b
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:DL_CheckPermAct
|
||||
|
||||
:: Check Windows Permanent Activation status
|
||||
:: Written by @abbodi1406
|
||||
|
||||
wmic path %slp% where (LicenseStatus='1' and GracePeriodRemaining='0' and PartialProductKey is not NULL) get Name 2>nul | findstr /i "Windows" 1>nul && set PermAct=1||set PermAct=
|
||||
exit /b
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:DL_ReTry
|
||||
|
||||
if defined IntCon if not defined wust_u if not defined wu_u call :DL_ReTry_2
|
||||
|
||||
:: Detect Error Code in the Activation
|
||||
:: Written by @abbodi1406
|
||||
|
||||
wmic path %slp% where "ApplicationID='%wApp%' and PartialProductKey<>null" call Activate %nul%
|
||||
set errorcode=%errorlevel%
|
||||
cmd /c exit /b %errorcode%
|
||||
if %errorcode% NEQ 0 set "ErrCode=0x%=ExitCode%"
|
||||
exit /b
|
||||
|
||||
:DL_ReTry_2
|
||||
|
||||
set app=
|
||||
%_psc% Restart-Service sppsvc %nul%
|
||||
|
||||
:: Specific rearm - reset the licensing status of the Windows SKU and app, without the need to restart the system.
|
||||
:: wmic method by @abbodi1406
|
||||
|
||||
for /f "tokens=2 delims==" %%G in ('"wmic path %slp% where (ApplicationID='%wApp%' AND ProductKeyID like '%%-%%') get ID /value" 2^>nul') do (set app=%%G)
|
||||
wmic path %sls% where __CLASS='%sls%' call ReArmApp ApplicationId="%wApp%" %nul%
|
||||
wmic path %slp% where ID='%app%' call ReArmsku %nul%
|
||||
|
||||
wmic path %sls% where __CLASS='%sls%' call RefreshLicenseStatus %nul%
|
||||
cscript /nologo %windir%\system32\slmgr.vbs -ato %nul%
|
||||
exit /b
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:DL_color
|
||||
|
||||
%_psc% write-host '%1' -fore '%2' -back '%3'
|
||||
exit /b
|
||||
|
||||
:DL_color1
|
||||
|
||||
%_psc% write-host '%1' -fore '%2' -back '%3' -NoNewline
|
||||
exit /b
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:DL_Done
|
||||
|
||||
echo:
|
||||
if defined Unattended (
|
||||
echo Exiting in 3 seconds...
|
||||
if %winbuild% LSS 7600 (ping -n 3 127.0.0.1 > nul) else (timeout /t 3)
|
||||
:: set a value to use in certain conditions of setupcomplete.cmd file.
|
||||
if defined key if not defined PermAct (endlocal & endlocal & set HWIDAct=1)
|
||||
exit /b
|
||||
)
|
||||
echo Press any key to exit...
|
||||
pause >nul
|
||||
exit /b
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:: Check Windows Edition with SKU value for better accuracy
|
||||
|
||||
:_CheckEdition
|
||||
|
||||
for %%# in (
|
||||
4-Enterprise
|
||||
27-EnterpriseN
|
||||
48-Professional
|
||||
49-ProfessionalN
|
||||
98-CoreN
|
||||
99-CoreCountrySpecific
|
||||
100-CoreSingleLanguage
|
||||
101-Core
|
||||
121-Education
|
||||
122-EducationN
|
||||
125-EnterpriseS
|
||||
126-EnterpriseSN
|
||||
161-ProfessionalWorkstation
|
||||
162-ProfessionalWorkstationN
|
||||
164-ProfessionalEducation
|
||||
165-ProfessionalEducationN
|
||||
175-ServerRdsh
|
||||
188-IoTEnterprise
|
||||
) do for /f "tokens=1,2 delims=-" %%A in ("%%#") do (
|
||||
if %osSKU%==%%A set "osedition=%%B"
|
||||
)
|
||||
exit /b
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:: Retail_OEM Key List
|
||||
|
||||
:Core
|
||||
set "key=YTMG3-N6DKC-DKB77-7M9GH-8HVX7"
|
||||
exit /b
|
||||
|
||||
:CoreCountrySpecific
|
||||
set "key=N2434-X9D7W-8PF6X-8DV9T-8TYMD"
|
||||
exit /b
|
||||
|
||||
:CoreN
|
||||
set "key=4CPRK-NM3K3-X6XXQ-RXX86-WXCHW"
|
||||
exit /b
|
||||
|
||||
:CoreSingleLanguage
|
||||
set "key=BT79Q-G7N6G-PGBYW-4YWX6-6F4BT"
|
||||
exit /b
|
||||
|
||||
:Education
|
||||
set "key=YNMGQ-8RYV3-4PGQ3-C8XTP-7CFBY"
|
||||
exit /b
|
||||
|
||||
:EducationN
|
||||
set "key=84NGF-MHBT6-FXBX8-QWJK7-DRR8H"
|
||||
exit /b
|
||||
|
||||
:Enterprise
|
||||
set "key=XGVPP-NMH47-7TTHJ-W3FW7-8HV2C"
|
||||
exit /b
|
||||
|
||||
:EnterpriseN
|
||||
set "key=3V6Q6-NQXCX-V8YXR-9QCYV-QPFCT"
|
||||
exit /b
|
||||
|
||||
:EnterpriseS
|
||||
if "%winbuild%" EQU "10240" set "key=FWN7H-PF93Q-4GGP8-M8RF3-MDWWW"
|
||||
if "%winbuild%" EQU "14393" set "key=NK96Y-D9CD8-W44CQ-R8YTK-DYJWX"
|
||||
if "%winbuild%" EQU "17763" set "key=43TBQ-NH92J-XKTM7-KT3KK-P39PB"
|
||||
exit /b
|
||||
|
||||
:EnterpriseSN
|
||||
if "%winbuild%" EQU "10240" set "key=8V8WN-3GXBH-2TCMG-XHRX3-9766K"
|
||||
if "%winbuild%" EQU "14393" set "key=2DBW3-N2PJG-MVHW3-G7TDK-9HKR4"
|
||||
if "%winbuild%" EQU "17763" set "key=M33WV-NHY3C-R7FPM-BQGPT-239PG"
|
||||
exit /b
|
||||
|
||||
:Professional
|
||||
set "key=VK7JG-NPHTM-C97JM-9MPGT-3V66T"
|
||||
exit /b
|
||||
|
||||
:ProfessionalEducation
|
||||
set "key=8PTT6-RNW4C-6V7J2-C2D3X-MHBPB"
|
||||
exit /b
|
||||
|
||||
:ProfessionalEducationN
|
||||
set "key=GJTYN-HDMQY-FRR76-HVGC7-QPF8P"
|
||||
exit /b
|
||||
|
||||
:ProfessionalN
|
||||
set "key=2B87N-8KFHP-DKV6R-Y2C8J-PKCKT"
|
||||
exit /b
|
||||
|
||||
:ProfessionalWorkstation
|
||||
set "key=DXG7C-N36C4-C4HTG-X4T3X-2YV77"
|
||||
exit /b
|
||||
|
||||
:ProfessionalWorkstationN
|
||||
set "key=WYPNQ-8C467-V2W6J-TX4WX-WT2RQ"
|
||||
exit /b
|
||||
|
||||
:ServerRdsh
|
||||
set "key=NJCF7-PW8QT-3324D-688JX-2YV66"
|
||||
exit /b
|
||||
|
||||
:IoTEnterprise
|
||||
set "key=XQQYW-NFFMW-XJPBH-K8732-CKFFD"
|
||||
exit /b
|
||||
|
||||
::========================================================================================================================================
|
|
@ -0,0 +1,885 @@
|
|||
@setlocal DisableDelayedExpansion
|
||||
@echo off
|
||||
|
||||
|
||||
:: For unattended mode, run the script with /u parameter.
|
||||
|
||||
|
||||
|
||||
::=========================================================================================================
|
||||
: Credits:
|
||||
::=========================================================================================================
|
||||
::
|
||||
:: @mspaintmsi Original co-authors of HWID/KMS38 Activation without KMS or predecessor install/upgrade.
|
||||
:: and Created various methods for HWID/KMS38 Activation
|
||||
:: *Anonymous https://www.nsaneforums.com/topic/316668--/?do=findComment&comment=1497887
|
||||
:: https://github.com/massgravel/MASSGRAVE
|
||||
:: https://gitlab.com/massgrave/massgrave
|
||||
::
|
||||
:: @vyvojar Original slshim (slc.dll)
|
||||
:: https://github.com/vyvojar/slshim/releases
|
||||
::
|
||||
::---------------------------------------------------------------------------------------------------------
|
||||
::
|
||||
:: HWID/KMS38 methods Suggestions and improvements:-
|
||||
::
|
||||
:: @sponpa New ideas for the HWID/KM38 Generation
|
||||
:: https://www.nsaneforums.com/topic/316668--/page/21/?tab=comments#comment-1431257
|
||||
::
|
||||
:: @leitek8 Improvements for the slc.dll
|
||||
:: https://www.nsaneforums.com/topic/316668--/page/22/?tab=comments#comment-1438005
|
||||
::
|
||||
::---------------------------------------------------------------------------------------------------------
|
||||
::
|
||||
:: Kind Help:-
|
||||
::
|
||||
:: Thanks for having my back and answering all of my queries. (In no particular order)
|
||||
::
|
||||
:: @AveYo aka @BAU, @sponpa, @mspaintmsi @RPO, @leitek8, @mxman2k, @Yen, @abbodi1406
|
||||
::
|
||||
:: @BorrowedWifi for providing support in fixing English grammar errors in the Read Me.
|
||||
:: @Chibi ANUBIS and @smashed for testing scripts for ARM64 system.
|
||||
::
|
||||
:: Special thanks to @abbodi1406 for providing the great help.
|
||||
::
|
||||
::---------------------------------------------------------------------------------------------------------
|
||||
::
|
||||
:: This script is a part of 'Microsoft Activation Scripts' project.
|
||||
::
|
||||
:: Homepages-
|
||||
:: NsaneForums: (Login Required) https://www.nsaneforums.com/topic/316668-microsoft-activation-scripts/
|
||||
:: GitHub: https://github.com/massgravel/Microsoft-Activation-Scripts
|
||||
:: GitLab: https://gitlab.com/massgrave/microsoft-activation-scripts
|
||||
::
|
||||
:: Maintained by @WindowsAddict
|
||||
::
|
||||
:: P.S. I (@WindowsAddict) did not help in the development of HWID/KMS38 Activation in any way, I only
|
||||
:: manage batch script tool which is based on the above mentioned original co-authors activation methods.
|
||||
::
|
||||
::=========================================================================================================
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
cls
|
||||
title KMS38 Activation
|
||||
set Unattended=
|
||||
set _args=
|
||||
set _elev=
|
||||
set "_arg1=%~1"
|
||||
if not defined _arg1 goto :K38_NoProgArgs
|
||||
set "_args=%~1"
|
||||
set "_arg2=%~2"
|
||||
if defined _arg2 set "_args=%~1 %~2"
|
||||
for %%A in (%_args%) do (
|
||||
if /i "%%A"=="-el" set _elev=1
|
||||
if /i "%%A"=="/u" set Unattended=1)
|
||||
:K38_NoProgArgs
|
||||
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
|
||||
set "_psc=powershell"
|
||||
set "nul=1>nul 2>nul"
|
||||
set "Red="white" "DarkRed""
|
||||
set "Green="white" "DarkGreen""
|
||||
set "Magenta="white" "darkmagenta""
|
||||
set "Gray="white" "darkgray""
|
||||
set "Black="white" "Black""
|
||||
set "ELine=echo: &call :K38_color "==== ERROR ====" %Red% &echo:"
|
||||
set slp=SoftwareLicensingProduct
|
||||
set sls=SoftwareLicensingService
|
||||
set wApp=55c92734-d682-4d71-983e-d6ec3f16059f
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
for %%i in (powershell.exe) do if "%%~$path:i"=="" (
|
||||
echo: &echo ==== ERROR ==== &echo:
|
||||
echo Powershell is not installed in the system.
|
||||
echo Aborting...
|
||||
goto K38_Done
|
||||
)
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
if %winbuild% LSS 14393 (
|
||||
%ELine%
|
||||
echo Unsupported OS version Detected.
|
||||
echo Project is supported only for Windows 10 / Server - 1607 [14393] and later builds.
|
||||
goto K38_Done
|
||||
)
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:: Elevate script as admin and pass arguments and preventing loop
|
||||
:: Thanks to @hearywarlot [ https://forums.mydigitallife.net/threads/.74332/ ] for the VBS method.
|
||||
:: Thanks to @abbodi1406 for the powershell method and solving special characters issue in file path name.
|
||||
|
||||
%nul% reg query HKU\S-1-5-19 && (
|
||||
goto :K38_Passed
|
||||
) || (
|
||||
if defined _elev goto :K38_E_Admin
|
||||
)
|
||||
|
||||
set "_batf=%~f0"
|
||||
set "_vbsf=%temp%\admin.vbs"
|
||||
set _PSarg="""%~f0""" -el
|
||||
if defined _args set _PSarg="""%~f0""" -el """%_args%"""
|
||||
|
||||
setlocal EnableDelayedExpansion
|
||||
|
||||
(
|
||||
echo Set strArg=WScript.Arguments.Named
|
||||
echo Set strRdlproc = CreateObject^("WScript.Shell"^).Exec^("rundll32 kernel32,Sleep"^)
|
||||
echo With GetObject^("winmgmts:\\.\root\CIMV2:Win32_Process.Handle='" ^& strRdlproc.ProcessId ^& "'"^)
|
||||
echo With GetObject^("winmgmts:\\.\root\CIMV2:Win32_Process.Handle='" ^& .ParentProcessId ^& "'"^)
|
||||
echo If InStr ^(.CommandLine, WScript.ScriptName^) ^<^> 0 Then
|
||||
echo strLine = Mid^(.CommandLine, InStr^(.CommandLine , "/File:"^) + Len^(strArg^("File"^)^) + 8^)
|
||||
echo End If
|
||||
echo End With
|
||||
echo .Terminate
|
||||
echo End With
|
||||
echo CreateObject^("Shell.Application"^).ShellExecute "cmd.exe", "/c " ^& chr^(34^) ^& chr^(34^) ^& strArg^("File"^) ^& chr^(34^) ^& strLine ^& chr^(34^), "", "runas", 1
|
||||
)>"!_vbsf!"
|
||||
|
||||
(%nul% cscript //NoLogo "!_vbsf!" /File:"!_batf!" -el "!_args!") && (
|
||||
del /f /q "!_vbsf!"
|
||||
exit /b
|
||||
) || (
|
||||
del /f /q "!_vbsf!"
|
||||
%nul% %_psc% "start cmd.exe -arg '/c \"!_PSarg:'=''!\"' -verb runas" && (
|
||||
exit /b
|
||||
) || (
|
||||
goto :K38_E_Admin
|
||||
)
|
||||
)
|
||||
exit /b
|
||||
|
||||
:K38_E_Admin
|
||||
%ELine%
|
||||
echo This script require administrator privileges.
|
||||
echo To do so, right click on this script and select 'Run as administrator'.
|
||||
goto K38_Done
|
||||
|
||||
:K38_Passed
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:: Fix for the special characters limitation in path name
|
||||
:: Written by @abbodi1406
|
||||
|
||||
set "_work=%~dp0"
|
||||
if "%_work:~-1%"=="\" set "_work=%_work:~0,-1%"
|
||||
|
||||
set "_batf=%~f0"
|
||||
set "_batp=%_batf:'=''%"
|
||||
|
||||
setlocal EnableDelayedExpansion
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
mode con: cols=102 lines=30
|
||||
|
||||
:: Check Windows OS name
|
||||
|
||||
set winos=
|
||||
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName 2^>nul') do if not errorlevel 1 set "winos=%%b"
|
||||
if not defined winos for /f "tokens=2* delims== " %%a in ('"wmic os get caption /value" 2^>nul') do if not errorlevel 1 set "winos=%%b"
|
||||
|
||||
call :K38_CheckPermAct
|
||||
if defined PermAct (
|
||||
|
||||
echo ___________________________________________________________________________________________
|
||||
echo:
|
||||
call :K38_color1 " " %Black% &call :K38_color "Checking: %winos% is Permanently Activated." %Green%
|
||||
call :K38_color1 " " %Black% &call :K38_color "Activation is not required." %Gray%
|
||||
echo ___________________________________________________________________________________________
|
||||
echo:
|
||||
if defined Unattended goto K38_Done
|
||||
|
||||
echo Press [1] or [2] button in Keyboard :
|
||||
echo ___________________________________________
|
||||
echo:
|
||||
choice /C:12 /N /M "> [1] Activate [2] Exit : "
|
||||
|
||||
if errorlevel 2 exit /b
|
||||
if errorlevel 1 Goto K38_Continue
|
||||
)
|
||||
|
||||
:K38_Continue
|
||||
cls
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
cd /d "!_work!"
|
||||
pushd "!_work!"
|
||||
|
||||
if not exist "!_work!\BIN\" (
|
||||
%ELine%
|
||||
echo 'BIN' Folder does not exist in current directory.
|
||||
echo It's supposed to have files required for the Activation.
|
||||
goto K38_Done
|
||||
)
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
echo %winos%| findstr /I Evaluation >nul && set Eval=1||set Eval=
|
||||
if defined Eval (
|
||||
%ELine%
|
||||
echo [%winos% ^| %winbuild%] KMS38 Activation is Not Supported.
|
||||
echo %winos%| findstr /I Server >nul && (
|
||||
echo Server Evaluation cannot be activated. Convert it to full Server OS.
|
||||
) || (
|
||||
echo Evaluation Editions cannot be activated. Install full Windows OS.
|
||||
)
|
||||
goto K38_Done
|
||||
)
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:: Check SKU value
|
||||
|
||||
set SKU=
|
||||
for /f "tokens=2 delims==" %%a IN ('"wmic Path Win32_OperatingSystem Get OperatingSystemSKU /format:LIST" 2^>nul') do if not errorlevel 1 (set osSKU=%%a)
|
||||
if not defined SKU for /f "tokens=3 delims=." %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions" /v OSProductPfn 2^>nul') do if not errorlevel 1 (set osSKU=%%a)
|
||||
|
||||
if "%osSKU%"=="" (
|
||||
%ELine%
|
||||
echo SKU value was not detected properly. Aborting...
|
||||
goto K38_Done
|
||||
)
|
||||
|
||||
:: Check Windows Edition with SKU value for better accuracy
|
||||
|
||||
set osedition=
|
||||
call :K38_CheckEdition %nul%
|
||||
|
||||
if "%osedition%"=="" (
|
||||
%ELine%
|
||||
echo [%winos% ^| %winbuild% ^| SKU:%osSKU%] KMS38 Activation is Not Supported.
|
||||
goto K38_Done
|
||||
)
|
||||
|
||||
:: Check Activation ID
|
||||
|
||||
set app=
|
||||
for /f "tokens=2 delims==" %%a in ('"wmic path %slp% where (ApplicationID='%wApp%' and LicenseFamily='%osedition%' and Description like '%%KMSCLIENT%%') get ID /VALUE" 2^>nul') do set "app=%%a"
|
||||
|
||||
:: Check Windows Architecture
|
||||
|
||||
set arch=
|
||||
reg Query "HKLM\Hardware\Description\System\CentralProcessor\0" | find /i "x86" > nul && set arch=x86|| set arch=x64
|
||||
wmic os get osarchitecture | find /i "ARM" > nul && set arch=ARM64|| echo %PROCESSOR_ARCHITECTURE% | find /i "ARM" > nul && set arch=ARM64
|
||||
|
||||
if "%arch%"=="ARM64" call :K38_check ARM64_gatherosstate.exe ARM64_slc.dll
|
||||
if not "%arch%"=="ARM64" call :K38_check gatherosstate.exe slc.dll
|
||||
if defined _miss goto K38_Done
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
cls
|
||||
if "%app%"=="" (
|
||||
%ELine%
|
||||
echo [%winos% ^| %winbuild%] KMS38 Activation is Not Supported.
|
||||
goto K38_Done
|
||||
)
|
||||
|
||||
set key=
|
||||
call :%app% %nul%
|
||||
|
||||
if "%key%"=="" (
|
||||
%ELine%
|
||||
echo [%winos% ^| %winbuild% ^| %app%] KMS38 Activation is Not Supported.
|
||||
goto K38_Done
|
||||
)
|
||||
|
||||
:: clipup.exe does not exist in server cor and acor editions.
|
||||
|
||||
set A_Cor=
|
||||
echo %osedition%| findstr /I /B Server >nul && if not exist "%systemroot%\System32\clipup.exe" set A_Cor=1
|
||||
|
||||
if defined A_Cor (
|
||||
call :K38_check clipup.exe
|
||||
if defined _miss goto K38_Done
|
||||
)
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
cls
|
||||
echo Checking OS Info [%winos% ^| %winbuild% ^| %arch%]
|
||||
|
||||
echo:
|
||||
set _1=ClipSVC
|
||||
set _3=sppsvc
|
||||
|
||||
for %%# in (%_1% %_3%) do call :K38_ServiceCheck %%#
|
||||
|
||||
set "CLecho=Checking %_1% [Service Status -%Cl_state%] [Startup Type -%Cl_start_type%]"
|
||||
set "specho=Checking %_3% [Service Status -%sp_state%] [Startup Type -%sp_start_type%]"
|
||||
|
||||
if not "%Cl_start_type%"=="Demand" (call :K38_color "%CLecho%" %Red% & set Clst_e=1) else (echo %CLecho%)
|
||||
if not "%sp_start_type%"=="Delayed-Auto" (call :K38_color "%specho%" %Red% & set spst_e=1) else (echo %specho%)
|
||||
|
||||
echo:
|
||||
if defined Clst_e (sc config %_1% start= Demand %nul% && set Clst_s=%_1%-Demand || set Clst_u=%_1%-Demand )
|
||||
if defined spst_e (sc config %_3% start= Delayed-Auto %nul% && set spst_s=%_3%-Delayed-Auto || set spst_u=%_3%-Delayed-Auto )
|
||||
|
||||
for %%# in (Clst_s,spst_s) do if defined %%# set st_s=1
|
||||
if defined st_s (echo Changing services Startup Type to [ %Clst_s%%spst_s%] [Successful])
|
||||
|
||||
for %%# in (Clst_u,spst_u) do if defined %%# set st_u=1
|
||||
if defined st_u (call :K38_color "Error in changing Startup Type to [ %Clst_u%%spst_u%]" %Red%)
|
||||
|
||||
if not "%Cl_state%"=="Running" (%_psc% start-service %_1% %nul% && set Cl_s=%_1% || set Cl_u=%_1% )
|
||||
if not "%sp_state%"=="Running" (%_psc% start-service %_3% %nul% && set sp_s=%_3% || set sp_u=%_3% )
|
||||
|
||||
for %%# in (Cl_s,sp_s) do if defined %%# set s_s=1
|
||||
if defined s_s (echo Starting services [ %Cl_s%%sp_s%] [Successful])
|
||||
|
||||
for %%# in (Cl_u,sp_u) do if defined %%# set s_u=1
|
||||
if defined s_u (call :K38_color "Error in starting services [ %Cl_u%%sp_u%]" %Red%)
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:: Thanks to @abbodi1406 for the WMI methods
|
||||
|
||||
echo:
|
||||
set _channel=
|
||||
set _Keyexist=
|
||||
set _partial=
|
||||
|
||||
wmic path %slp% where "ApplicationID='%wApp%' and PartialProductKey<>null" Get ProductKeyChannel 2>nul | findstr /i GVLK 1>nul && (set _Keyexist=1)
|
||||
|
||||
if defined _Keyexist (
|
||||
for /f "tokens=2 delims==" %%# in ('wmic path %slp% where "ApplicationID='%wApp%' and PartialProductKey<>null" Get PartialProductKey /value 2^>nul') do set "_partial=%%#"
|
||||
call echo Checking Installed Product Key [Volume:GVLK] [Partial Key -%%_partial%%]
|
||||
)
|
||||
|
||||
if not defined _Keyexist (
|
||||
set "InsKey=Installing KMS Client Setup Key "
|
||||
wmic path %sls% where __CLASS='%sls%' call InstallProductKey ProductKey="%key%" %nul% && (
|
||||
call echo %%InsKey%% [%key%] [Successful]
|
||||
) || (
|
||||
call :K38_color "%%InsKey%% [%key%] [Unsuccessful]" %Red%
|
||||
)
|
||||
)
|
||||
|
||||
wmic path %sls% where __CLASS='%sls%' call RefreshLicenseStatus %nul%
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:: Set specific KMS host to Local Host
|
||||
:: Thanks to @abbodi1406
|
||||
|
||||
:: By doing this, global KMS IP can not replace KMS38 activation but can be used with Office and other Windows Editions.
|
||||
|
||||
echo:
|
||||
set "SPPk=SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform"
|
||||
reg delete "HKLM\%SPPk%\%wApp%" /f %nul%
|
||||
reg delete "HKU\S-1-5-20\%SPPk%\%wApp%" /f %nul%
|
||||
|
||||
set setkms_error=
|
||||
set "setkms_=Setting Specific KMS Host to "
|
||||
|
||||
wmic path %slp% where ID='%app%' call ClearKeyManagementServiceMachine %nul% || (set setkms_error=1)
|
||||
wmic path %slp% where ID='%app%' call ClearKeyManagementServicePort %nul% || (set setkms_error=1)
|
||||
wmic path %slp% where ID='%app%' call SetKeyManagementServiceMachine MachineName="127.0.0.2" %nul% || (set setkms_error=1)
|
||||
wmic path %slp% where ID='%app%' call SetKeyManagementServicePort 1688 %nul% || (set setkms_error=1)
|
||||
|
||||
if not defined setkms_error (
|
||||
echo %setkms_% [LocalHost 127.0.0.2] [Successful]
|
||||
) else (
|
||||
call :K38_color "%setkms_% [LocalHost 127.0.0.2] [Unsuccessful]" %Red%
|
||||
)
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:: Files are copied to temp to generate ticket to avoid possible issues in case the path contains special character or non English names.
|
||||
|
||||
echo:
|
||||
set "temp_=%SystemRoot%\Temp\_Ticket_Work"
|
||||
if exist "%temp_%\" @RD /S /Q "%temp_%\" %nul%
|
||||
md "%temp_%\" %nul%
|
||||
|
||||
cd /d "!_work!\BIN\"
|
||||
|
||||
set ARM64_file=
|
||||
if "%arch%"=="ARM64" set ARM64_file=ARM64_
|
||||
|
||||
set "A_Cor_cl=%systemroot%\System32\clipup.exe"
|
||||
copy /y /b "%ARM64_file%gatherosstate.exe" "%temp_%\gatherosstate.exe" %nul%
|
||||
copy /y /b "%ARM64_file%slc.dll" "%temp_%\slc.dll" %nul%
|
||||
if defined A_Cor (copy /y /b "ClipUp.exe" "%A_Cor_cl%" %nul%)
|
||||
|
||||
set cfailed=
|
||||
if not exist "%temp_%\gatherosstate.exe" set cfailed=1
|
||||
if not exist "%temp_%\slc.dll" set cfailed=1
|
||||
|
||||
set "copyfiles=Copying Required Files to Temp "
|
||||
set "copyclipup=Copying clipup.exe File to "
|
||||
|
||||
if defined cfailed (
|
||||
call :K38_color "%copyfiles% [%SystemRoot%\Temp\_Ticket_Work\] [Unsuccessful] Aborting..." %Red%
|
||||
goto K38_Act_Cont
|
||||
) else (
|
||||
echo %copyfiles% [%SystemRoot%\Temp\_Ticket_Work\] [Successful]
|
||||
)
|
||||
|
||||
if defined A_Cor (
|
||||
if not exist "%A_Cor_cl%" call :K38_color "%copyclipup% [%systemroot%\System32\] [Unsuccessful] Aborting..." %Red% & goto K38_Act_Cont
|
||||
if exist "%A_Cor_cl%" echo %copyclipup% [%systemroot%\System32\] [Successful]
|
||||
)
|
||||
|
||||
cd /d "%temp_%\"
|
||||
attrib -R -A -S -H *.*
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:: Multiple attempts to generate the ticket because in some cases, one attempt is not enough.
|
||||
|
||||
set "_noxml=if not exist "%temp_%\GenuineTicket.xml""
|
||||
|
||||
start /wait "" "%temp_%/gatherosstate.exe" %nul%
|
||||
%_noxml% timeout /t 3 %nul%
|
||||
%_noxml% call "%temp_%/gatherosstate.exe" %nul%
|
||||
%_noxml% timeout /t 3 %nul%
|
||||
%_noxml% "%temp_%/gatherosstate.exe" %nul%
|
||||
%_noxml% timeout /t 3 %nul%
|
||||
|
||||
set "GenTicket=Generating GenuineTicket.xml "
|
||||
%_noxml% (
|
||||
call :K38_color "%GenTicket% [Unsuccessful] Aborting..." %Red%
|
||||
goto K38_Act_Cont
|
||||
) else (
|
||||
echo %GenTicket% [Successful]
|
||||
)
|
||||
|
||||
:: clipup -v -o -altto <Ticket path> method to apply ticket was not used to avoid the certain issues in case the username have spaces or non English names.
|
||||
|
||||
set "InsTicket=Installing GenuineTicket.xml "
|
||||
set "TDir=%ProgramData%\Microsoft\Windows\ClipSVC\GenuineTicket"
|
||||
if exist "%TDir%\*.xml" del /f /q "%TDir%\*.xml" %nul%
|
||||
copy /y /b "%temp_%\GenuineTicket.xml" "%TDir%\GenuineTicket.xml" %nul%
|
||||
|
||||
if not exist "%TDir%\GenuineTicket.xml" (
|
||||
call :K38_color "Failed to copy Ticket to [%ProgramData%\Microsoft\Windows\ClipSVC\GenuineTicket\] Aborting..." %Red%
|
||||
goto K38_Act_Cont
|
||||
)
|
||||
|
||||
set "_xmlexist=if exist "%TDir%\GenuineTicket.xml""
|
||||
|
||||
%_psc% Restart-Service ClipSVC %nul%
|
||||
%_xmlexist% timeout /t 2 %nul%
|
||||
%_xmlexist% timeout /t 2 %nul%
|
||||
|
||||
%_xmlexist% (
|
||||
%_psc% stop-Service ClipSVC %nul%
|
||||
%_psc% start-Service ClipSVC %nul%
|
||||
%_xmlexist% timeout /t 2 %nul%
|
||||
%_xmlexist% timeout /t 2 %nul%
|
||||
)
|
||||
|
||||
set fallback_=
|
||||
%_xmlexist% (
|
||||
set fallback_=1
|
||||
%nul% clipup -v -o
|
||||
%_xmlexist% timeout /t 2 %nul%
|
||||
)
|
||||
|
||||
%_xmlexist% (
|
||||
call :K38_color "%InsTicket% [Unsuccessful] Aborting..." %Red%
|
||||
if exist "%TDir%\*.xml" del /f /q "%TDir%\*.xml" %nul%
|
||||
goto K38_Act_Cont
|
||||
) else (
|
||||
if not defined fallback_ echo %InsTicket% [Successful]
|
||||
if defined fallback_ call :K38_color "%InsTicket% [Successful] [Fallback method: clipup -v -o]" %Red%
|
||||
)
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
echo:
|
||||
echo Activating...
|
||||
echo:
|
||||
|
||||
call :K38_CheckEXPtime
|
||||
if %gpr% GTR 259200 (
|
||||
call :K38_Actinfo
|
||||
goto K38_Act_Cont
|
||||
)
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:: Clear 180 Days KMS Activation lock without full Rearm and Restart
|
||||
|
||||
set RearmF=
|
||||
set "Rearm=Applying SKU-APP ID Rearm "
|
||||
wmic path %sls% where __CLASS='%sls%' call ReArmApp ApplicationId="%wApp%" %nul% || (set RearmF=1)
|
||||
wmic path %slp% where ID='%app%' call ReArmsku %nul% || (set RearmF=1)
|
||||
|
||||
if defined RearmF (
|
||||
call :K38_color "%Rearm% [Unsuccessful]" %Red%
|
||||
) else (
|
||||
echo %Rearm% [Successful]
|
||||
)
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
echo:
|
||||
call :K38_CheckEXPtime
|
||||
if %gpr% GTR 259200 (
|
||||
call :K38_Actinfo
|
||||
goto K38_Act_Cont
|
||||
)
|
||||
|
||||
%_psc% Restart-Service sppsvc %nul%
|
||||
wmic path %sls% where __CLASS='%sls%' call RefreshLicenseStatus %nul%
|
||||
|
||||
call :K38_CheckEXPtime
|
||||
if %gpr% GTR 259200 (
|
||||
call :K38_Actinfo
|
||||
goto K38_Act_Cont
|
||||
)
|
||||
|
||||
call :K38_color "Activation Failed." %Red%
|
||||
call :K38_color "Try the Troubleshoot Guide listed in the ReadMe." %Magenta%
|
||||
|
||||
:K38_Act_Cont
|
||||
|
||||
:: clipup.exe does not exist in server cor and acor editions by default, it was copied there with this script.
|
||||
|
||||
echo:
|
||||
cd /d "!_work!\"
|
||||
if exist "%temp_%\" @RD /S /Q "%temp_%\" %nul%
|
||||
if defined A_Cor (if exist "%A_Cor_cl%" del /f /q "%A_Cor_cl%" %nul%)
|
||||
|
||||
set "delFiles=Cleaning Temp Files "
|
||||
set "delclipup=Deleting copied clipup.exe file "
|
||||
|
||||
if exist "%temp_%\" (
|
||||
call :K38_color "%delFiles% [Unsuccessful]" %Red%
|
||||
) else (
|
||||
echo %delFiles% [Successful]
|
||||
)
|
||||
|
||||
if defined A_Cor (
|
||||
if exist "%A_Cor_cl%" call :K38_color "%delclipup% [Unsuccessful]" %Red%
|
||||
if not exist "%A_Cor_cl%" echo %delclipup% [Successful]
|
||||
)
|
||||
|
||||
goto K38_Done
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:: Echo all the missing files.
|
||||
:: Written by @abbodi1406 (MDL)
|
||||
|
||||
:K38_check
|
||||
|
||||
for %%# in (%1 %2) do (if not exist "!_work!\BIN\%%#" (if defined _miss (set "_miss=!_miss! %%#") else (set "_miss=%%#")))
|
||||
if defined _miss (
|
||||
%ELine%
|
||||
echo Following required file^(s^) is missing in 'BIN' folder. Aborting...
|
||||
echo:
|
||||
echo !_miss!
|
||||
)
|
||||
exit /b
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:K38_ServiceCheck
|
||||
|
||||
:: Detect Service status and start type
|
||||
:: Written by @RPO
|
||||
|
||||
for /f "tokens=1,3 delims=: " %%a in ('sc query %1') do (if /i %%a==state set "state=%%b")
|
||||
for /f "tokens=1-4 delims=: " %%a in ('sc qc %1') do (if /i %%a==start_type set "start_type=%%c %%d")
|
||||
|
||||
if /i "%state%"=="STOPPED" set state=Stopped
|
||||
if /i "%state%"=="RUNNING" set state=Running
|
||||
|
||||
if /i "%start_type%"=="auto_start (delayed)" set start_type=Delayed-Auto
|
||||
if /i "%start_type%"=="auto_start " set start_type=Auto
|
||||
if /i "%start_type%"=="demand_start " set start_type=Demand
|
||||
if /i "%start_type%"=="disabled " set start_type=Disabled
|
||||
|
||||
for %%i in (%*) do (
|
||||
if /i "%%i"=="%_3%" set "sp_start_type=%start_type%" & set "sp_state=%state%"
|
||||
if /i "%%i"=="%_1%" set "Cl_start_type=%start_type%" & set "Cl_state=%state%"
|
||||
)
|
||||
exit /b
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:K38_CheckPermAct
|
||||
|
||||
:: Check Windows Permanent Activation status
|
||||
:: Written by @abbodi1406
|
||||
|
||||
wmic path %slp% where (LicenseStatus='1' and GracePeriodRemaining='0' and PartialProductKey is not NULL) get Name 2>nul | findstr /i "Windows" 1>nul && set PermAct=1||set PermAct=
|
||||
exit /b
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:: Check Expiration date with powershell
|
||||
:: Written by @abbodi1406
|
||||
|
||||
:K38_Actinfo
|
||||
|
||||
for /f "tokens=* delims=" %%# in ('%_psc% "$([DateTime]::Now.addMinutes(%gpr%)).ToString('yyyy-MM-dd HH:mm:ss')" 2^>nul') do set "_xpr=%%#"
|
||||
call :K38_color "%winos% is activated till %_xpr%" %Green%
|
||||
exit /b
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:K38_CheckEXPtime
|
||||
|
||||
:: Check Activation remaining time
|
||||
:: Written by @abbodi1406
|
||||
|
||||
for /f "tokens=2 delims==" %%# in ('"wmic path %slp% where (ApplicationID='%wApp%' and Description like '%%KMSCLIENT%%' and PartialProductKey is not NULL) get GracePeriodRemaining /VALUE" ') do set "gpr=%%#"
|
||||
exit /b
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:K38_color
|
||||
|
||||
%_psc% write-host '%1' -fore '%2' -back '%3'
|
||||
exit /b
|
||||
|
||||
:K38_color1
|
||||
|
||||
%_psc% write-host '%1' -fore '%2' -back '%3' -NoNewline
|
||||
exit /b
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:K38_Done
|
||||
|
||||
echo:
|
||||
if defined Unattended (
|
||||
echo Exiting in 3 seconds...
|
||||
if %winbuild% LSS 7600 (ping -n 3 127.0.0.1 > nul) else (timeout /t 3)
|
||||
exit /b
|
||||
)
|
||||
echo Press any key to exit...
|
||||
pause >nul
|
||||
exit /b
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:: Check Windows Edition with SKU value for better accuracy
|
||||
|
||||
:K38_CheckEdition
|
||||
|
||||
for %%# in (
|
||||
4-Enterprise
|
||||
7-ServerStandard
|
||||
8-ServerDatacenter
|
||||
27-EnterpriseN
|
||||
48-Professional
|
||||
49-ProfessionalN
|
||||
50-ServerSolution
|
||||
98-CoreN
|
||||
99-CoreCountrySpecific
|
||||
100-CoreSingleLanguage
|
||||
101-Core
|
||||
110-ServerCloudStorage
|
||||
120-ServerARM64
|
||||
121-Education
|
||||
122-EducationN
|
||||
125-EnterpriseS
|
||||
126-EnterpriseSN
|
||||
145-ServerDatacenterACor
|
||||
146-ServerStandardACor
|
||||
161-ProfessionalWorkstation
|
||||
162-ProfessionalWorkstationN
|
||||
164-ProfessionalEducation
|
||||
165-ProfessionalEducationN
|
||||
168-ServerAzureCor
|
||||
171-EnterpriseG
|
||||
172-EnterpriseGN
|
||||
175-ServerRdsh
|
||||
183-CloudE
|
||||
) do for /f "tokens=1,2 delims=-" %%A in ("%%#") do (
|
||||
if %osSKU%==%%A set "osedition=%%B"
|
||||
)
|
||||
exit /b
|
||||
|
||||
::========================================================================================================================================
|
||||
|
||||
:: Generic Volume License Key (GVLK) List
|
||||
|
||||
:: Windows 10 [RS5]
|
||||
:32d2fab3-e4a8-42c2-923b-4bf4fd13e6ee
|
||||
set "key=M7XTQ-FN8P6-TTKYV-9D4CC-J462D" &:: Enterprise LTSC 2019
|
||||
exit /b
|
||||
|
||||
:7103a333-b8c8-49cc-93ce-d37c09687f92
|
||||
set "key=92NFX-8DJQP-P6BBQ-THF9C-7CG2H" &:: Enterprise LTSC 2019 N
|
||||
exit /b
|
||||
|
||||
:ec868e65-fadf-4759-b23e-93fe37f2cc29
|
||||
set "key=CPWHC-NT2C7-VYW78-DHDB2-PG3GK" &:: Enterprise for Virtual Desktops
|
||||
exit /b
|
||||
|
||||
:0df4f814-3f57-4b8b-9a9d-fddadcd69fac
|
||||
set "key=NBTWJ-3DR69-3C4V8-C26MC-GQ9M6" &:: Lean
|
||||
exit /b
|
||||
|
||||
:: Windows 10 [RS3]
|
||||
:82bbc092-bc50-4e16-8e18-b74fc486aec3
|
||||
set "key=NRG8B-VKK3Q-CXVCJ-9G2XF-6Q84J" &:: Pro Workstation
|
||||
exit /b
|
||||
|
||||
:4b1571d3-bafb-4b40-8087-a961be2caf65
|
||||
set "key=9FNHH-K3HBT-3W4TD-6383H-6XYWF" &:: Pro Workstation N
|
||||
exit /b
|
||||
|
||||
:e4db50ea-bda1-4566-b047-0ca50abc6f07
|
||||
set "key=7NBT4-WGBQX-MP4H7-QXFF8-YP3KX" &:: Enterprise Remote Server
|
||||
exit /b
|
||||
|
||||
:: Windows 10 [RS2]
|
||||
:e0b2d383-d112-413f-8a80-97f373a5820c
|
||||
set "key=YYVX9-NTFWV-6MDM3-9PT4T-4M68B" &:: Enterprise G
|
||||
exit /b
|
||||
|
||||
:e38454fb-41a4-4f59-a5dc-25080e354730
|
||||
set "key=44RPN-FTY23-9VTTB-MP9BX-T84FV" &:: Enterprise G N
|
||||
exit /b
|
||||
|
||||
:: Windows 10 [RS1]
|
||||
:2d5a5a60-3040-48bf-beb0-fcd770c20ce0
|
||||
set "key=DCPHK-NFMTC-H88MJ-PFHPY-QJ4BJ" &:: Enterprise 2016 LTSB
|
||||
exit /b
|
||||
|
||||
:9f776d83-7156-45b2-8a5c-359b9c9f22a3
|
||||
set "key=QFFDN-GRT3P-VKWWX-X7T3R-8B639" &:: Enterprise 2016 LTSB N
|
||||
exit /b
|
||||
|
||||
:3f1afc82-f8ac-4f6c-8005-1d233e606eee
|
||||
set "key=6TP4R-GNPTD-KYYHQ-7B7DP-J447Y" &:: Pro Education
|
||||
exit /b
|
||||
|
||||
:5300b18c-2e33-4dc2-8291-47ffcec746dd
|
||||
set "key=YVWGF-BXNMC-HTQYQ-CPQ99-66QFC" &:: Pro Education N
|
||||
exit /b
|
||||
|
||||
:: Windows 10 [TH]
|
||||
:58e97c99-f377-4ef1-81d5-4ad5522b5fd8
|
||||
set "key=TX9XD-98N7V-6WMQ6-BX7FG-H8Q99" &:: Home
|
||||
exit /b
|
||||
|
||||
:7b9e1751-a8da-4f75-9560-5fadfe3d8e38
|
||||
set "key=3KHY7-WNT83-DGQKR-F7HPR-844BM" &:: Home N
|
||||
exit /b
|
||||
|
||||
:cd918a57-a41b-4c82-8dce-1a538e221a83
|
||||
set "key=7HNRX-D7KGG-3K4RQ-4WPJ4-YTDFH" &:: Home Single Language
|
||||
exit /b
|
||||
|
||||
:a9107544-f4a0-4053-a96a-1479abdef912
|
||||
set "key=PVMJN-6DFY6-9CCP6-7BKTT-D3WVR" &:: Home China
|
||||
exit /b
|
||||
|
||||
:2de67392-b7a7-462a-b1ca-108dd189f588
|
||||
set "key=W269N-WFGWX-YVC9B-4J6C9-T83GX" &:: Pro
|
||||
exit /b
|
||||
|
||||
:a80b5abf-76ad-428b-b05d-a47d2dffeebf
|
||||
set "key=MH37W-N47XK-V7XM9-C7227-GCQG9" &:: Pro N
|
||||
exit /b
|
||||
|
||||
:e0c42288-980c-4788-a014-c080d2e1926e
|
||||
set "key=NW6C2-QMPVW-D7KKK-3GKT6-VCFB2" &:: Education
|
||||
exit /b
|
||||
|
||||
:3c102355-d027-42c6-ad23-2e7ef8a02585
|
||||
set "key=2WH4N-8QGBV-H22JP-CT43Q-MDWWJ" &:: Education N
|
||||
exit /b
|
||||
|
||||
:73111121-5638-40f6-bc11-f1d7b0d64300
|
||||
set "key=NPPR9-FWDCX-D2C8J-H872K-2YT43" &:: Enterprise
|
||||
exit /b
|
||||
|
||||
:e272e3e2-732f-4c65-a8f0-484747d0d947
|
||||
set "key=DPH2V-TTNVB-4X9Q3-TJR4H-KHJW4" &:: Enterprise N
|
||||
exit /b
|
||||
|
||||
:7b51a46c-0c04-4e8f-9af4-8496cca90d5e
|
||||
set "key=WNMTR-4C88C-JK8YV-HQ7T2-76DF9" &:: Enterprise 2015 LTSB
|
||||
exit /b
|
||||
|
||||
:87b838b7-41b6-4590-8318-5797951d8529
|
||||
set "key=2F77B-TNFGY-69QQF-B8YKP-D69TJ" &:: Enterprise 2015 LTSB N
|
||||
exit /b
|
||||
|
||||
:: Windows Server 2019 [RS5]
|
||||
:de32eafd-aaee-4662-9444-c1befb41bde2
|
||||
set "key=N69G4-B89J2-4G8F4-WWYCC-J464C" &:: Standard
|
||||
exit /b
|
||||
|
||||
:34e1ae55-27f8-4950-8877-7a03be5fb181
|
||||
set "key=WMDGN-G9PQG-XVVXX-R3X43-63DFG" &:: Datacenter
|
||||
exit /b
|
||||
|
||||
:034d3cbb-5d4b-4245-b3f8-f84571314078
|
||||
set "key=WVDHN-86M7X-466P6-VHXV7-YY726" &:: Essentials
|
||||
exit /b
|
||||
|
||||
:a99cc1f0-7719-4306-9645-294102fbff95
|
||||
set "key=FDNH6-VW9RW-BXPJ7-4XTYG-239TB" &:: Azure Core
|
||||
exit /b
|
||||
|
||||
:73e3957c-fc0c-400d-9184-5f7b6f2eb409
|
||||
set "key=N2KJX-J94YW-TQVFB-DG9YT-724CC" &:: Standard ACor
|
||||
exit /b
|
||||
|
||||
:90c362e5-0da1-4bfd-b53b-b87d309ade43
|
||||
set "key=6NMRW-2C8FM-D24W7-TQWMY-CWH2D" &:: Datacenter ACor
|
||||
exit /b
|
||||
|
||||
:8de8eb62-bbe0-40ac-ac17-f75595071ea3
|
||||
set "key=GRFBW-QNDC4-6QBHG-CCK3B-2PR88" &:: ServerARM64
|
||||
exit /b
|
||||
|
||||
:: Windows Server 2016 [RS4]
|
||||
:43d9af6e-5e86-4be8-a797-d072a046896c
|
||||
set "key=K9FYF-G6NCK-73M32-XMVPY-F9DRR" &:: ServerARM64
|
||||
exit /b
|
||||
|
||||
:: Windows Server 2016 [RS3]
|
||||
:61c5ef22-f14f-4553-a824-c4b31e84b100
|
||||
set "key=PTXN8-JFHJM-4WC78-MPCBR-9W4KR" &:: Standard ACor
|
||||
exit /b
|
||||
|
||||
:e49c08e7-da82-42f8-bde2-b570fbcae76c
|
||||
set "key=2HXDN-KRXHB-GPYC7-YCKFJ-7FVDG" &:: Datacenter ACor
|
||||
exit /b
|
||||
|
||||
:: Windows Server 2016 [RS1]
|
||||
:8c1c5410-9f39-4805-8c9d-63a07706358f
|
||||
set "key=WC2BQ-8NRM3-FDDYY-2BFGV-KHKQY" &:: Standard
|
||||
exit /b
|
||||
|
||||
:21c56779-b449-4d20-adfc-eece0e1ad74b
|
||||
set "key=CB7KF-BWN84-R7R2Y-793K2-8XDDG" &:: Datacenter
|
||||
exit /b
|
||||
|
||||
:2b5a1b0f-a5ab-4c54-ac2f-a6d94824a283
|
||||
set "key=JCKRF-N37P4-C2D82-9YXRT-4M63B" &:: Essentials
|
||||
exit /b
|
||||
|
||||
:7b4433f4-b1e7-4788-895a-c45378d38253
|
||||
set "key=QN4C6-GBJD2-FB422-GHWJK-GJG2R" &:: Cloud Storage
|
||||
exit /b
|
||||
|
||||
:3dbf341b-5f6c-4fa7-b936-699dce9e263f
|
||||
set "key=VP34G-4NPPG-79JTQ-864T4-R3MQX" &:: Azure Core
|
||||
exit /b
|
||||
|
||||
::========================================================================================================================================
|
|
@ -0,0 +1,345 @@
|
|||
====================================================================================================
|
||||
[HWID] Digital License Activation:
|
||||
====================================================================================================
|
||||
|
||||
- This activation is supported for Windows 10 ONLY.
|
||||
- This activation does not store any files in your system.
|
||||
- This activation is a permanent activation for your system Hardware.
|
||||
|
||||
- On a system, this activation can be created for all the supported editions, and all can be
|
||||
linked to Microsoft account without any issues.
|
||||
|
||||
- Once a system is activated, this activation cannot be removed. (Because the license is stored in
|
||||
the Microsoft servers and not in the user's system.)
|
||||
|
||||
- Any significant changes in the Hardware (such as a motherboard) may deactivate the system.
|
||||
It is possible to reactivate a system that was deactivated because of significant hardware
|
||||
changes, IF your activation, was linked to an online Microsoft account.
|
||||
|
||||
- For activation to succeed, the Windows Update Service and internet connectivity must be enabled.
|
||||
If you are trying to activate without these conditions being met, then the system will auto-
|
||||
activate later when the conditions are met.
|
||||
|
||||
- Auto activation scenario after the Windows reinstall:
|
||||
- The Internet is required. (Only at the time of activation)
|
||||
- The system will auto-activate if Retail (Consumer) media was used for the installation.
|
||||
- The system will NOT auto-activate if VL (Business) media was used for the installation.
|
||||
In this case, the user will have to insert that windows edition Retail/OEM key (find keys below
|
||||
in this page) to activate, if the user doesn't wish to activate again using this script.
|
||||
|
||||
- Possible reasons for activation failure:
|
||||
- The Internet is not connected.
|
||||
- Windows update service is disabled.
|
||||
- Use of a VPN, and/or a privacy-based hosts file, firewall rules.
|
||||
- Corrupt system files.
|
||||
- Microsoft servers block the activation request from some countries such as Iran.
|
||||
- Rarely, Microsoft's activation servers are the problem.
|
||||
- Some machines are not able to generate GenuineTicket.xml file using gatherosstate.exe
|
||||
The reason is unknown (to me). Please contact me if it happens to you.
|
||||
|
||||
* Troubleshoot guide is listed below.
|
||||
|
||||
====================================================================================================
|
||||
|
||||
Documentation by @mspaintmsi
|
||||
|
||||
Included topics-
|
||||
|
||||
How does it work?
|
||||
Is it possible that Microsoft can block these Digital Licenses (HWID)?
|
||||
|
||||
https://pastebin.com/raw/7Xyaf15Z
|
||||
Mirror Link-
|
||||
https://textuploader.com/1dg8d/raw
|
||||
|
||||
And
|
||||
|
||||
https://github.com/massgravel/MASSGRAVE
|
||||
https://gitlab.com/massgrave/massgrave
|
||||
|
||||
====================================================================================================
|
||||
Supported Products:
|
||||
====================================================================================================
|
||||
|
||||
Windows 10 Versions that can be activated:
|
||||
|
||||
Core
|
||||
CoreCountrySpecific
|
||||
CoreN
|
||||
CoreSingleLanguage
|
||||
Education
|
||||
EducationN
|
||||
Enterprise
|
||||
EnterpriseN
|
||||
EnterpriseS [LTSB 2015/2016 & LTSC 2019]
|
||||
EnterpriseSN [LTSB 2015/2016]
|
||||
Professional
|
||||
ProfessionalEducation
|
||||
ProfessionalEducationN
|
||||
ProfessionalN
|
||||
ProfessionalWorkstation
|
||||
ProfessionalWorkstationN
|
||||
ServerRdsh
|
||||
IoTEnterprise
|
||||
|
||||
|
||||
Note - X86-X64 and ARM64 architecture systems are supported.
|
||||
- Any Evaluation version of Windows (i.e. 'EVAL' LTSB/C) cannot be activated.
|
||||
|
||||
====================================================================================================
|
||||
Switches for the Script:
|
||||
====================================================================================================
|
||||
|
||||
- To run the script in unattended mode, use /u parameter.
|
||||
"HWID_Activation.cmd" /u
|
||||
|
||||
====================================================================================================
|
||||
File Details:
|
||||
====================================================================================================
|
||||
|
||||
fabb5a0fc1e6a372219711152291339af36ed0b5 *gatherosstate.exe Virus Total = 0/71
|
||||
ca3a51fdfc8749b8be85f7904b1c238a6dfba135 *slc.dll Virus Total = 0/68
|
||||
578364cb2319da7999acd8c015b4ce8da8f1b282 *ARM64_gatherosstate.exe Virus Total = 0/69
|
||||
5dbea3a580cf60391453a04a5c910a3ceca2b810 *ARM64_slc.dll Virus Total = 0/67
|
||||
48d928b1bec25a56fe896c430c2c034b7866aa7a *ClipUp.exe Virus Total = 0/68
|
||||
|
||||
Virus Total Report Date: 2020-01-21
|
||||
|
||||
- File Sources:
|
||||
|
||||
- ClipUp.exe (Original):
|
||||
From Windows server 2016 x64 ISO
|
||||
|
||||
- gatherosstate.exe (Original):
|
||||
From Windows 10 x86 14393 ADK
|
||||
|
||||
- ARM64_gatherosstate.exe (Original):
|
||||
From Windows 10 ARM64 18362 ISO
|
||||
|
||||
- ARM64_slc.dll and slc.dll:
|
||||
|
||||
Original slshim
|
||||
https://github.com/vyvojar/slshim
|
||||
|
||||
Improved by @mspaintmsi
|
||||
https://www.nsaneforums.com/topic/316668--/?do=findComment&comment=1497887
|
||||
https://github.com/massgravel/MASSGRAVE
|
||||
https://gitlab.com/massgrave/massgrave
|
||||
|
||||
Source code is included.
|
||||
slc.dll is based on Integrated_Patcher_2 method.
|
||||
It is currently in use in HWID/KMS38 Activation script.
|
||||
|
||||
____________________________________________________________________________________________________
|
||||
|
||||
You can safely delete the following files if it's not required for you.
|
||||
|
||||
ClipUp.exe - Required to KMS38 activate Server Cor and Acor editions.
|
||||
ARM64_gatherosstate.exe and ARM64_slc.dll - Required to activate ARM64 Arch Windows 10.
|
||||
|
||||
====================================================================================================
|
||||
Manual Activation Process:
|
||||
====================================================================================================
|
||||
|
||||
- Prerequisite:
|
||||
|
||||
For Windows 10 x86-x64 system, you need following files,
|
||||
fabb5a0fc1e6a372219711152291339af36ed0b5 *gatherosstate.exe
|
||||
ca3a51fdfc8749b8be85f7904b1c238a6dfba135 *slc.dll
|
||||
|
||||
For Windows 10 ARM64 system, you need following files,
|
||||
578364cb2319da7999acd8c015b4ce8da8f1b282 *ARM64_gatherosstate.exe
|
||||
5dbea3a580cf60391453a04a5c910a3ceca2b810 *ARM64_slc.dll
|
||||
* Rename the ARM64 files to gatherosstate.exe and slc.dll respectively.
|
||||
|
||||
|
||||
Make a folder named 'Files' in C drive, [C:\Files] and copy the required files in that folder.
|
||||
|
||||
-------------------------------------------------------------------------------------------------
|
||||
|
||||
Retail/OEM Keys Windows 10 Editions
|
||||
|
||||
YTMG3-N6DKC-DKB77-7M9GH-8HVX7 Core
|
||||
4CPRK-NM3K3-X6XXQ-RXX86-WXCHW CoreN
|
||||
N2434-X9D7W-8PF6X-8DV9T-8TYMD CoreCountrySpecific
|
||||
BT79Q-G7N6G-PGBYW-4YWX6-6F4BT CoreSingleLanguage
|
||||
YNMGQ-8RYV3-4PGQ3-C8XTP-7CFBY Education
|
||||
84NGF-MHBT6-FXBX8-QWJK7-DRR8H EducationN
|
||||
XGVPP-NMH47-7TTHJ-W3FW7-8HV2C Enterprise
|
||||
3V6Q6-NQXCX-V8YXR-9QCYV-QPFCT EnterpriseN
|
||||
FWN7H-PF93Q-4GGP8-M8RF3-MDWWW EnterpriseS [LTSB 2015]
|
||||
8V8WN-3GXBH-2TCMG-XHRX3-9766K EnterpriseSN [LTSB 2015]
|
||||
NK96Y-D9CD8-W44CQ-R8YTK-DYJWX EnterpriseS [LTSB 2016]
|
||||
2DBW3-N2PJG-MVHW3-G7TDK-9HKR4 EnterpriseSN [LTSB 2016]
|
||||
43TBQ-NH92J-XKTM7-KT3KK-P39PB EnterpriseS [LTSC 2019]
|
||||
VK7JG-NPHTM-C97JM-9MPGT-3V66T Professional
|
||||
2B87N-8KFHP-DKV6R-Y2C8J-PKCKT ProfessionalN
|
||||
8PTT6-RNW4C-6V7J2-C2D3X-MHBPB ProfessionalEducation
|
||||
GJTYN-HDMQY-FRR76-HVGC7-QPF8P ProfessionalEducationN
|
||||
DXG7C-N36C4-C4HTG-X4T3X-2YV77 ProfessionalWorkstation
|
||||
WYPNQ-8C467-V2W6J-TX4WX-WT2RQ ProfessionalWorkstationN
|
||||
NJCF7-PW8QT-3324D-688JX-2YV66 ServerRdsh
|
||||
XQQYW-NFFMW-XJPBH-K8732-CKFFD IoTEnterprise
|
||||
|
||||
-------------------------------------------------------------------------------------------------
|
||||
|
||||
- Make sure the Windows Update Service and internet are both enabled.
|
||||
- Open a command prompt (run cmd.exe) as administrator, and enter following listed commands in the
|
||||
the sequence in which they are given.
|
||||
- Enter Retail/OEM Key, (Replace '%key%' with the key from the above list) with the following command:
|
||||
|
||||
cscript /nologo %windir%\system32\slmgr.vbs /ipk %key%
|
||||
|
||||
- Make sure slc.dll and gatherosstate.exe files are located in the folder, "C:\Files" and enter
|
||||
the following commands to generate GenuineTicket.xml file.
|
||||
|
||||
For x86-x64 systems,
|
||||
|
||||
pushd "C:\Files"
|
||||
rundll32 "C:\Files\slc.dll",PatchGatherosstate
|
||||
call "C:\Files\gatherosstatemodified.exe"
|
||||
|
||||
For ARM64 systems,
|
||||
|
||||
call "C:\Files\gatherosstate.exe"
|
||||
|
||||
- Now a GenuineTicket.xml file should be created in the folder "C:\Files\", copy and paste this file in the
|
||||
folder named, "C:\ProgramData\Microsoft\Windows\ClipSVC\GenuineTicket\"
|
||||
|
||||
- Now apply this ticket using the following commands in this sequence:
|
||||
|
||||
net stop ClipSVC
|
||||
net start ClipSVC
|
||||
|
||||
- Activate Windows with the following command:
|
||||
|
||||
cscript /nologo %windir%\system32\slmgr.vbs /ato
|
||||
|
||||
- Check Activation Status with the following command:
|
||||
|
||||
cscript /nologo %windir%\system32\slmgr.vbs /xpr
|
||||
|
||||
- Done.
|
||||
|
||||
* Note - [clipup -v -o -altto <ticket_path>] method to apply the ticket was not suggested because
|
||||
of the issues in case the username have spaces or non English characters.
|
||||
|
||||
====================================================================================================
|
||||
Troubleshoot activation issues:
|
||||
====================================================================================================
|
||||
|
||||
- Make sure the internet is connected.
|
||||
|
||||
- Open CMD and type services.msc and hit Enter, When Services opens up, look for 'Windows Update'
|
||||
and Make sure its startup type is set to Automatic. Some update blocking tools and scripts
|
||||
usually permanently block the update service, you need to make sure it's not the case.
|
||||
|
||||
- VPN, privacy-based hosts and/or firewall rules may cause problems with the activation. Disable
|
||||
them if you are facing problems in activation.
|
||||
|
||||
- Reboot the system.
|
||||
|
||||
- Now run the script to activate Windows 10, and if unsuccessful,
|
||||
Try the troubleshoot button in the settings activation page.
|
||||
If still unsuccessful then read additional troubleshoot options listed below.
|
||||
|
||||
--------------------------------------------
|
||||
|
||||
- Open CMD as administrator, and enter the following command:
|
||||
|
||||
Dism /online /Cleanup-Image /RestoreHealth
|
||||
|
||||
- After it's done, reboot the system and open CMD as administrator again, and enter the
|
||||
following command:
|
||||
|
||||
sfc.exe /scannow
|
||||
|
||||
- After it's done, reboot the system and run the activation script, and if unsuccessful,
|
||||
open CMD as administrator again, and enter the following command:
|
||||
|
||||
slmgr.vbs /rearm
|
||||
|
||||
- Reboot the system and run the activation script, and if unsuccessful,
|
||||
You may try to rebuild licensing Tokens.dat as suggested in https://support.microsoft.com/en-us/help/2736303
|
||||
(this will require to repair Office afterwards.)
|
||||
|
||||
- Reboot the system and run the activation script, and if unsuccessful,
|
||||
try cleaning the clipup using the following commands, it will reset all the HWID/KMS38 installed
|
||||
licences in the current system installation. open CMD as administrator again, and enter the
|
||||
following commands one by one:
|
||||
|
||||
net stop ClipSVC
|
||||
rundll32 clipc.dll,ClipCleanUpState
|
||||
|
||||
- Reboot the system (important) and run the activation script, and if unsuccessful,
|
||||
Make sure hardware component proper drivers are installed, check manufacturer site/Windows-
|
||||
update for drivers.
|
||||
|
||||
- After it's done, reboot the system and run the activation script, and if unsuccessful,
|
||||
it may be time to start over from the very beginning and do a clean install of windows :D
|
||||
|
||||
-------------------------------------------
|
||||
Activation is blocked in some countries -
|
||||
-------------------------------------------
|
||||
|
||||
- Microsoft servers block the activation request from some countries such as Iran,
|
||||
To activate the system in those countries, follow the below steps,
|
||||
- In the settings app, Change Region and Timezone to the USA location and use a VPN, choose the
|
||||
the location of the USA. Now run the script, it should activate now.
|
||||
|
||||
----------------------------------------------------------------------------------------------------
|
||||
|
||||
- Some machines are not able to generate GenuineTicket.xml file using gatherosstate.exe
|
||||
The reason is unknown (to me). Please contact me if it happens to you.
|
||||
|
||||
=========================================================================================================
|
||||
Credits:
|
||||
=========================================================================================================
|
||||
|
||||
@mspaintmsi Original co-authors of HWID/KMS38 Activation without KMS or predecessor install/upgrade.
|
||||
and Created various methods for HWID/KMS38 Activation
|
||||
*Anonymous https://www.nsaneforums.com/topic/316668--/?do=findComment&comment=1497887
|
||||
https://github.com/massgravel/MASSGRAVE
|
||||
https://gitlab.com/massgrave/massgrave
|
||||
|
||||
@vyvojar Original slshim (slc.dll)
|
||||
https://github.com/vyvojar/slshim/releases
|
||||
|
||||
---------------------------------------------------------------------------------------------------------
|
||||
|
||||
HWID/KMS38 methods Suggestions and improvements:-
|
||||
|
||||
@sponpa New ideas for the HWID/KM38 Generation
|
||||
https://www.nsaneforums.com/topic/316668--/page/21/?tab=comments#comment-1431257
|
||||
|
||||
@leitek8 Improvements for the slc.dll
|
||||
https://www.nsaneforums.com/topic/316668--/page/22/?tab=comments#comment-1438005
|
||||
|
||||
---------------------------------------------------------------------------------------------------------
|
||||
|
||||
Kind Help:-
|
||||
|
||||
Thanks for having my back and answering all of my queries. (In no particular order)
|
||||
|
||||
@AveYo aka @BAU, @sponpa, @mspaintmsi @RPO, @leitek8, @mxman2k, @Yen, @abbodi1406
|
||||
|
||||
@BorrowedWifi for providing support in fixing English grammar errors in the Read Me.
|
||||
@Chibi ANUBIS and @smashed for testing scripts for ARM64 system.
|
||||
|
||||
Special thanks to @abbodi1406 for providing the great help.
|
||||
|
||||
---------------------------------------------------------------------------------------------------------
|
||||
|
||||
This script is a part of 'Microsoft Activation Scripts' project.
|
||||
|
||||
Homepages-
|
||||
NsaneForums: (Login Required) https://www.nsaneforums.com/topic/316668-microsoft-activation-scripts/
|
||||
GitHub: https://github.com/massgravel/Microsoft-Activation-Scripts
|
||||
GitLab: https://gitlab.com/massgrave/microsoft-activation-scripts
|
||||
|
||||
Maintained by @WindowsAddict
|
||||
|
||||
P.S. I (@WindowsAddict) did not help in the development of HWID/KMS38 Activation in any way, I only
|
||||
manage batch script tool which is based on the above mentioned original co-authors activation methods.
|
||||
|
||||
=========================================================================================================
|
|
@ -0,0 +1,358 @@
|
|||
====================================================================================================
|
||||
KMS38 Activation:
|
||||
====================================================================================================
|
||||
|
||||
- This activation method activates Windows 10 and Windows Server (14393 and later builds),
|
||||
until the year 2038.
|
||||
- This activation method does not store any files on the system.
|
||||
|
||||
- Make sure the following things have been accounted for, before applying KMS38 Activation:
|
||||
- Before the activation, if any KMS activator is installed, then make sure to uninstall it
|
||||
completely.
|
||||
- After KMS38 activation for the Windows Operating System has been achieved, if you want to
|
||||
additionally, use the 180 Days KMS Activator for MS Office, then you must make sure that
|
||||
it (the 180 Days KMS Activator for MS Office) is compatible with Windows KMS38 activation.
|
||||
FYI, the following activators are compatible and can activate Office
|
||||
without disrupting the Windows KMS38 activation.
|
||||
|
||||
KMS_VL_ALL by @abbodi1406 https://forums.mydigitallife.net/posts/838808
|
||||
Online KMS Activation Script https://www.nsaneforums.com/topic/316668-microsoft-activation-scripts/
|
||||
|
||||
- Any KMS Activator which is not compatible with KMS38, may overwrite the KMS38 activation for
|
||||
Windows with its own 180 days activation, thereby destroying the KMS38 activation for Windows.
|
||||
To prevent this accidental overwriting, you can apply KMS38 protection for Windows, check
|
||||
the Extras folder for more details.
|
||||
|
||||
- Why is the script setting the specific KMS host to 127.0.0.2 (localhost)?
|
||||
- By doing this, global KMS IP can not replace KMS38 activation but can be used with Office and
|
||||
other Windows Editions.
|
||||
- In case you don't like it, you can remove it with following codes, open CMD as admin and enter,
|
||||
|
||||
set "SPPk=SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform"
|
||||
reg delete "HKLM\%SPPk%\55c92734-d682-4d71-983e-d6ec3f16059f" /f
|
||||
reg delete "HKU\S-1-5-20\%SPPk%\55c92734-d682-4d71-983e-d6ec3f16059f" /f
|
||||
|
||||
====================================================================================================
|
||||
|
||||
Documentation by @mspaintmsi
|
||||
|
||||
Included topics-
|
||||
|
||||
How does it work?
|
||||
|
||||
https://pastebin.com/raw/7Xyaf15Z
|
||||
Mirror Link-
|
||||
https://textuploader.com/1dg8d/raw
|
||||
|
||||
And
|
||||
|
||||
https://github.com/massgravel/MASSGRAVE
|
||||
https://gitlab.com/massgrave/massgrave
|
||||
|
||||
====================================================================================================
|
||||
Supported Products:
|
||||
====================================================================================================
|
||||
|
||||
Windows 10:
|
||||
|
||||
Core
|
||||
CoreCountrySpecific
|
||||
CoreN
|
||||
CoreSingleLanguage
|
||||
Education
|
||||
EducationN
|
||||
Enterprise
|
||||
EnterpriseG
|
||||
EnterpriseGN
|
||||
EnterpriseN
|
||||
EnterpriseS [LTSB 2016 & LTSC 2019]
|
||||
EnterpriseSN [LTSB 2016 & LTSC 2019]
|
||||
Professional
|
||||
ProfessionalEducation
|
||||
ProfessionalEducationN
|
||||
ProfessionalN
|
||||
ProfessionalWorkstation
|
||||
ProfessionalWorkstationN
|
||||
ServerRdsh
|
||||
|
||||
------------------------
|
||||
|
||||
Windows Server:
|
||||
|
||||
ServerCloudStorage [Server 2016]
|
||||
ServerDatacenter [Server 2016 & 2019]
|
||||
ServerDatacenterCor [Server 2016 & 2019]
|
||||
ServerSolution [Server 2016 & 2019]
|
||||
ServerSolutionCor [Server 2016 & 2019]
|
||||
ServerStandard [Server 2016 & 2019]
|
||||
ServerStandardCor [Server 2016 & 2019]
|
||||
ServerAzureCor [Server 2016 & 2019]
|
||||
ServerDatacenterACor [All versions]
|
||||
ServerStandardACor [All versions]
|
||||
|
||||
|
||||
Note - X86-X64 and ARM64 architecture systems are supported.
|
||||
- Any Evaluation version of Windows and Server (i.e. 'EVAL' LTSB/C) cannot be activated.
|
||||
- KMS38 only supports Windows/server version 14393 (1607) and newer versions.
|
||||
|
||||
====================================================================================================
|
||||
Switches in the Script:
|
||||
====================================================================================================
|
||||
|
||||
- For unattended mode, run the script with /u parameter.
|
||||
|
||||
"KMS38_Activation.cmd" /u
|
||||
|
||||
====================================================================================================
|
||||
File Details:
|
||||
====================================================================================================
|
||||
|
||||
fabb5a0fc1e6a372219711152291339af36ed0b5 *gatherosstate.exe Virus Total = 0/71
|
||||
ca3a51fdfc8749b8be85f7904b1c238a6dfba135 *slc.dll Virus Total = 0/68
|
||||
578364cb2319da7999acd8c015b4ce8da8f1b282 *ARM64_gatherosstate.exe Virus Total = 0/69
|
||||
5dbea3a580cf60391453a04a5c910a3ceca2b810 *ARM64_slc.dll Virus Total = 0/67
|
||||
48d928b1bec25a56fe896c430c2c034b7866aa7a *ClipUp.exe Virus Total = 0/68
|
||||
|
||||
Virus Total Report Date: 2020-01-21
|
||||
|
||||
- File Sources:
|
||||
|
||||
- ClipUp.exe (Original):
|
||||
From Windows server 2016 x64 ISO
|
||||
|
||||
- gatherosstate.exe (Original):
|
||||
From Windows 10 x86 14393 ADK
|
||||
|
||||
- ARM64_gatherosstate.exe (Original):
|
||||
From Windows 10 ARM64 18362 ISO
|
||||
|
||||
- ARM64_slc.dll and slc.dll:
|
||||
|
||||
Original slshim
|
||||
https://github.com/vyvojar/slshim
|
||||
|
||||
Improved by @mspaintmsi
|
||||
https://www.nsaneforums.com/topic/316668--/?do=findComment&comment=1497887
|
||||
https://github.com/massgravel/MASSGRAVE
|
||||
https://gitlab.com/massgrave/massgrave
|
||||
|
||||
Source code is included.
|
||||
slc.dll is based on Integrated_Patcher_2 method.
|
||||
It is currently in use in HWID/KMS38 Activation script.
|
||||
|
||||
____________________________________________________________________________________________________
|
||||
|
||||
You can safely delete the following files if it's not required for you.
|
||||
|
||||
ClipUp.exe - Required to KMS38 activate Server Cor and Acor editions.
|
||||
ARM64_gatherosstate.exe and ARM64_slc.dll - Required to activate ARM64 Arch Windows 10.
|
||||
|
||||
====================================================================================================
|
||||
Manual Activation Process:
|
||||
====================================================================================================
|
||||
|
||||
- Prerequisite:
|
||||
|
||||
For Windows 10 / Server x86-x64 system, you need following files,
|
||||
48d928b1bec25a56fe896c430c2c034b7866aa7a *ClipUp.exe
|
||||
fabb5a0fc1e6a372219711152291339af36ed0b5 *gatherosstate.exe
|
||||
ca3a51fdfc8749b8be85f7904b1c238a6dfba135 *slc.dll
|
||||
* ClipUp.exe is only required to activate Server Cor and Acor editions.
|
||||
|
||||
For Windows 10 ARM64 system, you need following files,
|
||||
578364cb2319da7999acd8c015b4ce8da8f1b282 *ARM64_gatherosstate.exe
|
||||
5dbea3a580cf60391453a04a5c910a3ceca2b810 *ARM64_slc.dll
|
||||
* Rename the ARM64 files to gatherosstate.exe and slc.dll respectively.
|
||||
|
||||
Make a folder named 'Files' in C drive, [C:\Files] and copy the required files in that folder.
|
||||
|
||||
-------------------------------------------------------------------------------------------------
|
||||
|
||||
GVLK Windows 10 Editions
|
||||
|
||||
TX9XD-98N7V-6WMQ6-BX7FG-H8Q99 Core
|
||||
PVMJN-6DFY6-9CCP6-7BKTT-D3WVR CoreCountrySpecific
|
||||
3KHY7-WNT83-DGQKR-F7HPR-844BM CoreN
|
||||
7HNRX-D7KGG-3K4RQ-4WPJ4-YTDFH CoreSingleLanguage
|
||||
NW6C2-QMPVW-D7KKK-3GKT6-VCFB2 Education
|
||||
2WH4N-8QGBV-H22JP-CT43Q-MDWWJ EducationN
|
||||
NPPR9-FWDCX-D2C8J-H872K-2YT43 Enterprise
|
||||
YYVX9-NTFWV-6MDM3-9PT4T-4M68B EnterpriseG
|
||||
44RPN-FTY23-9VTTB-MP9BX-T84FV EnterpriseGN
|
||||
DPH2V-TTNVB-4X9Q3-TJR4H-KHJW4 EnterpriseN
|
||||
DCPHK-NFMTC-H88MJ-PFHPY-QJ4BJ EnterpriseS [LTSB 2016]
|
||||
M7XTQ-FN8P6-TTKYV-9D4CC-J462D EnterpriseS [LTSC 2019]
|
||||
QFFDN-GRT3P-VKWWX-X7T3R-8B639 EnterpriseSN [LTSB 2016]
|
||||
92NFX-8DJQP-P6BBQ-THF9C-7CG2H EnterpriseSN [LTSC 2019]
|
||||
W269N-WFGWX-YVC9B-4J6C9-T83GX Professional
|
||||
6TP4R-GNPTD-KYYHQ-7B7DP-J447Y ProfessionalEducation
|
||||
YVWGF-BXNMC-HTQYQ-CPQ99-66QFC ProfessionalEducationN
|
||||
MH37W-N47XK-V7XM9-C7227-GCQG9 ProfessionalN
|
||||
NRG8B-VKK3Q-CXVCJ-9G2XF-6Q84J ProfessionalWorkstation
|
||||
9FNHH-K3HBT-3W4TD-6383H-6XYWF ProfessionalWorkstationN
|
||||
7NBT4-WGBQX-MP4H7-QXFF8-YP3KX ServerRdsh [Less than 1809]
|
||||
CPWHC-NT2C7-VYW78-DHDB2-PG3GK ServerRdsh [Greater or Equal 1809]
|
||||
|
||||
GVLK Windows Server Editions
|
||||
|
||||
QN4C6-GBJD2-FB422-GHWJK-GJG2R ServerCloudStorage [Server 2016]
|
||||
CB7KF-BWN84-R7R2Y-793K2-8XDDG ServerDatacenter, ServerDatacenterCor [Server 2016]
|
||||
WMDGN-G9PQG-XVVXX-R3X43-63DFG ServerDatacenter, ServerDatacenterCor [Server 2019]
|
||||
JCKRF-N37P4-C2D82-9YXRT-4M63B ServerSolution, ServerSolutionCor [Server 2016]
|
||||
WVDHN-86M7X-466P6-VHXV7-YY726 ServerSolution, ServerSolutionCor [Server 2019]
|
||||
WC2BQ-8NRM3-FDDYY-2BFGV-KHKQY ServerStandard, ServerStandardCor [Server 2016]
|
||||
N69G4-B89J2-4G8F4-WWYCC-J464C ServerStandard, ServerStandardCor [Server 2019]
|
||||
VP34G-4NPPG-79JTQ-864T4-R3MQX ServerAzureCor [Server 2016]
|
||||
FDNH6-VW9RW-BXPJ7-4XTYG-239TB ServerAzureCor [Server 2019]
|
||||
6Y6KB-N82V8-D8CQV-23MJW-BWTG6 ServerDatacenterACor [Server 1709 and later]
|
||||
DPCNP-XQFKJ-BJF7R-FRC8D-GF6G4 ServerStandardACor [Server 1709 and later]
|
||||
|
||||
-------------------------------------------------------------------------------------------------
|
||||
|
||||
- Make sure to properly and completely remove any previously-installed KMS activator if one already exists.
|
||||
- Open CMD as Admin, and enter the following listed commands in the sequence in which they are given.
|
||||
- Enter Generic Volume License Key (GVLK) (Replace '%key%' with the key from the above list)
|
||||
with the following command:
|
||||
|
||||
cscript /nologo %windir%\system32\slmgr.vbs /ipk %key%
|
||||
|
||||
- Set specific KMS host to 127.0.0.2 [Localhost] with the following command: (Run one by one)
|
||||
- By doing this, the global KMS IP can not replace the KMS38 activation, and can then safely be used with MS Office
|
||||
and other Windows Editions.
|
||||
- It's optional.
|
||||
|
||||
set spp=SoftwareLicensingProduct
|
||||
for /f "tokens=2 delims==" %G in ('"wmic path %spp% where (Description like '%%KMSCLIENT%%' and Name like 'Windows%%' and PartialProductKey is not NULL) get ID /VALUE"') do (set app=%G)
|
||||
wmic path %spp% where ID='%app%' call ClearKeyManagementServiceMachine
|
||||
wmic path %spp% where ID='%app%' call ClearKeyManagementServicePort
|
||||
wmic path %spp% where ID='%app%' call SetKeyManagementServiceMachine MachineName="127.0.0.2"
|
||||
wmic path %spp% where ID='%app%' call SetKeyManagementServicePort 1688
|
||||
|
||||
- Make sure slc.dll and gatherosstate.exe files are located in the folder, "C:\Files" and enter
|
||||
following command to generate GenuineTicket.xml file.
|
||||
|
||||
call "C:\Files\gatherosstate.exe"
|
||||
|
||||
- Now a GenuineTicket.xml file should be created in the folder "C:\Files\", copy and paste this file in the
|
||||
folder named, "C:\ProgramData\Microsoft\Windows\ClipSVC\GenuineTicket\"
|
||||
|
||||
- Now apply this ticket using the following commands in this sequence:
|
||||
(In case of server cor and acor editions, copy the clipup.exe file to the folder "C:\Windows\System32\")
|
||||
|
||||
net stop ClipSVC
|
||||
net start ClipSVC
|
||||
|
||||
- Check the expiry date of the activation with the following command:
|
||||
|
||||
cscript /nologo %windir%\system32\slmgr.vbs /xpr
|
||||
|
||||
- If the expiry date is not in the year 2038, then enter the following command:
|
||||
|
||||
cscript /nologo %windir%\system32\slmgr.vbs /rearm-app 55c92734-d682-4d71-983e-d6ec3f16059f
|
||||
set spp=SoftwareLicensingProduct
|
||||
for /f "tokens=2 delims==" %G in ('"wmic path %spp% where (Description like '%%KMSCLIENT%%' and Name like 'Windows%%' and PartialProductKey is not NULL) get ID /VALUE"') do (set app=%G)
|
||||
cscript /nologo %windir%\system32\slmgr.vbs /rearm-sku %app%
|
||||
|
||||
- check expiry date again, now it should show activation until the year 2038.
|
||||
|
||||
- Done.
|
||||
|
||||
====================================================================================================
|
||||
Troubleshoot activation issues:
|
||||
====================================================================================================
|
||||
|
||||
- Make sure to completely remove any previously-installed KMS activators if any exist, before
|
||||
installing KMS38 activation.
|
||||
|
||||
- Reboot the system.
|
||||
|
||||
- Now run the script to activate Windows 10, and if unsuccessful,
|
||||
Try the troubleshoot button in settings activation page.
|
||||
If still unsuccessful then read additional troubleshoot options listed below.
|
||||
|
||||
--------------------------------------------
|
||||
|
||||
- Open CMD as Admin, and enter the following command:
|
||||
|
||||
Dism /online /Cleanup-Image /RestoreHealth
|
||||
|
||||
- After its done, reboot the system and Open CMD as Admin, and enter the following command:
|
||||
|
||||
sfc.exe /scannow
|
||||
|
||||
- After it's done, reboot the system and run the activation script, and if unsuccessful,
|
||||
open CMD as administrator again, and enter the following command:
|
||||
|
||||
slmgr.vbs /rearm
|
||||
|
||||
- Reboot the system (important) and run the activation script, and if unsuccessful,
|
||||
You may try to rebuild licensing Tokens.dat as suggested in https://support.microsoft.com/en-us/help/2736303
|
||||
(this will require to repair Office afterwards.)
|
||||
|
||||
- Reboot the system and run the activation script, and if unsuccessful,
|
||||
try cleaning the clipup using the following commands, it will reset all the HWID/KMS38 installed
|
||||
licences in the current system installation. open CMD as administrator again, and enter the
|
||||
following commands one by one:
|
||||
|
||||
net stop ClipSVC
|
||||
rundll32 clipc.dll,ClipCleanUpState
|
||||
|
||||
- Reboot the system (important) and run the activation script, and if unsuccessful, it may be
|
||||
time to start over from the very beginning and do a clean install of windows :D
|
||||
|
||||
----------------------------------------------------------------------------------------------------
|
||||
|
||||
- Some machines are not able to generate GenuineTicket.xml file using gatherosstate.exe
|
||||
The reason is unknown (to me). Please contact me if it happens to you.
|
||||
|
||||
=========================================================================================================
|
||||
Credits:
|
||||
=========================================================================================================
|
||||
|
||||
@mspaintmsi Original co-authors of HWID/KMS38 Activation without KMS or predecessor install/upgrade.
|
||||
and Created various methods for HWID/KMS38 Activation
|
||||
*Anonymous https://www.nsaneforums.com/topic/316668--/?do=findComment&comment=1497887
|
||||
https://github.com/massgravel/MASSGRAVE
|
||||
https://gitlab.com/massgrave/massgrave
|
||||
|
||||
@vyvojar Original slshim (slc.dll)
|
||||
https://github.com/vyvojar/slshim/releases
|
||||
|
||||
---------------------------------------------------------------------------------------------------------
|
||||
|
||||
HWID/KMS38 methods Suggestions and improvements:-
|
||||
|
||||
@sponpa New ideas for the HWID/KM38 Generation
|
||||
https://www.nsaneforums.com/topic/316668--/page/21/?tab=comments#comment-1431257
|
||||
|
||||
@leitek8 Improvements for the slc.dll
|
||||
https://www.nsaneforums.com/topic/316668--/page/22/?tab=comments#comment-1438005
|
||||
|
||||
---------------------------------------------------------------------------------------------------------
|
||||
|
||||
Kind Help:-
|
||||
|
||||
Thanks for having my back and answering all of my queries. (In no particular order)
|
||||
|
||||
@AveYo aka @BAU, @sponpa, @mspaintmsi @RPO, @leitek8, @mxman2k, @Yen, @abbodi1406
|
||||
|
||||
@BorrowedWifi for providing support in fixing English grammar errors in the Read Me.
|
||||
@Chibi ANUBIS and @smashed for testing scripts for ARM64 system.
|
||||
|
||||
Special thanks to @abbodi1406 for providing the great help.
|
||||
|
||||
---------------------------------------------------------------------------------------------------------
|
||||
|
||||
This script is a part of 'Microsoft Activation Scripts' project.
|
||||
|
||||
Homepages-
|
||||
NsaneForums: (Login Required) https://www.nsaneforums.com/topic/316668-microsoft-activation-scripts/
|
||||
GitHub: https://github.com/massgravel/Microsoft-Activation-Scripts
|
||||
GitLab: https://gitlab.com/massgrave/microsoft-activation-scripts
|
||||
|
||||
Maintained by @WindowsAddict
|
||||
|
||||
P.S. I (@WindowsAddict) did not help in the development of HWID/KMS38 Activation in any way, I only
|
||||
manage batch script tool which is based on the above mentioned original co-authors activation methods.
|
||||
|
||||
=========================================================================================================
|
Loading…
Add table
Add a link
Reference in a new issue