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:
WindowsAddict 2020-08-14 09:29:32 +05:30 committed by GitHub
parent 118379f292
commit d4b8f942ec
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
30 changed files with 32915 additions and 0 deletions

View file

@ -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.
====================================================================================================

View file

@ -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
::========================================================================================================================================

View file

@ -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
::========================================================================================================================================

View file

@ -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.
=========================================================================================================

View file

@ -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.
=========================================================================================================