Add files via upload
MAS 1.3 # HWID / KMS38 - Fixed a bug in Enterprise Edition activation. - Updated the ticket generation and applying process. # All - Added a project mirror on github. - Some minor improvementspull/1/head 1.3
							parent
							
								
									564d22662e
								
							
						
					
					
						commit
						b65004daf0
					
				
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
				
			
			@ -0,0 +1,239 @@
 | 
			
		|||
@setlocal DisableDelayedExpansion
 | 
			
		||||
@echo off
 | 
			
		||||
@cls
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
:: ==================================================
 | 
			
		||||
::  Check-Activation-Status-Alternative.cmd
 | 
			
		||||
::  Written by @abbodi1406 (MDL)
 | 
			
		||||
::  https://forums.mydigitallife.net/posts/838808
 | 
			
		||||
:: ==================================================
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
color 07
 | 
			
		||||
title Check Activation Status [wmic]
 | 
			
		||||
set wspp=SoftwareLicensingProduct
 | 
			
		||||
set wsps=SoftwareLicensingService
 | 
			
		||||
set ospp=OfficeSoftwareProtectionProduct
 | 
			
		||||
set osps=OfficeSoftwareProtectionService
 | 
			
		||||
set winApp=55c92734-d682-4d71-983e-d6ec3f16059f
 | 
			
		||||
set o14App=59a52881-a989-479d-af46-f275c6370663
 | 
			
		||||
set o15App=0ff1ce15-a989-479d-af46-f275c6370663
 | 
			
		||||
for %%# in (spp_get,ospp_get,cW1nd0ws,sppw,c0ff1ce15,sppo,osppsvc,ospp14,ospp15) do set "%%#="
 | 
			
		||||
for /f "tokens=6 delims=[]. " %%# in ('ver') do set winbuild=%%#
 | 
			
		||||
set "spp_get=Description, DiscoveredKeyManagementServiceMachineName, DiscoveredKeyManagementServiceMachinePort, EvaluationEndDate, GracePeriodRemaining, ID, KeyManagementServiceMachine, KeyManagementServicePort, KeyManagementServiceProductKeyID, LicenseStatus, LicenseStatusReason, Name, PartialProductKey, ProductKeyID, VLActivationInterval, VLRenewalInterval"
 | 
			
		||||
set "ospp_get=%spp_get%"
 | 
			
		||||
if %winbuild% geq 9200 set "spp_get=%spp_get%, DiscoveredKeyManagementServiceMachineIpAddress, KeyManagementServiceLookupDomain, ProductKeyChannel, VLActivationTypeEnabled"
 | 
			
		||||
 | 
			
		||||
set "SysPath=%Windir%\System32"
 | 
			
		||||
if exist "%Windir%\Sysnative\reg.exe" (set "SysPath=%Windir%\Sysnative")
 | 
			
		||||
set "Path=%SysPath%;%Windir%;%SysPath%\Wbem;%SysPath%\WindowsPowerShell\v1.0\"
 | 
			
		||||
set "line2=************************************************************"
 | 
			
		||||
set "line3=____________________________________________________________"
 | 
			
		||||
 | 
			
		||||
call :casWpkey %wspp% %winApp% cW1nd0ws sppw
 | 
			
		||||
if %winbuild% geq 9200 call :casWpkey %wspp% %o15App% c0ff1ce15 sppo
 | 
			
		||||
wmic path %osps% get Version 1>nul 2>nul && (
 | 
			
		||||
call :casWpkey %ospp% %o14App% osppsvc ospp14
 | 
			
		||||
if %winbuild% lss 9200 call :casWpkey %ospp% %o15App% osppsvc ospp15
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
echo %line2%
 | 
			
		||||
echo ***                   Windows Status                     ***
 | 
			
		||||
echo %line2%
 | 
			
		||||
if not defined cW1nd0ws (
 | 
			
		||||
echo:
 | 
			
		||||
echo Error: product key not found.
 | 
			
		||||
goto :casWcon
 | 
			
		||||
)
 | 
			
		||||
set winID=1
 | 
			
		||||
for /f "tokens=2 delims==" %%# in ('"wmic path %wspp% where (ApplicationID='%winApp%' and PartialProductKey is not null) get ID /value"') do (
 | 
			
		||||
  set "chkID=%%#"
 | 
			
		||||
  call :casWdet "%wspp%" "%wsps%" "%spp_get%"
 | 
			
		||||
  call :casWout
 | 
			
		||||
  echo %line3%
 | 
			
		||||
  echo:
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
:casWcon
 | 
			
		||||
set winID=0
 | 
			
		||||
set verbose=1
 | 
			
		||||
if not defined c0ff1ce15 (
 | 
			
		||||
if defined osppsvc goto :casWospp
 | 
			
		||||
goto :casWend
 | 
			
		||||
)
 | 
			
		||||
echo %line2%
 | 
			
		||||
echo ***                   Office Status                      ***
 | 
			
		||||
echo %line2%
 | 
			
		||||
for /f "tokens=2 delims==" %%# in ('"wmic path %wspp% where (ApplicationID='%o15App%' and PartialProductKey is not null) get ID /value"') do (
 | 
			
		||||
  set "chkID=%%#"
 | 
			
		||||
  call :casWdet "%wspp%" "%wsps%" "%spp_get%"
 | 
			
		||||
  call :casWout
 | 
			
		||||
  echo %line3%
 | 
			
		||||
  echo:
 | 
			
		||||
)
 | 
			
		||||
set verbose=0
 | 
			
		||||
if defined osppsvc goto :casWospp
 | 
			
		||||
goto :casWend
 | 
			
		||||
 | 
			
		||||
:casWospp
 | 
			
		||||
if %verbose%==1 (
 | 
			
		||||
echo %line2%
 | 
			
		||||
echo ***                   Office Status                      ***
 | 
			
		||||
echo %line2%
 | 
			
		||||
)
 | 
			
		||||
if defined ospp15 for /f "tokens=2 delims==" %%# in ('"wmic path %ospp% where (ApplicationID='%o15App%' and PartialProductKey is not null) get ID /value"') do (
 | 
			
		||||
  set "chkID=%%#"
 | 
			
		||||
  call :casWdet "%ospp%" "%osps%" "%ospp_get%"
 | 
			
		||||
  call :casWout
 | 
			
		||||
  echo %line3%
 | 
			
		||||
  echo:
 | 
			
		||||
)
 | 
			
		||||
if defined ospp14 for /f "tokens=2 delims==" %%# in ('"wmic path %ospp% where (ApplicationID='%o14App%' and PartialProductKey is not null) get ID /value"') do (
 | 
			
		||||
  set "chkID=%%#"
 | 
			
		||||
  call :casWdet "%ospp%" "%osps%" "%ospp_get%"
 | 
			
		||||
  call :casWout
 | 
			
		||||
  echo %line3%
 | 
			
		||||
  echo:
 | 
			
		||||
)
 | 
			
		||||
goto :casWend
 | 
			
		||||
 | 
			
		||||
:casWpkey
 | 
			
		||||
wmic path %1 where (ApplicationID='%2' and PartialProductKey is not null) get ID /value 2>nul | findstr /i ID 1>nul && (set %3=1&set %4=1)
 | 
			
		||||
exit /b
 | 
			
		||||
 | 
			
		||||
:casWdet
 | 
			
		||||
for %%# in (%~3) do set "%%#="
 | 
			
		||||
if %~1 equ %ospp% for %%# in (DiscoveredKeyManagementServiceMachineIpAddress, KeyManagementServiceLookupDomain, ProductKeyChannel, VLActivationTypeEnabled) do set "%%#="
 | 
			
		||||
set "cKmsClient="
 | 
			
		||||
set "cTblClient="
 | 
			
		||||
set "cAvmClient="
 | 
			
		||||
set "ExpireMsg="
 | 
			
		||||
set "_xpr="
 | 
			
		||||
for /f "tokens=* delims=" %%# in ('"wmic path %~1 where ID='%chkID%' get %~3 /value" ^| findstr ^=') do set "%%#"
 | 
			
		||||
 | 
			
		||||
set /a _gpr=(GracePeriodRemaining+1440-1)/1440
 | 
			
		||||
echo %Description%| findstr /i VOLUME_KMSCLIENT 1>nul && (set cKmsClient=1&set _mTag=Volume)
 | 
			
		||||
echo %Description%| findstr /i TIMEBASED_ 1>nul && (set cTblClient=1&set _mTag=Timebased)
 | 
			
		||||
echo %Description%| findstr /i VIRTUAL_MACHINE_ACTIVATION 1>nul && (set cAvmClient=1&set _mTag=Automatic VM)
 | 
			
		||||
cmd /c exit /b %LicenseStatusReason%
 | 
			
		||||
set "LicenseReason=%=ExitCode%"
 | 
			
		||||
set "LicenseMsg=Time remaining: %GracePeriodRemaining% minute(s) (%_gpr% day(s))"
 | 
			
		||||
if %_gpr% GEQ 1 for /f "tokens=* delims=" %%# in ('powershell -nop -ep bypass -c "$([DateTime]::Now.addMinutes(%GracePeriodRemaining%)).ToString('yyyy-MM-dd HH:mm:ss')" 2^>nul') do set "_xpr=%%#"
 | 
			
		||||
 | 
			
		||||
if %LicenseStatus% EQU 0 (
 | 
			
		||||
set "License=Unlicensed"
 | 
			
		||||
set "LicenseMsg="
 | 
			
		||||
)
 | 
			
		||||
if %LicenseStatus% EQU 1 (
 | 
			
		||||
set "License=Licensed"
 | 
			
		||||
set "LicenseMsg="
 | 
			
		||||
if %GracePeriodRemaining% EQU 0 (
 | 
			
		||||
  if %winID% EQU 1 (set "ExpireMsg=The machine is permanently activated.") else (set "ExpireMsg=The product is permanently activated.")
 | 
			
		||||
  ) else (
 | 
			
		||||
  set "LicenseMsg=%_mTag% activation expiration: %GracePeriodRemaining% minute(s) (%_gpr% day(s))"
 | 
			
		||||
  if defined _xpr set "ExpireMsg=%_mTag% activation will expire %_xpr%"
 | 
			
		||||
  )
 | 
			
		||||
)
 | 
			
		||||
if %LicenseStatus% EQU 2 (
 | 
			
		||||
set "License=Initial grace period"
 | 
			
		||||
if defined _xpr set "ExpireMsg=Initial grace period ends %_xpr%"
 | 
			
		||||
)
 | 
			
		||||
if %LicenseStatus% EQU 3 (
 | 
			
		||||
set "License=Additional grace period (KMS license expired or hardware out of tolerance)"
 | 
			
		||||
if defined _xpr set "ExpireMsg=Additional grace period ends %_xpr%"
 | 
			
		||||
)
 | 
			
		||||
if %LicenseStatus% EQU 4 (
 | 
			
		||||
set "License=Non-genuine grace period."
 | 
			
		||||
if defined _xpr set "ExpireMsg=Non-genuine grace period ends %_xpr%"
 | 
			
		||||
)
 | 
			
		||||
if %LicenseStatus% EQU 6 (
 | 
			
		||||
set "License=Extended grace period"
 | 
			
		||||
if defined _xpr set "ExpireMsg=Extended grace period ends %_xpr%"
 | 
			
		||||
)
 | 
			
		||||
if %LicenseStatus% EQU 5 (
 | 
			
		||||
set "License=Notification"
 | 
			
		||||
  if "%LicenseReason%"=="C004F200" (set "LicenseMsg=Notification Reason: 0xC004F200 (non-genuine)."
 | 
			
		||||
  ) else if "%LicenseReason%"=="C004F009" (set "LicenseMsg=Notification Reason: 0xC004F009 (grace time expired)."
 | 
			
		||||
  ) else (set "LicenseMsg=Notification Reason: 0x%LicenseReason%"
 | 
			
		||||
  )
 | 
			
		||||
)
 | 
			
		||||
if %LicenseStatus% GTR 6 (
 | 
			
		||||
set "License=Unknown"
 | 
			
		||||
set "LicenseMsg="
 | 
			
		||||
)
 | 
			
		||||
if not defined cKmsClient exit /b
 | 
			
		||||
 | 
			
		||||
if %KeyManagementServicePort%==0 set KeyManagementServicePort=1688
 | 
			
		||||
set "KmsReg=Registered KMS machine name: %KeyManagementServiceMachine%:%KeyManagementServicePort%"
 | 
			
		||||
if "%KeyManagementServiceMachine%"=="" set "KmsReg=Registered KMS machine name: KMS name not available"
 | 
			
		||||
 | 
			
		||||
if %DiscoveredKeyManagementServiceMachinePort%==0 set DiscoveredKeyManagementServiceMachinePort=1688
 | 
			
		||||
set "KmsDns=KMS machine name from DNS: %DiscoveredKeyManagementServiceMachineName%:%DiscoveredKeyManagementServiceMachinePort%"
 | 
			
		||||
if "%DiscoveredKeyManagementServiceMachineName%"=="" set "KmsDns=DNS auto-discovery: KMS name not available"
 | 
			
		||||
 | 
			
		||||
for /f "tokens=* delims=" %%# in ('"wmic path %~2 get ClientMachineID, KeyManagementServiceHostCaching /value" ^| findstr ^=') do set "%%#"
 | 
			
		||||
if /i %KeyManagementServiceHostCaching%==True (set KeyManagementServiceHostCaching=Enabled) else (set KeyManagementServiceHostCaching=Disabled)
 | 
			
		||||
 | 
			
		||||
if %winbuild% lss 9200 exit /b
 | 
			
		||||
if %~1 equ %ospp% exit /b
 | 
			
		||||
 | 
			
		||||
if "%DiscoveredKeyManagementServiceMachineIpAddress%"=="" set "DiscoveredKeyManagementServiceMachineIpAddress=not available"
 | 
			
		||||
 | 
			
		||||
if "%KeyManagementServiceLookupDomain%"=="" set "KeyManagementServiceLookupDomain="
 | 
			
		||||
 | 
			
		||||
if %VLActivationTypeEnabled% EQU 3 (
 | 
			
		||||
set VLActivationType=Token
 | 
			
		||||
) else if %VLActivationTypeEnabled% EQU 2 (
 | 
			
		||||
set VLActivationType=KMS
 | 
			
		||||
) else if %VLActivationTypeEnabled% EQU 1 (
 | 
			
		||||
set VLActivationType=AD
 | 
			
		||||
) else (
 | 
			
		||||
set VLActivationType=All
 | 
			
		||||
)
 | 
			
		||||
exit /b
 | 
			
		||||
 | 
			
		||||
:casWout
 | 
			
		||||
echo:
 | 
			
		||||
echo Name: %Name%
 | 
			
		||||
echo Description: %Description%
 | 
			
		||||
echo Activation ID: %ID%
 | 
			
		||||
echo Extended PID: %ProductKeyID%
 | 
			
		||||
if defined ProductKeyChannel echo Product Key Channel: %ProductKeyChannel%
 | 
			
		||||
echo Partial Product Key: %PartialProductKey%
 | 
			
		||||
echo License Status: %License%
 | 
			
		||||
if defined LicenseMsg echo %LicenseMsg%
 | 
			
		||||
if not %LicenseStatus%==0 if not %EvaluationEndDate:~0,8%==16010101 echo Evaluation End Date: %EvaluationEndDate:~0,4%-%EvaluationEndDate:~4,2%-%EvaluationEndDate:~6,2% %EvaluationEndDate:~8,2%:%EvaluationEndDate:~10,2% UTC
 | 
			
		||||
if not defined cKmsClient (
 | 
			
		||||
if defined ExpireMsg echo:&echo:    %ExpireMsg%
 | 
			
		||||
exit /b
 | 
			
		||||
)
 | 
			
		||||
if defined VLActivationTypeEnabled echo Configured Activation Type: %VLActivationType%
 | 
			
		||||
echo:
 | 
			
		||||
if not %LicenseStatus%==1 (
 | 
			
		||||
echo Please activate the product in order to update KMS client information values.
 | 
			
		||||
exit /b
 | 
			
		||||
)
 | 
			
		||||
echo Most recent activation information:
 | 
			
		||||
echo Key Management Service client information
 | 
			
		||||
echo:    Client Machine ID (CMID): %ClientMachineID%
 | 
			
		||||
echo:    %KmsDns%
 | 
			
		||||
echo:    %KmsReg%
 | 
			
		||||
if defined DiscoveredKeyManagementServiceMachineIpAddress echo:    KMS machine IP address: %DiscoveredKeyManagementServiceMachineIpAddress%
 | 
			
		||||
echo:    KMS machine extended PID: %KeyManagementServiceProductKeyID%
 | 
			
		||||
echo:    Activation interval: %VLActivationInterval% minutes
 | 
			
		||||
echo:    Renewal interval: %VLRenewalInterval% minutes
 | 
			
		||||
echo:    KMS host caching: %KeyManagementServiceHostCaching%
 | 
			
		||||
if defined KeyManagementServiceLookupDomain echo:    KMS SRV record lookup domain: %KeyManagementServiceLookupDomain%
 | 
			
		||||
if defined ExpireMsg echo:&echo:    %ExpireMsg%
 | 
			
		||||
exit /b
 | 
			
		||||
 | 
			
		||||
:casWend
 | 
			
		||||
echo:
 | 
			
		||||
echo Press any key to exit.
 | 
			
		||||
pause >nul
 | 
			
		||||
exit /b
 | 
			
		||||
										
											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,763 @@
 | 
			
		|||
@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 -nop -ep bypass -c"
 | 
			
		||||
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"
 | 
			
		||||
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"
 | 
			
		||||
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 -nop -ep bypass -c"
 | 
			
		||||
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]
 | 
			
		||||
   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.
 | 
			
		||||
        - LTSC 2019 is not supported.
 | 
			
		||||
 | 
			
		||||
====================================================================================================
 | 
			
		||||
   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]
 | 
			
		||||
   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.
 | 
			
		||||
 | 
			
		||||
=========================================================================================================
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
====================================================================================================
 | 
			
		||||
   File Details:
 | 
			
		||||
====================================================================================================
 | 
			
		||||
 | 
			
		||||
   d30a0e4e5911d3ca705617d17225372731c770e2 *cleanosppx64.exe                   Virus Total = 0/66
 | 
			
		||||
   39ed8659e7ca16aaccb86def94ce6cec4c847dd6 *cleanosppx86.exe                   Virus Total = 1/66
 | 
			
		||||
 | 
			
		||||
   Virus Total Report Date: 12-11-2019
 | 
			
		||||
   
 | 
			
		||||
   These files are official Microsoft files and in this script, these are used in 
 | 
			
		||||
   cleaning office license in C2R Retail office to VL conversion process.
 | 
			
		||||
   
 | 
			
		||||
   The source of these files is the 'old' version of Microsoft Tool O15CTRRemove.diagcab
 | 
			
		||||
   You can get the original file here https://s.put.re/WFuXpyWA.zip
 | 
			
		||||
 | 
			
		||||
====================================================================================================
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| 
						 | 
				
			
			@ -0,0 +1,657 @@
 | 
			
		|||
@setlocal DisableDelayedExpansion
 | 
			
		||||
@echo off
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
:: =======================================================================================================
 | 
			
		||||
::
 | 
			
		||||
::   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
 | 
			
		||||
::
 | 
			
		||||
:: =======================================================================================================
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
cls
 | 
			
		||||
set Unattended=
 | 
			
		||||
set _args=
 | 
			
		||||
set _elev=
 | 
			
		||||
set RenTask=
 | 
			
		||||
set RenActTask=
 | 
			
		||||
set DeskMenu=
 | 
			
		||||
set _SkipWinAct=
 | 
			
		||||
set _end=
 | 
			
		||||
set "_arg1=%~1"
 | 
			
		||||
if not defined _arg1 goto :NoProgArgs
 | 
			
		||||
set "_args=%~1"
 | 
			
		||||
set "_arg2=%~2"
 | 
			
		||||
set "_arg3=%~3"
 | 
			
		||||
if defined _arg2 set "_args=%~1 %~2"
 | 
			
		||||
if defined _arg3 set "_args=%~1 %~2 %~3"
 | 
			
		||||
for %%A in (%_args%) do (
 | 
			
		||||
if /i "%%A"=="-el" set _elev=1
 | 
			
		||||
if /i "%%A"=="/swa" set _SkipWinAct=1
 | 
			
		||||
if /i "%%A"=="/rt" set RenTask=1&set Unattended=1
 | 
			
		||||
if /i "%%A"=="/rat" set RenActTask=1&set Unattended=1
 | 
			
		||||
if /i "%%A"=="/dcm" set DeskMenu=1&set Unattended=1)
 | 
			
		||||
:NoProgArgs
 | 
			
		||||
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
 | 
			
		||||
set "_psc=powershell -nop -ep bypass -c"
 | 
			
		||||
set "nul=1>nul 2>nul"
 | 
			
		||||
set "EchoRed=%_psc% write-host -back Black -fore Red"
 | 
			
		||||
set "EchoGreen=%_psc% write-host -back Black -fore Green"
 | 
			
		||||
set "EchoYellow=%_psc% write-host -back Black -fore DarkYellow"
 | 
			
		||||
set "ELine=echo: & %EchoRed% ==== ERROR ==== &echo:"
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
for %%i in (powershell.exe) do if "%%~$path:i"=="" (
 | 
			
		||||
echo: &echo ==== ERROR ==== &echo:
 | 
			
		||||
echo Powershell is not installed in the system.
 | 
			
		||||
echo Aborting...
 | 
			
		||||
set _end=1
 | 
			
		||||
goto Done
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
if %winbuild% LSS 7600 (
 | 
			
		||||
%ELine%
 | 
			
		||||
echo Unsupported OS version Detected.
 | 
			
		||||
echo Project is supported only for Windows 7/8/8.1/10 and their Server equivalent.
 | 
			
		||||
set _end=1
 | 
			
		||||
goto 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 :Passed
 | 
			
		||||
  ) || (
 | 
			
		||||
  if defined _elev goto :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 :E_Admin
 | 
			
		||||
)
 | 
			
		||||
)
 | 
			
		||||
exit /b
 | 
			
		||||
 | 
			
		||||
:E_Admin
 | 
			
		||||
%ELine%
 | 
			
		||||
echo This script require administrator privileges.
 | 
			
		||||
echo To do so, right click on this script and select 'Run as administrator'.
 | 
			
		||||
set _end=1
 | 
			
		||||
goto Done
 | 
			
		||||
 | 
			
		||||
: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
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
if not exist "!_work!\Activate.cmd" (
 | 
			
		||||
%ELine%
 | 
			
		||||
echo File [Activate.cmd] does not exist in current folder..
 | 
			
		||||
echo It's required for the Task Creation.
 | 
			
		||||
set _end=1
 | 
			
		||||
goto Done
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
call :check cleanosppx64.exe cleanosppx86.exe
 | 
			
		||||
if defined _miss set _end=1&goto Done
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
set "_dest=%ProgramData%\Online_KMS_Activation"
 | 
			
		||||
set "key=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\taskcache\tasks"
 | 
			
		||||
 | 
			
		||||
:ActivationRenewal
 | 
			
		||||
 | 
			
		||||
cls
 | 
			
		||||
title Online KMS Activation Renewal
 | 
			
		||||
mode con cols=98 lines=30
 | 
			
		||||
set ActTask=
 | 
			
		||||
set error_=
 | 
			
		||||
set DelDeskCont=
 | 
			
		||||
set error_1=
 | 
			
		||||
 | 
			
		||||
if defined RenTask goto:Task
 | 
			
		||||
if defined RenActTask set ActTask=1&goto:Task
 | 
			
		||||
if defined DeskMenu goto:ContextMenu
 | 
			
		||||
echo:
 | 
			
		||||
echo:
 | 
			
		||||
echo:
 | 
			
		||||
echo                         You can apply the option [either 1 or 2] and [3].
 | 
			
		||||
echo                       ______________________________________________________
 | 
			
		||||
echo                      ^|                                                      ^|
 | 
			
		||||
echo                      ^|            Auto Renewal via Task Scheduler           ^|
 | 
			
		||||
echo                      ^|                                                      ^|
 | 
			
		||||
echo                      ^|   [1] Create Renewal Task                            ^|
 | 
			
		||||
echo                      ^|                                                      ^|
 | 
			
		||||
echo                      ^|   [2] Create Renewal and Activation Task             ^|
 | 
			
		||||
echo                      ^|______________________________________________________^|
 | 
			
		||||
echo                      ^|                                                      ^|
 | 
			
		||||
echo                      ^|        Manual Renewal via Desktop Context Menu       ^|
 | 
			
		||||
echo                      ^|                                                      ^|
 | 
			
		||||
echo                      ^|   [3] Add Desktop Context Menu                       ^|
 | 
			
		||||
echo                      ^|______________________________________________________^|
 | 
			
		||||
echo                      ^|                                                      ^|
 | 
			
		||||
echo                      ^|   [4] Exit                                           ^|
 | 
			
		||||
echo                      ^|                                                      ^|
 | 
			
		||||
echo                      ^|______________________________________________________^|
 | 
			
		||||
echo:
 | 
			
		||||
choice /C:1234 /N /M ".                     Enter Your Choice [1,2,3,4] : "
 | 
			
		||||
 | 
			
		||||
if errorlevel 4 exit /b
 | 
			
		||||
if errorlevel 3 goto:ContextMenu
 | 
			
		||||
if errorlevel 2 set ActTask=1&goto:Task
 | 
			
		||||
if errorlevel 1 goto:Task
 | 
			
		||||
 | 
			
		||||
:======================================================================================================================================================
 | 
			
		||||
 | 
			
		||||
:Task
 | 
			
		||||
 | 
			
		||||
cls
 | 
			
		||||
if defined ActTask (
 | 
			
		||||
title  Create Renewal And Activation Tasks
 | 
			
		||||
) else (
 | 
			
		||||
title  Create Renewal Task
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
reg query "%key%" /f Path /s | find /i "\Online_KMS_Activation_Script-Renewal" >nul && (
 | 
			
		||||
schtasks /delete /tn Online_KMS_Activation_Script-Renewal /f %nul%
 | 
			
		||||
)
 | 
			
		||||
reg query "%key%" /f Path /s | find /i "\Online_KMS_Activation_Script-Run_Once" >nul && (
 | 
			
		||||
schtasks /delete /tn Online_KMS_Activation_Script-Run_Once /f %nul%
 | 
			
		||||
)
 | 
			
		||||
If exist "%_dest%\" (
 | 
			
		||||
@RD /s /q "%_dest%\" %nul%
 | 
			
		||||
)
 | 
			
		||||
If exist "%windir%\Online_KMS_Activation_Script\" (
 | 
			
		||||
@RD /s /q "%windir%\Online_KMS_Activation_Script\" %nul%
 | 
			
		||||
)
 | 
			
		||||
If exist "%ProgramData%\Online_KMS_Activation.cmd" (
 | 
			
		||||
Reg delete "HKCR\DesktopBackground\shell\Activate Windows - Office" /f %nul%
 | 
			
		||||
del /f /q "%ProgramData%\Online_KMS_Activation.cmd" %nul%
 | 
			
		||||
set DelDeskCont=1
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
md "%_dest%\BIN\" %nul%
 | 
			
		||||
 | 
			
		||||
set "_temp=%SystemRoot%\Temp\_KMS_Task_Work"
 | 
			
		||||
if exist "%_temp%\" @RD /S /Q "%_temp%\" %nul%
 | 
			
		||||
md "%_temp%\" %nul%
 | 
			
		||||
 | 
			
		||||
call :Export renewal "%_temp%\Renewal.xml" Unicode
 | 
			
		||||
if defined ActTask (call :Export run_once "%_temp%\Run_Once.xml" Unicode)
 | 
			
		||||
 | 
			
		||||
call :Export info "%_dest%\Info.txt" ASCII
 | 
			
		||||
 | 
			
		||||
copy /y /b "!_work!\BIN\cleanosppx64.exe" "%_dest%\BIN\cleanosppx64.exe" %nul%
 | 
			
		||||
copy /y /b "!_work!\BIN\cleanosppx86.exe" "%_dest%\BIN\cleanosppx86.exe" %nul%
 | 
			
		||||
 | 
			
		||||
cd /d "!_work!"
 | 
			
		||||
 | 
			
		||||
if defined _SkipWinAct (
 | 
			
		||||
%nul% %_psc% "(gc Activate.cmd) -replace 'set ActWindows=1', 'set ActWindows=0' | Out-File -encoding ASCII "%_dest%\Activate.cmd"" || (set error_=1)
 | 
			
		||||
) else (
 | 
			
		||||
copy /y /b "!_work!\Activate.cmd" "%_dest%\Activate.cmd" %nul%
 | 
			
		||||
)
 | 
			
		||||
schtasks /create /tn "Online_KMS_Activation_Script-Renewal" /ru "SYSTEM" /xml "%_temp%\Renewal.xml" %nul%
 | 
			
		||||
if defined ActTask (schtasks /create /tn "Online_KMS_Activation_Script-Run_Once" /ru "SYSTEM" /xml "%_temp%\Run_Once.xml" %nul%)
 | 
			
		||||
 | 
			
		||||
if exist "%_temp%\" @RD /S /Q "%_temp%\" %nul%
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
reg query "%key%" /f Path /s | find /i "\Online_KMS_Activation_Script-Renewal" >nul || (set error_=1)
 | 
			
		||||
if defined ActTask reg query "%key%" /f Path /s | find /i "\Online_KMS_Activation_Script-Run_Once" >nul || (set error_=1)
 | 
			
		||||
 | 
			
		||||
If not exist "%_dest%\Activate.cmd" (set error_=1)
 | 
			
		||||
If not exist "%_dest%\Info.txt" (set error_=1)
 | 
			
		||||
If not exist "%_dest%\BIN\cleanosppx64.exe" (set error_=1)
 | 
			
		||||
If not exist "%_dest%\BIN\cleanosppx86.exe" (set error_=1)
 | 
			
		||||
 | 
			
		||||
if defined error_ (
 | 
			
		||||
reg query "%key%" /f Path /s | find /i "\Online_KMS_Activation_Script-Renewal" >nul && (
 | 
			
		||||
schtasks /delete /tn Online_KMS_Activation_Script-Renewal /f %nul%
 | 
			
		||||
)
 | 
			
		||||
reg query "%key%" /f Path /s | find /i "\Online_KMS_Activation_Script-Run_Once" >nul && (
 | 
			
		||||
schtasks /delete /tn Online_KMS_Activation_Script-Run_Once /f %nul%
 | 
			
		||||
)
 | 
			
		||||
reg delete "HKCR\DesktopBackground\shell\Activate Windows - Office" /f %nul%
 | 
			
		||||
If exist "%_dest%\" (
 | 
			
		||||
@RD /s /q "%_dest%\" %nul%
 | 
			
		||||
)
 | 
			
		||||
echo _________________________________________________________________
 | 
			
		||||
echo:
 | 
			
		||||
%ELine%
 | 
			
		||||
echo Run the Online KMS Complete Uninstall script and then try again.
 | 
			
		||||
echo _________________________________________________________________
 | 
			
		||||
) else (
 | 
			
		||||
echo:
 | 
			
		||||
echo __________________________________________________________________________________________
 | 
			
		||||
echo:
 | 
			
		||||
if defined DelDeskCont (
 | 
			
		||||
%EchoYellow% Previous desktop context menu entry for Online KMS Activation is deleted.
 | 
			
		||||
echo:
 | 
			
		||||
)
 | 
			
		||||
if defined _SkipWinAct (
 | 
			
		||||
%EchoYellow% %_dest%\Activate.cmd is set to skip Windows Activation.
 | 
			
		||||
echo:
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
echo Files created:
 | 
			
		||||
echo %_dest%\BIN\cleanosppx64.exe
 | 
			
		||||
echo %_dest%\BIN\cleanosppx86.exe
 | 
			
		||||
echo %_dest%\Activate.cmd
 | 
			
		||||
echo %_dest%\Info.txt
 | 
			
		||||
echo:
 | 
			
		||||
echo Scheduled Tasks created:
 | 
			
		||||
echo \Online_KMS_Activation_Script-Renewal
 | 
			
		||||
if defined ActTask (echo \Online_KMS_Activation_Script-Run_Once)
 | 
			
		||||
echo:
 | 
			
		||||
echo It's recommended to set exclusion for the following file in your Antivirus Program.
 | 
			
		||||
echo:
 | 
			
		||||
echo %_dest%\Activate.cmd
 | 
			
		||||
echo __________________________________________________________________________________________
 | 
			
		||||
echo:
 | 
			
		||||
if defined ActTask (
 | 
			
		||||
%EchoGreen% Online KMS Activation - Renewal and Activation Tasks are successfully created.
 | 
			
		||||
) else (
 | 
			
		||||
%EchoGreen% Online KMS Activation - Renewal Task is successfully created.
 | 
			
		||||
)
 | 
			
		||||
echo __________________________________________________________________________________________
 | 
			
		||||
echo:
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
goto Done
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
:ContextMenu
 | 
			
		||||
 | 
			
		||||
cls
 | 
			
		||||
title Add Desktop Context Menu
 | 
			
		||||
 | 
			
		||||
If exist "%ProgramData%\Online_KMS_Activation.cmd" (
 | 
			
		||||
del /f /q "%ProgramData%\Online_KMS_Activation.cmd" %nul%
 | 
			
		||||
set DelDeskCont=1
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
reg delete "HKCR\DesktopBackground\shell\Activate Windows - Office" /f %nul%
 | 
			
		||||
 | 
			
		||||
if exist "%_dest%\BIN\" (
 | 
			
		||||
@RD /s /q "%_dest%\BIN\" %nul%
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
md "%_dest%\BIN\" %nul%
 | 
			
		||||
copy /y /b "!_work!\BIN\cleanosppx64.exe" "%_dest%\BIN\cleanosppx64.exe" %nul%
 | 
			
		||||
copy /y /b "!_work!\BIN\cleanosppx86.exe" "%_dest%\BIN\cleanosppx86.exe" %nul%
 | 
			
		||||
 | 
			
		||||
if exist "%_dest%\Activate.cmd" (
 | 
			
		||||
del /f /q "%_dest%\Activate.cmd" %nul%
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
cd /d "!_work!"
 | 
			
		||||
 | 
			
		||||
if defined _SkipWinAct (
 | 
			
		||||
%nul% %_psc% "(gc Activate.cmd) -replace 'set ActWindows=1', 'set ActWindows=0' | Out-File -encoding ASCII "%_dest%\Activate.cmd"" || (set error_=1)
 | 
			
		||||
) else (
 | 
			
		||||
copy /y /b "!_work!\Activate.cmd" "%_dest%\Activate.cmd" %nul%
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
if exist "%_dest%\Info.txt" (
 | 
			
		||||
del /f /q "%_dest%\Info.txt" %nul%
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
call :Export info "%_dest%\Info.txt" ASCII
 | 
			
		||||
 | 
			
		||||
reg add "HKCR\DesktopBackground\shell\Activate Windows - Office" /v "Icon" /t REG_SZ /d "%SystemRoot%%\System32\shell32.dll,71" /f >nul 2>&1 || (set error_1=1)
 | 
			
		||||
reg add "HKCR\DesktopBackground\shell\Activate Windows - Office\command" /ve /d "%_dest%\Activate.cmd" /f %nul% || (set error_1=1)
 | 
			
		||||
 | 
			
		||||
If not exist "%_dest%\Activate.cmd" (set error_=1)
 | 
			
		||||
If not exist "%_dest%\Info.txt" (set error_=1)
 | 
			
		||||
If not exist "%_dest%\BIN\cleanosppx64.exe" (set error_=1)
 | 
			
		||||
If not exist "%_dest%\BIN\cleanosppx86.exe" (set error_=1)
 | 
			
		||||
 | 
			
		||||
reg query "HKCR\DesktopBackground\shell\Activate Windows - Office" %nul% || (set error_1=1)
 | 
			
		||||
 | 
			
		||||
if defined error_1 (
 | 
			
		||||
reg query "%key%" /f Path /s | find /i "\Online_KMS_Activation_Script-Renewal" >nul && (
 | 
			
		||||
schtasks /delete /tn Online_KMS_Activation_Script-Renewal /f %nul%
 | 
			
		||||
)
 | 
			
		||||
reg query "%key%" /f Path /s | find /i "\Online_KMS_Activation_Script-Run_Once" >nul && (
 | 
			
		||||
schtasks /delete /tn Online_KMS_Activation_Script-Run_Once /f %nul%
 | 
			
		||||
)
 | 
			
		||||
reg delete "HKCR\DesktopBackground\shell\Activate Windows - Office" /f %nul%
 | 
			
		||||
If exist "%_dest%\" (
 | 
			
		||||
@RD /s /q "%_dest%\" %nul%
 | 
			
		||||
)
 | 
			
		||||
echo _________________________________________________________________
 | 
			
		||||
echo:
 | 
			
		||||
%ELine%
 | 
			
		||||
echo Run the Online KMS Complete Uninstall script and then try again.
 | 
			
		||||
echo _________________________________________________________________
 | 
			
		||||
) else (
 | 
			
		||||
echo:
 | 
			
		||||
echo __________________________________________________________________________________________
 | 
			
		||||
echo:
 | 
			
		||||
if defined DelDeskCont (
 | 
			
		||||
%EchoYellow% Previous desktop context menu entry for Online KMS Activation is deleted.
 | 
			
		||||
echo:
 | 
			
		||||
)
 | 
			
		||||
if defined _SkipWinAct (
 | 
			
		||||
%EchoYellow% %_dest%\Activate.cmd is set to skip Windows Activation.
 | 
			
		||||
echo:
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
echo Files created:
 | 
			
		||||
echo %_dest%\BIN\cleanosppx64.exe
 | 
			
		||||
echo %_dest%\BIN\cleanosppx86.exe
 | 
			
		||||
echo %_dest%\Activate.cmd
 | 
			
		||||
echo %_dest%\Info.txt
 | 
			
		||||
echo:
 | 
			
		||||
echo Registry entry added:
 | 
			
		||||
echo HKCR\DesktopBackground\shell\Activate Windows - Office
 | 
			
		||||
echo HKCR\DesktopBackground\shell\Activate Windows - Office\command
 | 
			
		||||
echo __________________________________________________________________________________________
 | 
			
		||||
echo:
 | 
			
		||||
%EchoGreen% Desktop context menu entry for Online KMS Activation is successfully created.
 | 
			
		||||
echo __________________________________________________________________________________________
 | 
			
		||||
echo:
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
: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
 | 
			
		||||
)
 | 
			
		||||
if defined _end (
 | 
			
		||||
echo Press any key to exit...
 | 
			
		||||
pause >nul
 | 
			
		||||
exit /b
 | 
			
		||||
) else (
 | 
			
		||||
echo Press any key to go back...
 | 
			
		||||
pause >nul
 | 
			
		||||
goto ActivationRenewal
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
:info:
 | 
			
		||||
====================================================================================================
 | 
			
		||||
   Online KMS Activation:
 | 
			
		||||
====================================================================================================
 | 
			
		||||
 | 
			
		||||
   The use of this script is to activate / renew your Windows /Server /Office license 
 | 
			
		||||
   using online KMS.
 | 
			
		||||
   
 | 
			
		||||
 - Scheduled task name (If Renewal Task is created) (Weekly).
 | 
			
		||||
   \Online_KMS_Activation_Script-Renewal
 | 
			
		||||
 | 
			
		||||
 - Scheduled task name (If Activation Task is created).
 | 
			
		||||
   \Online_KMS_Activation_Script-Run_Once
 | 
			
		||||
 | 
			
		||||
   The scheduled task runs only if the system is connected to the Internet.
 | 
			
		||||
   Activation Task will run on the system login and after successful activation, this task will 
 | 
			
		||||
   delete itself.
 | 
			
		||||
   
 | 
			
		||||
 - If system preactivation is done via HWID + Online KMS, and HWID was applied but was not 
 | 
			
		||||
   successful due to lack of internet at the time of installation of Windows, in that case, 
 | 
			
		||||
   Online KMS script will be set to skip Windows activation.
 | 
			
		||||
 | 
			
		||||
 - Registry entry name and location (If desktop context menu is created).
 | 
			
		||||
   HKCR\DesktopBackground\shell\Activate Windows - Office
 | 
			
		||||
 | 
			
		||||
   For complete script and more info, browse the script homepage.
 | 
			
		||||
 | 
			
		||||
====================================================================================================
 | 
			
		||||
   File Details:
 | 
			
		||||
====================================================================================================
 | 
			
		||||
 | 
			
		||||
   d30a0e4e5911d3ca705617d17225372731c770e2 *cleanosppx64.exe                   Virus Total = 0/66
 | 
			
		||||
   39ed8659e7ca16aaccb86def94ce6cec4c847dd6 *cleanosppx86.exe                   Virus Total = 1/66
 | 
			
		||||
 | 
			
		||||
   Virus Total Report Date: 12-11-2019
 | 
			
		||||
   
 | 
			
		||||
   These files are official Microsoft files and in this script, these are used in 
 | 
			
		||||
   cleaning office license in C2R Retail office to VL conversion process.
 | 
			
		||||
   
 | 
			
		||||
   The source of these files is the 'old' version of Microsoft Tool O15CTRRemove.diagcab
 | 
			
		||||
   You can get the original file here https://s.put.re/WFuXpyWA.zip
 | 
			
		||||
 | 
			
		||||
====================================================================================================
 | 
			
		||||
 | 
			
		||||
   Online KMS Activation script is just a fork of @abbodi1406's KMS_VL_ALL Project.
 | 
			
		||||
   KMS_VL_ALL homepage: https://forums.mydigitallife.net/posts/838808
 | 
			
		||||
 | 
			
		||||
   This fork was made to avoid having any KMS binary files and system can be activated using 
 | 
			
		||||
   some manual commands or transparent batch script files.
 | 
			
		||||
 | 
			
		||||
   Online KMS Activation script is a part of 'Microsoft Activation Scripts'
 | 
			
		||||
   Maintained by @WindowsAddict
 | 
			
		||||
 | 
			
		||||
   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
 | 
			
		||||
 | 
			
		||||
====================================================================================================
 | 
			
		||||
:info:
 | 
			
		||||
 | 
			
		||||
:renewal:
 | 
			
		||||
<?xml version="1.0" encoding="UTF-16"?>
 | 
			
		||||
<Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
 | 
			
		||||
  <RegistrationInfo>
 | 
			
		||||
    <Source>Microsoft Corporation</Source>
 | 
			
		||||
    <Date>1999-01-01T12:00:00.34375</Date>
 | 
			
		||||
    <Author>RPO/WindowsAddict</Author>
 | 
			
		||||
    <Version>1.0</Version>
 | 
			
		||||
    <Description>Online_KMS_Activation_Script-Renewal - Weekly Activation Renewal Task</Description>
 | 
			
		||||
    <URI>\Online_KMS_Activation_Script-Renewal</URI>
 | 
			
		||||
    <SecurityDescriptor>D:P(A;;FA;;;SY)(A;;FA;;;BA)(A;;FRFX;;;LS)(A;;FRFW;;;S-1-5-80-123231216-2592883651-3715271367-3753151631-4175906628)(A;;FR;;;S-1-5-4)</SecurityDescriptor>
 | 
			
		||||
  </RegistrationInfo>
 | 
			
		||||
  <Triggers>
 | 
			
		||||
    <CalendarTrigger>
 | 
			
		||||
      <StartBoundary>1999-01-01T12:00:00</StartBoundary>
 | 
			
		||||
      <Enabled>true</Enabled>
 | 
			
		||||
      <ScheduleByWeek>
 | 
			
		||||
        <DaysOfWeek>
 | 
			
		||||
          <Sunday />
 | 
			
		||||
        </DaysOfWeek>
 | 
			
		||||
        <WeeksInterval>1</WeeksInterval>
 | 
			
		||||
      </ScheduleByWeek>
 | 
			
		||||
    </CalendarTrigger>
 | 
			
		||||
  </Triggers>
 | 
			
		||||
  <Principals>
 | 
			
		||||
    <Principal id="LocalSystem">
 | 
			
		||||
      <UserId>S-1-5-18</UserId>
 | 
			
		||||
      <RunLevel>HighestAvailable</RunLevel>
 | 
			
		||||
    </Principal>
 | 
			
		||||
  </Principals>
 | 
			
		||||
  <Settings>
 | 
			
		||||
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
 | 
			
		||||
    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
 | 
			
		||||
    <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>
 | 
			
		||||
    <AllowHardTerminate>true</AllowHardTerminate>
 | 
			
		||||
    <StartWhenAvailable>true</StartWhenAvailable>
 | 
			
		||||
    <RunOnlyIfNetworkAvailable>true</RunOnlyIfNetworkAvailable>
 | 
			
		||||
    <IdleSettings>
 | 
			
		||||
      <StopOnIdleEnd>false</StopOnIdleEnd>
 | 
			
		||||
      <RestartOnIdle>false</RestartOnIdle>
 | 
			
		||||
    </IdleSettings>
 | 
			
		||||
    <AllowStartOnDemand>true</AllowStartOnDemand>
 | 
			
		||||
    <Enabled>true</Enabled>
 | 
			
		||||
    <Hidden>true</Hidden>
 | 
			
		||||
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
 | 
			
		||||
    <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
 | 
			
		||||
    <UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine>
 | 
			
		||||
    <WakeToRun>false</WakeToRun>
 | 
			
		||||
    <ExecutionTimeLimit>PT10M</ExecutionTimeLimit>
 | 
			
		||||
    <Priority>7</Priority>
 | 
			
		||||
    <RestartOnFailure>
 | 
			
		||||
      <Interval>PT2M</Interval>
 | 
			
		||||
      <Count>3</Count>
 | 
			
		||||
    </RestartOnFailure>
 | 
			
		||||
  </Settings>
 | 
			
		||||
  <Actions Context="LocalSystem">
 | 
			
		||||
    <Exec>
 | 
			
		||||
      <Command>%ProgramData%\Online_KMS_Activation\Activate.cmd</Command>
 | 
			
		||||
    <Arguments>Task</Arguments>
 | 
			
		||||
    </Exec>
 | 
			
		||||
  </Actions>
 | 
			
		||||
</Task>
 | 
			
		||||
:renewal:
 | 
			
		||||
 | 
			
		||||
:run_once:
 | 
			
		||||
<?xml version="1.0" encoding="UTF-16"?>
 | 
			
		||||
<Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
 | 
			
		||||
  <RegistrationInfo>
 | 
			
		||||
    <Source>Microsoft Corporation</Source>
 | 
			
		||||
    <Date>1999-01-01T12:00:00.34375</Date>
 | 
			
		||||
    <Author>RPO/WindowsAddict</Author>
 | 
			
		||||
    <Version>1.0</Version>
 | 
			
		||||
    <Description>Online_KMS_Activation_Script-Run_Once - Run and Delete itself on first Internet Contact</Description>
 | 
			
		||||
    <URI>\Online_KMS_Activation_Script-Run_Once</URI>
 | 
			
		||||
    <SecurityDescriptor>D:P(A;;FA;;;SY)(A;;FA;;;BA)(A;;FRFX;;;LS)(A;;FRFW;;;S-1-5-80-123231216-2592883651-3715271367-3753151631-4175906628)(A;;FR;;;S-1-5-4)</SecurityDescriptor>
 | 
			
		||||
  </RegistrationInfo>
 | 
			
		||||
  <Triggers>
 | 
			
		||||
    <LogonTrigger>
 | 
			
		||||
      <Enabled>true</Enabled>
 | 
			
		||||
    </LogonTrigger>
 | 
			
		||||
  </Triggers>
 | 
			
		||||
  <Principals>
 | 
			
		||||
    <Principal id="LocalSystem">
 | 
			
		||||
      <UserId>S-1-5-18</UserId>
 | 
			
		||||
      <RunLevel>HighestAvailable</RunLevel>
 | 
			
		||||
    </Principal>
 | 
			
		||||
  </Principals>
 | 
			
		||||
  <Settings>
 | 
			
		||||
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
 | 
			
		||||
    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
 | 
			
		||||
    <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>
 | 
			
		||||
    <AllowHardTerminate>true</AllowHardTerminate>
 | 
			
		||||
    <StartWhenAvailable>true</StartWhenAvailable>
 | 
			
		||||
    <RunOnlyIfNetworkAvailable>true</RunOnlyIfNetworkAvailable>
 | 
			
		||||
    <IdleSettings>
 | 
			
		||||
      <StopOnIdleEnd>false</StopOnIdleEnd>
 | 
			
		||||
      <RestartOnIdle>false</RestartOnIdle>
 | 
			
		||||
    </IdleSettings>
 | 
			
		||||
    <AllowStartOnDemand>true</AllowStartOnDemand>
 | 
			
		||||
    <Enabled>true</Enabled>
 | 
			
		||||
    <Hidden>true</Hidden>
 | 
			
		||||
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
 | 
			
		||||
    <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
 | 
			
		||||
    <UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine>
 | 
			
		||||
    <WakeToRun>false</WakeToRun>
 | 
			
		||||
    <ExecutionTimeLimit>PT10M</ExecutionTimeLimit>
 | 
			
		||||
    <Priority>7</Priority>
 | 
			
		||||
    <RestartOnFailure>
 | 
			
		||||
      <Interval>PT2M</Interval>
 | 
			
		||||
      <Count>3</Count>
 | 
			
		||||
    </RestartOnFailure>
 | 
			
		||||
  </Settings>
 | 
			
		||||
  <Actions Context="LocalSystem">
 | 
			
		||||
    <Exec>
 | 
			
		||||
      <Command>%ProgramData%\Online_KMS_Activation\Activate.cmd</Command>
 | 
			
		||||
    <Arguments>Task</Arguments>
 | 
			
		||||
    </Exec>
 | 
			
		||||
  </Actions>
 | 
			
		||||
</Task>
 | 
			
		||||
:run_once:
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
::  Echo all the missing files.
 | 
			
		||||
::  Written by @abbodi1406 (MDL)
 | 
			
		||||
 | 
			
		||||
: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
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
::  Extract the text from batch script without character and file encoding issue
 | 
			
		||||
::  Thanks to @abbodi1406
 | 
			
		||||
 | 
			
		||||
:Export
 | 
			
		||||
%nul% %_psc% "$f=[io.file]::ReadAllText('!_batp!') -split \":%~1\:.*`r`n\"; [io.file]::WriteAllText('%~2',$f[1].Trim(),[System.Text.Encoding]::%~3);" &exit/b
 | 
			
		||||
exit /b
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,264 @@
 | 
			
		|||
@setlocal DisableDelayedExpansion
 | 
			
		||||
@echo off
 | 
			
		||||
 | 
			
		||||
:: For unattended mode, run the script with /u parameter.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
:: =======================================================================================================
 | 
			
		||||
::
 | 
			
		||||
::   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
 | 
			
		||||
::
 | 
			
		||||
:: =======================================================================================================
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
cls
 | 
			
		||||
title Online KMS Complete Uninstall
 | 
			
		||||
set Unattended=
 | 
			
		||||
set _args=
 | 
			
		||||
set _elev=
 | 
			
		||||
set "_arg1=%~1"
 | 
			
		||||
if not defined _arg1 goto :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)
 | 
			
		||||
:NoProgArgs
 | 
			
		||||
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
 | 
			
		||||
set "_psc=powershell -nop -ep bypass -c"
 | 
			
		||||
set "nul=1>nul 2>nul"
 | 
			
		||||
set "EchoRed=%_psc% write-host -back Black -fore Red"
 | 
			
		||||
set "EchoGreen=%_psc% write-host -back Black -fore Green"
 | 
			
		||||
set "ELine=echo: & %EchoRed% ==== ERROR ==== &echo:"
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
for %%i in (powershell.exe) do if "%%~$path:i"=="" (
 | 
			
		||||
echo: &echo ==== ERROR ==== &echo:
 | 
			
		||||
echo Powershell is not installed in the system.
 | 
			
		||||
echo Aborting...
 | 
			
		||||
goto UN_Done
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
if %winbuild% LSS 7600 (
 | 
			
		||||
%ELine%
 | 
			
		||||
echo Unsupported OS version Detected.
 | 
			
		||||
echo Project is supported only for Windows 7/8/8.1/10 and their Server equivalent.
 | 
			
		||||
goto UN_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 :Passed
 | 
			
		||||
  ) || (
 | 
			
		||||
  if defined _elev goto :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 :E_Admin
 | 
			
		||||
)
 | 
			
		||||
)
 | 
			
		||||
exit /b
 | 
			
		||||
 | 
			
		||||
:E_Admin
 | 
			
		||||
%ELine%
 | 
			
		||||
echo This script require administrator privileges.
 | 
			
		||||
echo To do so, right click on this script and select 'Run as administrator'.
 | 
			
		||||
goto UN_Done
 | 
			
		||||
 | 
			
		||||
:Passed
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
mode con: cols=98 lines=30
 | 
			
		||||
setlocal EnableDelayedExpansion
 | 
			
		||||
set "key=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\taskcache\tasks"
 | 
			
		||||
 | 
			
		||||
reg query "%key%" /f Path /s | find /i "\Online_KMS_Activation_Script-Renewal" >nul && (
 | 
			
		||||
echo Deleting [Task] Online_KMS_Activation_Script-Renewal
 | 
			
		||||
schtasks /delete /tn Online_KMS_Activation_Script-Renewal /f %nul%
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
reg query "%key%" /f Path /s | find /i "\Online_KMS_Activation_Script-Run_Once" >nul && (
 | 
			
		||||
echo Deleting [Task] Online_KMS_Activation_Script-Run_Once
 | 
			
		||||
schtasks /delete /tn Online_KMS_Activation_Script-Run_Once /f %nul%
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
If exist "%windir%\Online_KMS_Activation_Script\" (
 | 
			
		||||
echo Deleting [Folder] %windir%\Online_KMS_Activation_Script\
 | 
			
		||||
@RD /s /q "%windir%\Online_KMS_Activation_Script\" %nul%
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
If exist "%ProgramData%\Online_KMS_Activation\" (
 | 
			
		||||
echo Deleting [Folder] %ProgramData%\Online_KMS_Activation\
 | 
			
		||||
@RD /s /q "%ProgramData%\Online_KMS_Activation\" %nul%
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
if exist "%ProgramData%\Online_KMS_Activation.cmd" (
 | 
			
		||||
echo Deleting [File] %ProgramData%\Online_KMS_Activation.cmd
 | 
			
		||||
del /f /q "%ProgramData%\Online_KMS_Activation.cmd" %nul%
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
reg query "HKCR\DesktopBackground\shell\Activate Windows - Office" %nul% && (
 | 
			
		||||
echo Deleting [Context Menu Registry] HKCR\DesktopBackground\shell\Activate Windows - Office
 | 
			
		||||
Reg delete "HKCR\DesktopBackground\shell\Activate Windows - Office" /f %nul%
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
echo:
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
::  Clear-KMS-Cache.cmd  
 | 
			
		||||
::  https://forums.mydigitallife.net/posts/1511883
 | 
			
		||||
::  Written by @abbodi1406 (MDL)
 | 
			
		||||
 | 
			
		||||
set "SysPath=%Windir%\System32"
 | 
			
		||||
if exist "%Windir%\Sysnative\reg.exe" (set "SysPath=%Windir%\Sysnative")
 | 
			
		||||
set "Path=%SysPath%;%Windir%;%SysPath%\Wbem;%SysPath%\WindowsPowerShell\v1.0\"
 | 
			
		||||
set "OSPP=SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform"
 | 
			
		||||
set "SPPk=SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform"
 | 
			
		||||
wmic path SoftwareLicensingProduct where (Description like '%%KMSCLIENT%%') get Name 2>nul | findstr /i Windows 1>nul && (set SppHook=1) || (set SppHook=0)
 | 
			
		||||
wmic path SoftwareLicensingProduct where (Description like '%%KMSCLIENT%%') get Name 2>nul | findstr /i Office 1>nul && (set SppHook=1)
 | 
			
		||||
wmic path OfficeSoftwareProtectionService get Version >nul 2>&1 && (set OsppHook=1) || (set OsppHook=0)
 | 
			
		||||
if %SppHook% NEQ 0 call :UN_cKMS SoftwareLicensingProduct SoftwareLicensingService SPP
 | 
			
		||||
if %OsppHook% NEQ 0 call :UN_cKMS OfficeSoftwareProtectionProduct OfficeSoftwareProtectionService OSPP
 | 
			
		||||
call :UN_cREG >nul 2>&1
 | 
			
		||||
echo:
 | 
			
		||||
goto UN_Verify
 | 
			
		||||
 | 
			
		||||
:UN_cKMS
 | 
			
		||||
echo Clearing %3 KMS Cache...
 | 
			
		||||
set spp=%1
 | 
			
		||||
set sps=%2
 | 
			
		||||
for /f "tokens=2 delims==" %%G in ('"wmic path %spp% where (Description like '%%KMSCLIENT%%') get ID /VALUE" 2^>nul') do (set app=%%G&call :UN_cAPP)
 | 
			
		||||
for /f "tokens=2 delims==" %%A in ('"wmic path %sps% get Version /VALUE"') do set ver=%%A
 | 
			
		||||
wmic path %sps% where version='%ver%' call ClearKeyManagementServiceMachine >nul 2>&1
 | 
			
		||||
wmic path %sps% where version='%ver%' call ClearKeyManagementServicePort >nul 2>&1
 | 
			
		||||
wmic path %sps% where version='%ver%' call DisableKeyManagementServiceDnsPublishing 1 >nul 2>&1
 | 
			
		||||
wmic path %sps% where version='%ver%' call DisableKeyManagementServiceHostCaching 1 >nul 2>&1
 | 
			
		||||
goto :eof
 | 
			
		||||
 | 
			
		||||
:UN_cAPP
 | 
			
		||||
wmic path %spp% where ID='%app%' call ClearKeyManagementServiceMachine >nul 2>&1
 | 
			
		||||
wmic path %spp% where ID='%app%' call ClearKeyManagementServicePort >nul 2>&1
 | 
			
		||||
goto :eof
 | 
			
		||||
 | 
			
		||||
:UN_cREG
 | 
			
		||||
reg delete "HKLM\%SPPk%\55c92734-d682-4d71-983e-d6ec3f16059f" /f
 | 
			
		||||
reg delete "HKLM\%SPPk%\0ff1ce15-a989-479d-af46-f275c6370663" /f
 | 
			
		||||
reg delete "HKLM\%SPPk%" /f /v KeyManagementServiceName
 | 
			
		||||
reg delete "HKLM\%SPPk%" /f /v KeyManagementServicePort
 | 
			
		||||
reg delete "HKU\S-1-5-20\%SPPk%\55c92734-d682-4d71-983e-d6ec3f16059f" /f
 | 
			
		||||
reg delete "HKU\S-1-5-20\%SPPk%\0ff1ce15-a989-479d-af46-f275c6370663" /f
 | 
			
		||||
reg delete "HKLM\%OSPP%\59a52881-a989-479d-af46-f275c6370663" /f
 | 
			
		||||
reg delete "HKLM\%OSPP%\0ff1ce15-a989-479d-af46-f275c6370663" /f
 | 
			
		||||
reg delete "HKLM\%OSPP%" /f /v KeyManagementServiceName
 | 
			
		||||
reg delete "HKLM\%OSPP%" /f /v KeyManagementServicePort
 | 
			
		||||
if %OsppHook% NEQ 1 (
 | 
			
		||||
reg delete "HKLM\%OSPP%" /f
 | 
			
		||||
reg delete "HKU\S-1-5-20\%OSPP%" /f
 | 
			
		||||
)
 | 
			
		||||
goto :eof
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
:UN_Verify
 | 
			
		||||
 | 
			
		||||
set error_=
 | 
			
		||||
reg query "%key%" /f Path /s | find /i "\Online_KMS_Activation_Script-Renewal" >nul && (set error_=1)
 | 
			
		||||
reg query "%key%" /f Path /s | find /i "\Online_KMS_Activation_Script-Run_Once" >nul && (set error_=1)
 | 
			
		||||
If exist "%windir%\Online_KMS_Activation_Script\" (set error_=1)
 | 
			
		||||
if exist "%ProgramData%\Online_KMS_Activation\" (set error_=1)
 | 
			
		||||
 | 
			
		||||
reg query "HKCR\DesktopBackground\shell\Activate Windows - Office" >nul 2>&1 && (set error_=1)
 | 
			
		||||
if exist "%ProgramData%\Online_KMS_Activation.cmd" (set error_=1)
 | 
			
		||||
 | 
			
		||||
if defined error_ (
 | 
			
		||||
echo ______________________________________
 | 
			
		||||
%ELine%
 | 
			
		||||
echo Try Again.
 | 
			
		||||
echo ______________________________________
 | 
			
		||||
) else (
 | 
			
		||||
echo _________________________________________________________________
 | 
			
		||||
echo:
 | 
			
		||||
%EchoGreen% Online KMS Complete Uninstall is done successfully.
 | 
			
		||||
echo _________________________________________________________________
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
:UN_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
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,657 @@
 | 
			
		|||
====================================================================================================
 | 
			
		||||
 | 
			
		||||
   Online KMS Activation script is just a fork of @abbodi1406's KMS_VL_ALL Project.
 | 
			
		||||
   KMS_VL_ALL homepage: https://forums.mydigitallife.net/posts/838808
 | 
			
		||||
 | 
			
		||||
   This fork was made to avoid having any KMS binary files and system can be activated using 
 | 
			
		||||
   some manual commands or transparent batch script files.
 | 
			
		||||
 | 
			
		||||
   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
 | 
			
		||||
 | 
			
		||||
====================================================================================================
 | 
			
		||||
   Online KMS Activation:
 | 
			
		||||
====================================================================================================
 | 
			
		||||
 | 
			
		||||
 - This KMS script skips the activation of any permanently / KMS38-activated product.
 | 
			
		||||
 - This KMS script can activate both Retail and VL Windows / Server installation.
 | 
			
		||||
 - This KMS script can activate C2R Retail and VL Office, but not 2010/2013 MSI Retail Office. 
 | 
			
		||||
 | 
			
		||||
 ----------------------
 | 
			
		||||
 - Activation Renewal
 | 
			
		||||
 ----------------------
 | 
			
		||||
 | 
			
		||||
 - KMS activates Windows / Server / Office for 180 Days. (For Core/ProWMC edition it is 30/45 Days)
 | 
			
		||||
 | 
			
		||||
 - By design, using the KMS activation method, the system contacts the registered server every 7 
 | 
			
		||||
   days, and if contacted successfully it will automatically renew and reset the activation for the 
 | 
			
		||||
   the full period of 180 days again, starting from the day of successful contact.
 | 
			
		||||
   If the system cannot contact the server, it will be deactivated after 180 days and it will 
 | 
			
		||||
   remain deactivated until contact can be restored.
 | 
			
		||||
   
 | 
			
		||||
 - The KMS servers I've added have been working steadily for two to three years, but there can be 
 | 
			
		||||
   no guarantee that they will remain online indefinitely. If a registered server goes 
 | 
			
		||||
   down, you will need to create a renewal task, or do a manual renewal, for the lifetime of the 
 | 
			
		||||
   activation.
 | 
			
		||||
 | 
			
		||||
   There are 3 ways you can renew the KMS server and as a result, renew the activation.
 | 
			
		||||
 | 
			
		||||
 1- Activate.cmd
 | 
			
		||||
 | 
			
		||||
   Run this file whenever the system needs activation. Depending upon the particular (never fully-knowable)
 | 
			
		||||
   circumstances, a successful activation may last for a period of a MINIMUM of 180 days, 
 | 
			
		||||
   or a maximum of the full life of the machine it's running on, and you may never need to run it again.
 | 
			
		||||
 | 
			
		||||
 2- Manual Renewal via Desktop Context Menu
 | 
			
		||||
 | 
			
		||||
   This method is exactly same as above but here we put the following files in,
 | 
			
		||||
   C:\ProgramData\Online_KMS_Activation\BIN\cleanosppx64.exe
 | 
			
		||||
   C:\ProgramData\Online_KMS_Activation\BIN\cleanosppx86.exe
 | 
			
		||||
   C:\ProgramData\Online_KMS_Activation\Activate.cmd
 | 
			
		||||
   C:\ProgramData\Online_KMS_Activation\Info.txt
 | 
			
		||||
 | 
			
		||||
   and create registry entries in,
 | 
			
		||||
   HKCR\DesktopBackground\shell\Activate Windows - Office
 | 
			
		||||
   HKCR\DesktopBackground\shell\Activate Windows - Office\command
 | 
			
		||||
 | 
			
		||||
   It creates an easy to reach Desktop context menu for the manual activation renewal.
 | 
			
		||||
 | 
			
		||||
 3- Automatic Renewal via Task Scheduler
 | 
			
		||||
   
 | 
			
		||||
   This method put the following files in,
 | 
			
		||||
   C:\ProgramData\Online_KMS_Activation\BIN\cleanosppx64.exe
 | 
			
		||||
   C:\ProgramData\Online_KMS_Activation\BIN\cleanosppx86.exe
 | 
			
		||||
   C:\ProgramData\Online_KMS_Activation\Activate.cmd
 | 
			
		||||
   C:\ProgramData\Online_KMS_Activation\Info.txt
 | 
			
		||||
 | 
			
		||||
   And creates a scheduled task to run the script every 7 days.
 | 
			
		||||
 | 
			
		||||
   The scheduled task runs only if the system is connected to the Internet.
 | 
			
		||||
   With this method, the Activation task can also be created which will run on the system login
 | 
			
		||||
   and after successful activation, this task will delete itself.
 | 
			
		||||
  
 | 
			
		||||
   IMPORTANT NOTE - Some sensitive AV's may flag the Automatic Renewal via the Task, and not 
 | 
			
		||||
   because of KMS, because for them it's suspicious to run long scripts in the background as Tasks.
 | 
			
		||||
 | 
			
		||||
   It's recommended to set exclusions in Antivirus for
 | 
			
		||||
   C:\ProgramData\Online_KMS_Activation\Activate.cmd
 | 
			
		||||
   or
 | 
			
		||||
   use the 1st or 2nd option for activation renewal.
 | 
			
		||||
 | 
			
		||||
----------------------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
 ----------------------
 | 
			
		||||
 - Remarks
 | 
			
		||||
 ----------------------
 | 
			
		||||
 | 
			
		||||
 - This Online KMS Activation provides immediate global activation for Windows 8.1 and Windows 10, which 
 | 
			
		||||
   means that in the following three scenarios, the system will self-activate when connected to the 
 | 
			
		||||
   internet, and also means that users will not need to manually run the activation script again.
 | 
			
		||||
 | 
			
		||||
   Scenario 1: Subsequent installation or alteration of any 2013, 2016, or 2019 Volume License 
 | 
			
		||||
               (VL) Office product.
 | 
			
		||||
   Scenario 2: Windows edition change (with GVLK).
 | 
			
		||||
   Scenario 3: Date change, system hardware change, etc.
 | 
			
		||||
 | 
			
		||||
 - What is left in the system in the activation process?
 | 
			
		||||
   - Activate.cmd
 | 
			
		||||
     After activation, it leaves only the KMS Server name in the registry, which helps you to get the
 | 
			
		||||
     above-mentioned global activation feature whereby the system auto-renews the activations,
 | 
			
		||||
     so it's a good thing if you leave the server name in the registry.
 | 
			
		||||
     However, you can clear this registered KMS Server name upon activation, and do that, open 
 | 
			
		||||
     the script with notepad and set Clear-KMS-Cache to 1 from 0.
 | 
			
		||||
     What is left in the system when Renewal methods are installed, has been mentioned.
 | 
			
		||||
 | 
			
		||||
 - This script includes the most-stable KMS servers (6+) list. The server selection process is 
 | 
			
		||||
   fully automatic. You don't need to worry about the server's availability.
 | 
			
		||||
 | 
			
		||||
 - If your system date is incorrect (beyond 180 days) and you are offline, the system will be 
 | 
			
		||||
   deactivated, but will automatically reactivate when you correct the system date. 
 | 
			
		||||
 | 
			
		||||
 - Why should you choose the Online KMS activation method over offline KMS?
 | 
			
		||||
   The main benefit of Online KMS activation is that it doesn't need any KMS binary file and system
 | 
			
		||||
   can be activated using some manual commands or transparent batch script files.
 | 
			
		||||
   So this is for those who don't like/have difficulties/trust issue in offline KMS because of its 
 | 
			
		||||
   binary files and antivirus detections.
 | 
			
		||||
 | 
			
		||||
   If you prefer offline KMS then checkout an open-source activator, 
 | 
			
		||||
   @abbodi1406's KMS_VL_ALL   https://forums.mydigitallife.net/posts/838808
 | 
			
		||||
 | 
			
		||||
----------------------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
 --------------------------------------
 | 
			
		||||
 - Office C2R Retail to VL conversion
 | 
			
		||||
 --------------------------------------
 | 
			
		||||
 | 
			
		||||
   This activation script will convert Office C2R Retail to Volume without needing separate tools.
 | 
			
		||||
   
 | 
			
		||||
   - Supports: Office 365, Office 2019, Office 2016, Office 2013
 | 
			
		||||
   - Activated Retail products will be skipped from conversion
 | 
			
		||||
     this includes valid Office 365 subscriptions, or perpetual Office (MAK, OEM, MSDN, Retail..)
 | 
			
		||||
   - Current Office licenses will be cleaned up (unless retail-activated Office detected)
 | 
			
		||||
     then, proper Volume licenses will be installed based on the detected Product IDs
 | 
			
		||||
   - Office Mondo suite cover all products, if detected, only its licenses will be installed
 | 
			
		||||
   - Office 365 products will be converted with Mondo licenses by default  
 | 
			
		||||
     also, corresponding Office 365 Retail Grace Key will be installed
 | 
			
		||||
   - Office 2016 products will be converted with corresponding Office 2019 licenses
 | 
			
		||||
   - Office Professional suite will be converted with Office 2019 ProPlus licenses
 | 
			
		||||
   - Office HomeBusiness/HomeStudent suites will be converted with Office 2019 Standard licenses
 | 
			
		||||
   - If Office 2019 RTM licenses are not detected, Office 2016 licenses will be used instead
 | 
			
		||||
   - Office 2013 products follow the same logic but handled separately
 | 
			
		||||
   - If main products SKUs are detected, single apps licenses will not be installed to avoid duplication
 | 
			
		||||
   
 | 
			
		||||
   - SKUs:  
 | 
			
		||||
   O365ProPlus, O365Business, O365SmallBusPrem, O365HomePrem, O365EduCloud  
 | 
			
		||||
   ProPlus, Professional, Standard, HomeBusiness, HomeStudent, Visio, Project
 | 
			
		||||
   
 | 
			
		||||
   * Apps:  
 | 
			
		||||
   Access, Excel, InfoPath, Onenote, Outlook, PowerPoint, Publisher, SkypeForBusiness, Word, 
 | 
			
		||||
   Groove (OneDrive for Business)
 | 
			
		||||
   
 | 
			
		||||
   - O365ProPlus, O365Business, O365SmallBusPrem, ProPlus cover all apps  
 | 
			
		||||
   Professional cover all apps except SkypeForBusiness  
 | 
			
		||||
   Standard cover all apps except Access, SkypeForBusiness
 | 
			
		||||
   
 | 
			
		||||
   ## Notice
 | 
			
		||||
   
 | 
			
		||||
   - On Windows 7, Office 2016/2019 licensing service require Universal C Runtime to work correctly
 | 
			
		||||
   - UCRT is available in the latest Monthly Rollup, or the separate update KB3118401
 | 
			
		||||
   - Additionally, Office programs themselves require recent Windows 7 updates to start properly
 | 
			
		||||
 | 
			
		||||
====================================================================================================
 | 
			
		||||
   File Details:
 | 
			
		||||
====================================================================================================
 | 
			
		||||
 | 
			
		||||
   d30a0e4e5911d3ca705617d17225372731c770e2 *cleanosppx64.exe                   Virus Total = 0/66
 | 
			
		||||
   39ed8659e7ca16aaccb86def94ce6cec4c847dd6 *cleanosppx86.exe                   Virus Total = 1/66
 | 
			
		||||
 | 
			
		||||
   Virus Total Report Date: 12-11-2019
 | 
			
		||||
   
 | 
			
		||||
   These files are official Microsoft files and in this script, these are used in 
 | 
			
		||||
   cleaning office license in C2R Retail office to VL conversion process.
 | 
			
		||||
   
 | 
			
		||||
   The source of these files is the 'old' version of Microsoft Tool O15CTRRemove.diagcab
 | 
			
		||||
   You can get the original file here https://s.put.re/WFuXpyWA.zip
 | 
			
		||||
 | 
			
		||||
====================================================================================================
 | 
			
		||||
 | 
			
		||||
   How does it work?
 | 
			
		||||
   Is it safe?
 | 
			
		||||
 | 
			
		||||
   https://pastebin.com/raw/7Xyaf15Z
 | 
			
		||||
   Mirror:
 | 
			
		||||
   https://textuploader.com/1dg8d/raw
 | 
			
		||||
 | 
			
		||||
====================================================================================================
 | 
			
		||||
   Products Compatibility:
 | 
			
		||||
====================================================================================================
 | 
			
		||||
 | 
			
		||||
   Supported Products: [Only Volume-capable]
 | 
			
		||||
 | 
			
		||||
   Windows 8 / 8.1 / 10 (all official editions, except Windows 10 S)  
 | 
			
		||||
   Windows 7 (Enterprise /N/E, Professional /N/E, Embedded Standard/POSReady/ThinPC)  
 | 
			
		||||
   Windows Server 2008 R2 / 2012 / 2012 R2 / 2016 / 2019  
 | 
			
		||||
   Office Volume 2010 / 2013 / 2016 / 2019
 | 
			
		||||
   
 | 
			
		||||
   [Activation script will convert Office C2R Retail O365/2013/2016/2019 to Volume]
 | 
			
		||||
 | 
			
		||||
----------------------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
   Unsupported Products:
 | 
			
		||||
 | 
			
		||||
   Office Retail [Office MSI Retail 2010/2013]
 | 
			
		||||
   Windows Editions which do not support KMS activation by design:  
 | 
			
		||||
   Windows Evaluation Editions  
 | 
			
		||||
   Windows 7 (Starter, HomeBasic, HomePremium, Ultimate)  
 | 
			
		||||
   Windows 10 (Cloud "S", IoTEnterprise, IoTEnterpriseS, ProfessionalSingleLanguage... etc)  
 | 
			
		||||
   Windows Server (Server Foundation, Storage Server, Home Server 2011... etc) 
 | 
			
		||||
 | 
			
		||||
----------------------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
   These editions are only KMS-activatable for 45 days at max:
 | 
			
		||||
   Windows 10 Home edition variants  
 | 
			
		||||
   Windows 8.1 Core edition variants, Pro with Media Center, Pro Student
 | 
			
		||||
 | 
			
		||||
   These editions are only KMS-activatable for 30 days at max:
 | 
			
		||||
   Windows 8 Core edition variants, Pro with Media Center
 | 
			
		||||
 | 
			
		||||
   Notes:  
 | 
			
		||||
   Supported Windows products do need volume conversion, only the GVLK (KMS key) is needed, which 
 | 
			
		||||
   the script will install accordingly.
 | 
			
		||||
   KMS Activation works in all (MBR, GPT, UEFI, BIOS) systems.
 | 
			
		||||
 | 
			
		||||
====================================================================================================
 | 
			
		||||
   Switches in the Script:
 | 
			
		||||
====================================================================================================
 | 
			
		||||
 | 
			
		||||
   * Applies to MAS Separate Files version
 | 
			
		||||
 | 
			
		||||
 - For unattended mode, run the scripts with /u parameter.
 | 
			
		||||
 | 
			
		||||
Activate.cmd /u
 | 
			
		||||
Uninstall.cmd /u
 | 
			
		||||
 | 
			
		||||
To create Renewal Task in unattended mode,
 | 
			
		||||
Renewal_Setup.cmd /rt
 | 
			
		||||
 | 
			
		||||
To create Renewal and Activation Task in unattended mode,
 | 
			
		||||
Renewal_Setup.cmd /rat
 | 
			
		||||
 | 
			
		||||
To create desktop context menu in unattended mode,
 | 
			
		||||
Renewal_Setup.cmd /dcm
 | 
			
		||||
 | 
			
		||||
To skip Windows activation in renewal script,
 | 
			
		||||
Renewal_Setup.cmd /rat /swa
 | 
			
		||||
or
 | 
			
		||||
Renewal_Setup.cmd /dcm /swa
 | 
			
		||||
 | 
			
		||||
 ----------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
 - Activate.cmd
 | 
			
		||||
 | 
			
		||||
   - To run the script in Debug mode to find out the cause of errors in activation or just details,
 | 
			
		||||
     search "set _Debug=" and change the value from 0 to 1. 
 | 
			
		||||
 | 
			
		||||
   - To replace KMS38 activation with KMS activation, search "set SkipKMS38=" and change the value 
 | 
			
		||||
     from 1 to 0. 
 | 
			
		||||
 | 
			
		||||
   - To skip Windows activation, search "set ActWindows=" and change the value from 1 to 0.
 | 
			
		||||
   - To skip Office activation, search "set ActOffice=" and change the value from 1 to 0.
 | 
			
		||||
     - This is not effective if Windows and/or Office installation is already Volume (GVLK installed)
 | 
			
		||||
     - In [Online KMS + HWID] $OEM$ preactivation, Windows KMS activation is turned off 
 | 
			
		||||
       by default.
 | 
			
		||||
 | 
			
		||||
   - To turn OFF auto conversion for Office C2R Retail to Volume, search "set AutoR2V=" and 
 | 
			
		||||
     change the value from 1 to 0.
 | 
			
		||||
 | 
			
		||||
   - To set the script to use only one specific KMS server address, search "set KMS_Server="
 | 
			
		||||
     paste the server address after the = sign.
 | 
			
		||||
 | 
			
		||||
   - To clear the KMS cache, search "set Clear-KMS-Cache=" and change the value from 0 to 1.
 | 
			
		||||
     - Registered KMS server address (cache) enables the system to automatically renew the license 
 | 
			
		||||
       (for next 180 days) every 7 days, as long as the server is online.
 | 
			
		||||
     - This process is the same as how the legal KMS works, so no security program will flag 
 | 
			
		||||
       this behavior.
 | 
			
		||||
     - Changing this option here won't have any effect if manual (Desktop Context menu) and/or auto, 
 | 
			
		||||
       renewal activation script is installed. [default (0)].
 | 
			
		||||
     - I recommend leaving this option as default (0).
 | 
			
		||||
 | 
			
		||||
====================================================================================================
 | 
			
		||||
   Manual Activation Process:
 | 
			
		||||
====================================================================================================
 | 
			
		||||
 | 
			
		||||
 - Prerequisite:
 | 
			
		||||
 | 
			
		||||
   online Public KMS Server List: 
 | 
			
		||||
 | 
			
		||||
   kms.srv.crsoo.com
 | 
			
		||||
   kms.loli.beer
 | 
			
		||||
   kms8.MSGuides.com
 | 
			
		||||
   
 | 
			
		||||
   kms9.MSGuides.com
 | 
			
		||||
   kms.zhuxiaole.org
 | 
			
		||||
   kms.lolico.moe
 | 
			
		||||
   kms.moeclub.org
 | 
			
		||||
 | 
			
		||||
   Generic Volume License Key (GVLK):
 | 
			
		||||
   Thanks to @abbodi1406 for the Key collection.
 | 
			
		||||
 | 
			
		||||
        GVLK                        Edition                
 | 
			
		||||
   
 | 
			
		||||
   Windows 10
 | 
			
		||||
   
 | 
			
		||||
   TX9XD-98N7V-6WMQ6-BX7FG-H8Q99    Home
 | 
			
		||||
   3KHY7-WNT83-DGQKR-F7HPR-844BM    Home N
 | 
			
		||||
   7HNRX-D7KGG-3K4RQ-4WPJ4-YTDFH    Home Single Language
 | 
			
		||||
   PVMJN-6DFY6-9CCP6-7BKTT-D3WVR    Home China
 | 
			
		||||
   W269N-WFGWX-YVC9B-4J6C9-T83GX    Pro
 | 
			
		||||
   MH37W-N47XK-V7XM9-C7227-GCQG9    Pro N
 | 
			
		||||
   6TP4R-GNPTD-KYYHQ-7B7DP-J447Y    Pro Education
 | 
			
		||||
   YVWGF-BXNMC-HTQYQ-CPQ99-66QFC    Pro Education N
 | 
			
		||||
   NRG8B-VKK3Q-CXVCJ-9G2XF-6Q84J    Pro Workstation
 | 
			
		||||
   9FNHH-K3HBT-3W4TD-6383H-6XYWF    Pro Workstation N
 | 
			
		||||
   NW6C2-QMPVW-D7KKK-3GKT6-VCFB2    Education
 | 
			
		||||
   2WH4N-8QGBV-H22JP-CT43Q-MDWWJ    Education N
 | 
			
		||||
   NPPR9-FWDCX-D2C8J-H872K-2YT43    Enterprise
 | 
			
		||||
   DPH2V-TTNVB-4X9Q3-TJR4H-KHJW4    Enterprise N
 | 
			
		||||
   YYVX9-NTFWV-6MDM3-9PT4T-4M68B    Enterprise G
 | 
			
		||||
   44RPN-FTY23-9VTTB-MP9BX-T84FV    Enterprise G N
 | 
			
		||||
   WNMTR-4C88C-JK8YV-HQ7T2-76DF9    Enterprise 2015 LTSB
 | 
			
		||||
   2F77B-TNFGY-69QQF-B8YKP-D69TJ    Enterprise 2015 LTSB N
 | 
			
		||||
   DCPHK-NFMTC-H88MJ-PFHPY-QJ4BJ    Enterprise 2016 LTSB
 | 
			
		||||
   QFFDN-GRT3P-VKWWX-X7T3R-8B639    Enterprise 2016 LTSB N
 | 
			
		||||
   M7XTQ-FN8P6-TTKYV-9D4CC-J462D    Enterprise LTSC 2019
 | 
			
		||||
   92NFX-8DJQP-P6BBQ-THF9C-7CG2H    Enterprise LTSC 2019 N
 | 
			
		||||
   CPWHC-NT2C7-VYW78-DHDB2-PG3GK    Enterprise for Virtual Desktops
 | 
			
		||||
   7NBT4-WGBQX-MP4H7-QXFF8-YP3KX    Remote Server
 | 
			
		||||
   NBTWJ-3DR69-3C4V8-C26MC-GQ9M6    Lean
 | 
			
		||||
   
 | 
			
		||||
   Windows 8.1
 | 
			
		||||
   
 | 
			
		||||
   M9Q9P-WNJJT-6PXPY-DWX8H-6XWKK    Core
 | 
			
		||||
   7B9N3-D94CG-YTVHR-QBPX3-RJP64    Core N
 | 
			
		||||
   BB6NG-PQ82V-VRDPW-8XVD2-V8P66    Core Single Language
 | 
			
		||||
   NCTT7-2RGK8-WMHRF-RY7YQ-JTXG3    Core China
 | 
			
		||||
   XYTND-K6QKT-K2MRH-66RTM-43JKP    Core ARM
 | 
			
		||||
   GCRJD-8NW9H-F2CDX-CCM8D-9D6T9    Pro
 | 
			
		||||
   HMCNV-VVBFX-7HMBH-CTY9B-B4FXY    Pro N
 | 
			
		||||
   789NJ-TQK6T-6XTH8-J39CJ-J8D3P    Pro with Media Center
 | 
			
		||||
   MHF9N-XY6XB-WVXMC-BTDCT-MKKG7    Enterprise
 | 
			
		||||
   TT4HM-HN7YT-62K67-RGRQJ-JFFXW    Enterprise N
 | 
			
		||||
   NMMPB-38DD4-R2823-62W8D-VXKJB    Embedded Industry Pro
 | 
			
		||||
   FNFKF-PWTVT-9RC8H-32HB2-JB34X    Embedded Industry Enterprise
 | 
			
		||||
   VHXM3-NR6FT-RY6RT-CK882-KW2CJ    Embedded Industry Automotive
 | 
			
		||||
   3PY8R-QHNP9-W7XQD-G6DPH-3J2C9    with Bing
 | 
			
		||||
   Q6HTR-N24GM-PMJFP-69CD8-2GXKR    with Bing N
 | 
			
		||||
   KF37N-VDV38-GRRTV-XH8X6-6F3BB    with Bing Single Language
 | 
			
		||||
   R962J-37N87-9VVK2-WJ74P-XTMHR    with Bing China
 | 
			
		||||
   MX3RK-9HNGX-K3QKC-6PJ3F-W8D7B    Pro for Students
 | 
			
		||||
   TNFGH-2R6PB-8XM3K-QYHX2-J4296    Pro for Students N
 | 
			
		||||
   
 | 
			
		||||
   Windows 8
 | 
			
		||||
   
 | 
			
		||||
   BN3D2-R7TKB-3YPBD-8DRP2-27GG4    Core
 | 
			
		||||
   8N2M2-HWPGY-7PGT9-HGDD8-GVGGY    Core N
 | 
			
		||||
   2WN2H-YGCQR-KFX6K-CD6TF-84YXQ    Core Single Language
 | 
			
		||||
   4K36P-JN4VD-GDC6V-KDT89-DYFKP    Core China
 | 
			
		||||
   DXHJF-N9KQX-MFPVR-GHGQK-Y7RKV    Core ARM
 | 
			
		||||
   NG4HW-VH26C-733KW-K6F98-J8CK4    Pro
 | 
			
		||||
   XCVCF-2NXM9-723PB-MHCB7-2RYQQ    Pro N
 | 
			
		||||
   GNBB8-YVD74-QJHX6-27H4K-8QHDG    Pro with Media Center
 | 
			
		||||
   32JNW-9KQ84-P47T8-D8GGY-CWCK7    Enterprise
 | 
			
		||||
   JMNMF-RHW7P-DMY6X-RF3DR-X2BQT    Enterprise N
 | 
			
		||||
   RYXVT-BNQG7-VD29F-DBMRY-HT73M    Embedded Industry Pro
 | 
			
		||||
   NKB3R-R2F8T-3XCDP-7Q2KW-XWYQ2    Embedded Industry Enterprise
 | 
			
		||||
   
 | 
			
		||||
   Windows 7
 | 
			
		||||
   
 | 
			
		||||
   FJ82H-XT6CR-J8D7P-XQJJ2-GPDD4    Professional
 | 
			
		||||
   MRPKT-YTG23-K7D7T-X2JMM-QY7MG    Professional N
 | 
			
		||||
   W82YF-2Q76Y-63HXB-FGJG9-GF7QX    Professional E
 | 
			
		||||
   33PXH-7Y6KF-2VJC9-XBBR8-HVTHH    Enterprise
 | 
			
		||||
   YDRBP-3D83W-TY26F-D46B2-XCKRJ    Enterprise N
 | 
			
		||||
   C29WB-22CC8-VJ326-GHFJW-H9DH4    Enterprise E
 | 
			
		||||
   YBYF6-BHCR3-JPKRB-CDW7B-F9BK4    Embedded POSReady 7
 | 
			
		||||
   XGY72-BRBBT-FF8MH-2GG8H-W7KCW    Embedded Standard
 | 
			
		||||
   73KQT-CD9G6-K7TQG-66MRP-CQ22C    Embedded ThinPC
 | 
			
		||||
   
 | 
			
		||||
   Windows Server 2019
 | 
			
		||||
   
 | 
			
		||||
   N69G4-B89J2-4G8F4-WWYCC-J464C    Standard
 | 
			
		||||
   WMDGN-G9PQG-XVVXX-R3X43-63DFG    Datacenter
 | 
			
		||||
   WVDHN-86M7X-466P6-VHXV7-YY726    Essentials
 | 
			
		||||
   FDNH6-VW9RW-BXPJ7-4XTYG-239TB    Azure Core
 | 
			
		||||
   N2KJX-J94YW-TQVFB-DG9YT-724CC    Standard ACor
 | 
			
		||||
   6NMRW-2C8FM-D24W7-TQWMY-CWH2D    Datacenter ACor
 | 
			
		||||
   GRFBW-QNDC4-6QBHG-CCK3B-2PR88    ServerARM64
 | 
			
		||||
   
 | 
			
		||||
   Windows Server 2016
 | 
			
		||||
   
 | 
			
		||||
   WC2BQ-8NRM3-FDDYY-2BFGV-KHKQY    Standard
 | 
			
		||||
   CB7KF-BWN84-R7R2Y-793K2-8XDDG    Datacenter
 | 
			
		||||
   JCKRF-N37P4-C2D82-9YXRT-4M63B    Essentials
 | 
			
		||||
   QN4C6-GBJD2-FB422-GHWJK-GJG2R    Cloud Storage
 | 
			
		||||
   VP34G-4NPPG-79JTQ-864T4-R3MQX    Azure Core
 | 
			
		||||
   PTXN8-JFHJM-4WC78-MPCBR-9W4KR    Standard ACor
 | 
			
		||||
   2HXDN-KRXHB-GPYC7-YCKFJ-7FVDG    Datacenter ACor
 | 
			
		||||
   K9FYF-G6NCK-73M32-XMVPY-F9DRR    ServerARM64
 | 
			
		||||
   
 | 
			
		||||
   Windows Server 2012 R2
 | 
			
		||||
   
 | 
			
		||||
   D2N9P-3P6X9-2R39C-7RTCD-MDVJX    Standard
 | 
			
		||||
   W3GGN-FT8W3-Y4M27-J84CP-Q3VJ9    Datacenter
 | 
			
		||||
   KNC87-3J2TX-XB4WP-VCPJV-M4FWM    Essentials
 | 
			
		||||
   3NPTF-33KPT-GGBPR-YX76B-39KDD    Cloud Storage
 | 
			
		||||
   
 | 
			
		||||
   Windows Server 2012
 | 
			
		||||
   
 | 
			
		||||
   XC9B7-NBPP2-83J2H-RHMBY-92BT4    Standard
 | 
			
		||||
   48HP8-DN98B-MYWDG-T2DCC-8W83P    Datacenter
 | 
			
		||||
   HM7DN-YVMH3-46JC3-XYTG7-CYQJJ    MultiPoint Standard
 | 
			
		||||
   XNH6W-2V9GX-RGJ4K-Y8X6F-QGJ2G    MultiPoint Premium
 | 
			
		||||
   
 | 
			
		||||
   Windows Server 2008 R2
 | 
			
		||||
   
 | 
			
		||||
   6TPJF-RBVHG-WBW2R-86QPH-6RTM4    Web
 | 
			
		||||
   TT8MH-CG224-D3D7Q-498W2-9QCTX    HPC
 | 
			
		||||
   YC6KT-GKW9T-YTKYR-T4X34-R7VHC    Standard
 | 
			
		||||
   74YFP-3QFB3-KQT8W-PMXWJ-7M648    Datacenter
 | 
			
		||||
   489J6-VHDMP-X63PK-3K798-CPX3Y    Enterprise
 | 
			
		||||
   GT63C-RJFQ3-4GMB6-BRFB9-CB83V    Itanium
 | 
			
		||||
   736RG-XDKJK-V34PF-BHK87-J6X3K    MultiPoint Server
 | 
			
		||||
     
 | 
			
		||||
   ----------------------------------------------------------------------------------------------------
 | 
			
		||||
   
 | 
			
		||||
   ----------------------------------------------
 | 
			
		||||
    Windows /Server (All VL Supported Versions) 
 | 
			
		||||
   ----------------------------------------------
 | 
			
		||||
   
 | 
			
		||||
 - Connect to the internet. 
 | 
			
		||||
 - 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 above list) with 
 | 
			
		||||
   the following command:
 | 
			
		||||
 | 
			
		||||
slmgr.vbs /ipk %key%
 | 
			
		||||
 | 
			
		||||
 - Register the KMS Server, (Replace %server% with one of the above-listed servers) 
 | 
			
		||||
   (If activation is unsuccessful then try a different server) with the following command:
 | 
			
		||||
 | 
			
		||||
slmgr.vbs /skms %server%
 | 
			
		||||
 | 
			
		||||
 - Activate Windows with the following command:
 | 
			
		||||
   
 | 
			
		||||
slmgr.vbs /ato
 | 
			
		||||
   
 | 
			
		||||
 - Check Activation Status with the following command:
 | 
			
		||||
 | 
			
		||||
slmgr.vbs /dli
 | 
			
		||||
   
 | 
			
		||||
 - Check Activation Expiry Date with the following command:
 | 
			
		||||
   
 | 
			
		||||
slmgr.vbs /xpr
 | 
			
		||||
   
 | 
			
		||||
 - Clear the name of the KMS server (Optional) (It'll prevent activation auto-renewal) with the following command: 
 | 
			
		||||
   
 | 
			
		||||
slmgr.vbs /ckms
 | 
			
		||||
   
 | 
			
		||||
 - Done. 
 | 
			
		||||
 | 
			
		||||
   ----------------------------------------------------------------------------
 | 
			
		||||
    Office VL Activation (Office 2010, 2013, 2016, 2019) -
 | 
			
		||||
   ----------------------------------------------------------------------------
 | 
			
		||||
   
 | 
			
		||||
 - Connect to the internet. 
 | 
			
		||||
 - Open CMD as Admin, and enter the following listed commands in the sequence in which they are given.
 | 
			
		||||
 - If Office is installed as VL (Volume License) then there is no need to enter its key. 
 | 
			
		||||
 - If Office is installed as Retail, then you need to convert it to VL, by using C2R-R2V by @abbodi1406
 | 
			
		||||
   https://forums.mydigitallife.net/posts/1150042 
 | 
			
		||||
 | 
			
		||||
 - Change to the directory where Office is installed.
 | 
			
		||||
   If your system is 32-bit Office on 32-bit Windows or 64-bit Office on 64-bit Windows use the following:
 | 
			
		||||
   
 | 
			
		||||
   For Office 2016 or 2019 enter the command:
 | 
			
		||||
   
 | 
			
		||||
cd "C:\Program Files\Microsoft Office\Office16"
 | 
			
		||||
   
 | 
			
		||||
   For Office 2013 enter the command:
 | 
			
		||||
   
 | 
			
		||||
cd "C:\Program Files\Microsoft Office\Office15"
 | 
			
		||||
   
 | 
			
		||||
   For Office 2010 enter the command:
 | 
			
		||||
   
 | 
			
		||||
cd "C:\Program Files\Microsoft Office\Office14"
 | 
			
		||||
   
 | 
			
		||||
   --------------------------------------------------------------------------------
 | 
			
		||||
   
 | 
			
		||||
   If your system is 32-bit Office on 64-bit Windows, use the following:
 | 
			
		||||
   
 | 
			
		||||
   For Office 2016 or 2019 enter the command:
 | 
			
		||||
   
 | 
			
		||||
cd "C:\Program Files (x86)\Microsoft Office\Office16"
 | 
			
		||||
   
 | 
			
		||||
   For Office 2013 enter the command:
 | 
			
		||||
   
 | 
			
		||||
cd "C:\Program Files (x86)\Microsoft Office\Office15"
 | 
			
		||||
   
 | 
			
		||||
   For Office 2010 enter the command:
 | 
			
		||||
   
 | 
			
		||||
cd "C:\Program Files (x86)\Microsoft Office\Office14"
 | 
			
		||||
   
 | 
			
		||||
   --------------------------------------------------------------------------------
 | 
			
		||||
   
 | 
			
		||||
 - Once all of that is done correctly, you must register the KMS Server, (In the following,
 | 
			
		||||
   replace %server% with one of the above-listed servers.) (If activation is unsuccessful 
 | 
			
		||||
   then try a different server.) with the following command:
 | 
			
		||||
 | 
			
		||||
cscript ospp.vbs /sethst:%server% 
 | 
			
		||||
 | 
			
		||||
 - Activate Office with the following command: 
 | 
			
		||||
   
 | 
			
		||||
cscript ospp.vbs /act 
 | 
			
		||||
   
 | 
			
		||||
 - Check Activation Status with the following command:
 | 
			
		||||
   
 | 
			
		||||
cscript ospp.vbs /dstatus
 | 
			
		||||
 
 | 
			
		||||
 - Clear the name of the KMS server, (Optional) (It'll prevent activation auto-renewal)
 | 
			
		||||
   with the appropriate following commands:
 | 
			
		||||
   
 | 
			
		||||
   To clear the KMS Server name for Office in Win 7, or Office 2010 on Win 8 or Win 10,
 | 
			
		||||
   enter each of the following commands in the sequence which is given:
 | 
			
		||||
   
 | 
			
		||||
set "OSPP=HKLM\SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform"
 | 
			
		||||
reg delete "%OSPP%" /f /v KeyManagementServiceName 2>nul
 | 
			
		||||
reg delete "%OSPP%" /f /v KeyManagementServicePort 2>nul
 | 
			
		||||
reg delete "%OSPP%\59a52881-a989-479d-af46-f275c6370663" /f 2>nul
 | 
			
		||||
reg delete "%OSPP%\0ff1ce15-a989-479d-af46-f275c6370663" /f 2>nul
 | 
			
		||||
 | 
			
		||||
   To clear the KMS server name for Office (except Office 2010) on Win 8 or Win 10, run the following command:
 | 
			
		||||
 | 
			
		||||
set "SPPk=SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform"
 | 
			
		||||
reg delete "HKLM\%SPPk%" /f /v KeyManagementServiceName 2>nul
 | 
			
		||||
reg delete "HKLM\%SPPk%" /f /v KeyManagementServicePort 2>nul
 | 
			
		||||
reg delete "HKLM\%SPPk%\0ff1ce15-a989-479d-af46-f275c6370663" /f 2>nul
 | 
			
		||||
reg delete "HKEY_USERS\S-1-5-20\%SPPk%\0ff1ce15-a989-479d-af46-f275c6370663" /f 2>nul
 | 
			
		||||
 | 
			
		||||
 - Done. 
 | 
			
		||||
 | 
			
		||||
====================================================================================================
 | 
			
		||||
   Troubleshoot activation issues:
 | 
			
		||||
====================================================================================================
 | 
			
		||||
 | 
			
		||||
 - Make sure the Internet is connected.
 | 
			
		||||
 | 
			
		||||
 - Reboot the system and run the activation script, and if unsuccessful,
 | 
			
		||||
   Open CMD as Admin, and enter the following command: (For Windows 10\8\8.1)
 | 
			
		||||
 | 
			
		||||
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 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 KMS_VL_ALL by @abbodi1406 https://forums.mydigitallife.net/posts/838808/
 | 
			
		||||
     If still unsuccessful, it may be time to start over from the very beginning 
 | 
			
		||||
     and do a clean install of windows :D 
 | 
			
		||||
 | 
			
		||||
   -------------------------------
 | 
			
		||||
 | 
			
		||||
   - If you have issues with Office activation, or got undesired or duplicate licenses (e.g. Office 2016 and 2019):
 | 
			
		||||
     Download Office Scrubber pack from https://forums.mydigitallife.net/posts/1466365/
 | 
			
		||||
     To get rid of any conflicted licenses, run Uninstall_Licenses.cmd, then you must start any 
 | 
			
		||||
     Office program to repair the licensing. You may also try Uninstall_Keys.cmd for similar manner.
 | 
			
		||||
 | 
			
		||||
     If you wish to remove Office and leftovers completely and start clean:
 | 
			
		||||
     Uninstall Office normally from Control Panel / Programs and Feature then run Full_Scrub.cmd
 | 
			
		||||
     afterwards, install new Office.
 | 
			
		||||
 | 
			
		||||
   - Can't activate Windows 7 with KMS: [Error 0xC004F035]
 | 
			
		||||
     Some OEM licensed computers cannot be activated with KMS on WINDOWS 7.
 | 
			
		||||
     Quote from the MS page https://tinyurl.com/yy8wfu5m
 | 
			
		||||
     'Computers obtained through OEM channels that have an ACPI_SLIC table in the (BIOS) are 
 | 
			
		||||
     required to have a valid Windows marker in the same ACPI_SLIC table.
 | 
			
		||||
     ---Computers that have an ACPI_SLIC table without a valid Windows marker generate an error 
 | 
			
		||||
     when a volume edition of Windows 7 is installed.'
 | 
			
		||||
 | 
			
		||||
====================================================================================================
 | 
			
		||||
   Credits:
 | 
			
		||||
====================================================================================================
 | 
			
		||||
 | 
			
		||||
   @abbodi1406   Activate.cmd (KMS_VL_ALL)
 | 
			
		||||
                 https://forums.mydigitallife.net/posts/838808
 | 
			
		||||
                 (* With the great help from @RPO, Forked it to work with Multi KMS Servers,
 | 
			
		||||
                 Renewal task, Desktop context menu, $OEM$, etc for Online KMS)
 | 
			
		||||
 | 
			
		||||
                 Clear-KMS-Cache.cmd
 | 
			
		||||
                 https://forums.mydigitallife.net/posts/1511883
 | 
			
		||||
                 (*Applied it as it is)
 | 
			
		||||
 | 
			
		||||
                 Check-Activation-Status-wmic.cmd
 | 
			
		||||
                 https://forums.mydigitallife.net/posts/838808
 | 
			
		||||
                 (*Applied it as it is)
 | 
			
		||||
 | 
			
		||||
----------------------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
   Online Public KMS Servers:
 | 
			
		||||
 | 
			
		||||
   kms.srv.crsoo.com
 | 
			
		||||
   kms.loli.beer
 | 
			
		||||
   kms8.MSGuides.com
 | 
			
		||||
 | 
			
		||||
   kms9.MSGuides.com
 | 
			
		||||
   kms.zhuxiaole.org
 | 
			
		||||
   kms.lolico.moe
 | 
			
		||||
   kms.moeclub.org
 | 
			
		||||
 | 
			
		||||
----------------------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
   Special Thanks to @RPO
 | 
			
		||||
 | 
			
		||||
   For providing great support in making and improvements of this script,
 | 
			
		||||
   To name a few,
 | 
			
		||||
 | 
			
		||||
   Internet test with Powershell (No ping)
 | 
			
		||||
   KMS server 1688 port test with Powershell
 | 
			
		||||
   Multi KMS server integration
 | 
			
		||||
   Scheduled task to renew the activation
 | 
			
		||||
                    
 | 
			
		||||
   And for solving countless problems in this batch script.
 | 
			
		||||
   
 | 
			
		||||
----------------------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
   Kind Help:-
 | 
			
		||||
 | 
			
		||||
   Thanks for having my back and answering all of my queries. (In no particular order)
 | 
			
		||||
 | 
			
		||||
   @AveYo aka @BAU, @RPO, @leitek8, @mxman2k, @Yen, @abbodi1406
 | 
			
		||||
 | 
			
		||||
   @BorrowedWifi For providing support in fixing English grammar errors in the Read Me.
 | 
			
		||||
 | 
			
		||||
----------------------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
   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
 | 
			
		||||
 | 
			
		||||
====================================================================================================
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,12 @@
 | 
			
		|||
----------------------------------------------------------------------------------------------
 | 
			
		||||
Activation Type       Supported Product             Activation Period
 | 
			
		||||
----------------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
Digital License    -  Windows 10                 -  Permanent
 | 
			
		||||
KMS38              -  Windows 10 / Server        -  Until the year 2038
 | 
			
		||||
Online KMS         -  Windows / Server / Office  -  For 180 Days, renewal task needs to be 
 | 
			
		||||
                                                    created for lifetime auto activation.
 | 
			
		||||
 | 
			
		||||
----------------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
* For more details, use the ReadMe.txt included in the respective activation folders.
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,120 @@
 | 
			
		|||
====================================================================================================
 | 
			
		||||
   Credits:
 | 
			
		||||
====================================================================================================
 | 
			
		||||
 | 
			
		||||
   Microsoft Activation Scripts (MAS):
 | 
			
		||||
 | 
			
		||||
   A collection of scripts for activating Microsoft products using HWID / KMS38 / Online KMS 
 | 
			
		||||
   activation methods with a focus on open-source code, less antivirus detection and user-friendliness.
 | 
			
		||||
 | 
			
		||||
   These scripts are mostly a fork of other honourable developer's tools and scripts.
 | 
			
		||||
 | 
			
		||||
   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
 | 
			
		||||
 | 
			
		||||
   To achieve this I have used the following projects as the base of this activator.  
 | 
			
		||||
   I would like to say thanks to the following authors for making such awesome projects.
 | 
			
		||||
 | 
			
		||||
====================================
 | 
			
		||||
   HWID and KMS38 Activation:
 | 
			
		||||
====================================
 | 
			
		||||
 | 
			
		||||
   @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
 | 
			
		||||
 | 
			
		||||
====================================
 | 
			
		||||
   Online KMS Activation: 
 | 
			
		||||
====================================
 | 
			
		||||
 | 
			
		||||
   @abbodi1406   Activate.cmd (KMS_VL_ALL)
 | 
			
		||||
                 https://forums.mydigitallife.net/posts/838808
 | 
			
		||||
                 (* With the great help from @RPO, Forked it to work with Multi KMS Servers,
 | 
			
		||||
                 Renewal task, Desktop context menu, $OEM$, etc for Online KMS)
 | 
			
		||||
 | 
			
		||||
                 Clear-KMS-Cache.cmd
 | 
			
		||||
                 https://forums.mydigitallife.net/posts/1511883
 | 
			
		||||
                 (*Applied it as it is)
 | 
			
		||||
 | 
			
		||||
                 Check-Activation-Status-wmic.cmd
 | 
			
		||||
                 https://forums.mydigitallife.net/posts/838808
 | 
			
		||||
                 (*Applied it as it is)
 | 
			
		||||
 | 
			
		||||
====================================
 | 
			
		||||
 | 
			
		||||
   Online Public KMS Servers:
 | 
			
		||||
 | 
			
		||||
   kms.srv.crsoo.com
 | 
			
		||||
   kms.loli.beer
 | 
			
		||||
   kms8.MSGuides.com
 | 
			
		||||
 | 
			
		||||
   kms9.MSGuides.com
 | 
			
		||||
   kms.zhuxiaole.org
 | 
			
		||||
   kms.lolico.moe
 | 
			
		||||
   kms.moeclub.org
 | 
			
		||||
 | 
			
		||||
====================================
 | 
			
		||||
   Useful scripts and ideas I used :
 | 
			
		||||
====================================
 | 
			
		||||
 | 
			
		||||
   @AveYo (@BAU) Compressed2TXT
 | 
			
		||||
                 https://github.com/AveYo/Compressed2TXT
 | 
			
		||||
                 (For storing the files in text format)
 | 
			
		||||
 | 
			
		||||
                 Reg_takeownership snippet
 | 
			
		||||
                 pastebin.com/XTPt0JSC
 | 
			
		||||
                 (*Applied in KMS38 Protection)
 | 
			
		||||
 | 
			
		||||
   @hearywarlot  Elevate program as admin with vbs method
 | 
			
		||||
                 https://forums.mydigitallife.net/threads/.74332/
 | 
			
		||||
 | 
			
		||||
   @dbenham      Set buffer height independently of window height
 | 
			
		||||
                 https://stackoverflow.com/a/13351373
 | 
			
		||||
                 
 | 
			
		||||
   @Ratiborus    Ratiborus Tools
 | 
			
		||||
                 http://forum.ru-board.com/topic.cgi?forum=2&topic=5734#1
 | 
			
		||||
 | 
			
		||||
   @abbodi1406   Continuously providing best solutions for tons of issues.
 | 
			
		||||
 | 
			
		||||
                 abbodi1406's Batch Scripts Repo
 | 
			
		||||
                 https://forums.mydigitallife.net/threads/74197/
 | 
			
		||||
 | 
			
		||||
   @s1ave77      slave77s S-M-R-T JATDevice MkIII
 | 
			
		||||
                 https://forums.mydigitallife.net/threads/44717/
 | 
			
		||||
 | 
			
		||||
====================================
 | 
			
		||||
   Kind Help:
 | 
			
		||||
====================================
 | 
			
		||||
   
 | 
			
		||||
   Thanks to the following people for 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 for testing scripts for ARM64 system.
 | 
			
		||||
 | 
			
		||||
----------------------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
   Special thanks to @RPO and @abbodi1406,
 | 
			
		||||
   For providing great support and solving countless issues in this tool.
 | 
			
		||||
 | 
			
		||||
====================================================================================================
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,6 @@
 | 
			
		|||
[{000214A0-0000-0000-C000-000000000046}]
 | 
			
		||||
Prop3=19,11
 | 
			
		||||
[InternetShortcut]
 | 
			
		||||
IDList=
 | 
			
		||||
URL=https://pastebin.com/raw/jduBSazJ
 | 
			
		||||
HotKey=0
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,621 @@
 | 
			
		|||
@setlocal DisableDelayedExpansion
 | 
			
		||||
@echo off
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
:: =======================================================================================================
 | 
			
		||||
::
 | 
			
		||||
::   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
 | 
			
		||||
::
 | 
			
		||||
:: =======================================================================================================
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
cls
 | 
			
		||||
title Extract $OEM$ Folder
 | 
			
		||||
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
 | 
			
		||||
set "_psc=powershell -nop -ep bypass -c"
 | 
			
		||||
set "nul=1>nul 2>nul"
 | 
			
		||||
set "EchoRed=%_psc% write-host -back Black -fore Red"
 | 
			
		||||
set "EchoGreen=%_psc% write-host -back Black -fore Green"
 | 
			
		||||
set "ELine=echo: & %EchoRed% ==== ERROR ==== &echo:"
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
for %%i in (powershell.exe) do if "%%~$path:i"=="" (
 | 
			
		||||
echo: &echo ==== ERROR ==== &echo:
 | 
			
		||||
echo Powershell is not installed in the system.
 | 
			
		||||
echo Aborting...
 | 
			
		||||
goto Done
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
if %winbuild% LSS 7600 (
 | 
			
		||||
%ELine%
 | 
			
		||||
echo Unsupported OS version Detected.
 | 
			
		||||
echo Project is supported only for Windows 7/8/8.1/10 and their Server equivalent.
 | 
			
		||||
goto Done
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
::  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=98 lines=30
 | 
			
		||||
 | 
			
		||||
::  Get correct Desktop Location with powershell
 | 
			
		||||
::  Written by @dcshoecomp (superuser.com)
 | 
			
		||||
::  https://superuser.com/a/1413170
 | 
			
		||||
 | 
			
		||||
for /f "delims=" %%a in ('%_psc% "& {write-host $([Environment]::GetFolderPath('Desktop'))}"') do Set "desktop=%%a"
 | 
			
		||||
 | 
			
		||||
if exist "%desktop%\$OEM$\" (
 | 
			
		||||
echo _____________________________________________________
 | 
			
		||||
%ELine%
 | 
			
		||||
echo $OEM$ folder already exists on the Desktop.
 | 
			
		||||
echo _____________________________________________________
 | 
			
		||||
goto Done2
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
set "_dir=%desktop%\$OEM$\$$\Setup\Scripts"
 | 
			
		||||
set _nofile=
 | 
			
		||||
 | 
			
		||||
set "_fdir1=Activators\HWID-KMS38_Activation"
 | 
			
		||||
set "HWID_Activation.cmd=%_fdir1%\HWID_Activation.cmd"
 | 
			
		||||
set "KMS38_Activation.cmd=%_fdir1%\KMS38_Activation.cmd"
 | 
			
		||||
set "ClipUp.exe=%_fdir1%\BIN\ClipUp.exe"
 | 
			
		||||
set "gatherosstate.exe=%_fdir1%\BIN\gatherosstate.exe"
 | 
			
		||||
set "slc.dll=%_fdir1%\BIN\slc.dll"
 | 
			
		||||
set "ARM64_gatherosstate.exe=%_fdir1%\BIN\ARM64_gatherosstate.exe"
 | 
			
		||||
set "ARM64_slc.dll=%_fdir1%\BIN\ARM64_slc.dll"
 | 
			
		||||
 | 
			
		||||
set "_fdir2=Activators\Online_KMS_Activation"
 | 
			
		||||
set "Activate.cmd=%_fdir2%\Activate.cmd"
 | 
			
		||||
set "Renewal_Setup.cmd=%_fdir2%\Renewal_Setup.cmd"
 | 
			
		||||
set "cleanosppx64.exe=%_fdir2%\BIN\cleanosppx64.exe"
 | 
			
		||||
set "cleanosppx86.exe=%_fdir2%\BIN\cleanosppx86.exe"
 | 
			
		||||
 | 
			
		||||
cd /d "!_work!"
 | 
			
		||||
pushd "!_work!"
 | 
			
		||||
cd ..
 | 
			
		||||
cd ..
 | 
			
		||||
 | 
			
		||||
if not exist "%HWID_Activation.cmd%" set _nofile=1
 | 
			
		||||
if not exist "%KMS38_Activation.cmd%" set _nofile=1
 | 
			
		||||
if not exist "%ClipUp.exe%" set _nofile=1
 | 
			
		||||
if not exist "%gatherosstate.exe%" set _nofile=1
 | 
			
		||||
if not exist "%slc.dll%" set _nofile=1
 | 
			
		||||
if not exist "%ARM64_gatherosstate.exe%" set _nofile=1
 | 
			
		||||
if not exist "%ARM64_slc.dll%" set _nofile=1
 | 
			
		||||
 | 
			
		||||
if not exist "%Activate.cmd%" set _nofile=1
 | 
			
		||||
if not exist "%Renewal_Setup.cmd%" set _nofile=1
 | 
			
		||||
if not exist "%cleanosppx64.exe%" set _nofile=1
 | 
			
		||||
if not exist "%cleanosppx86.exe%" set _nofile=1
 | 
			
		||||
 | 
			
		||||
if defined _nofile (
 | 
			
		||||
echo _____________________________________________________
 | 
			
		||||
%ELine%
 | 
			
		||||
echo Some files are missing in the 'Activators' folder.
 | 
			
		||||
echo _____________________________________________________
 | 
			
		||||
goto Done
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
:Menu
 | 
			
		||||
 | 
			
		||||
cls
 | 
			
		||||
echo:
 | 
			
		||||
echo:
 | 
			
		||||
echo                             Extract the $OEM$ Folder on your desktop.
 | 
			
		||||
echo                                  For more details use Read me.
 | 
			
		||||
echo                       _______________________________________________________
 | 
			
		||||
echo                      ^|                                                       ^|
 | 
			
		||||
echo                      ^|                                                       ^|
 | 
			
		||||
echo                      ^|   [1] HWID                                            ^|
 | 
			
		||||
echo                      ^|                                                       ^|
 | 
			
		||||
echo                      ^|   [2] KMS38                                           ^|
 | 
			
		||||
echo                      ^|                                                       ^|
 | 
			
		||||
echo                      ^|   [3] HWID, Fallback to KMS38                         ^|
 | 
			
		||||
echo                      ^|                                                       ^|
 | 
			
		||||
echo                      ^|   [4] Online KMS                                      ^|
 | 
			
		||||
echo                      ^|                                                       ^|
 | 
			
		||||
echo                      ^|   [5] HWID ^+ Online KMS                               ^|
 | 
			
		||||
echo                      ^|                                                       ^|
 | 
			
		||||
echo                      ^|   [6] KMS38 ^+ Online KMS                              ^|
 | 
			
		||||
echo                      ^|                                                       ^|
 | 
			
		||||
echo                      ^|   [7] HWID, Fallback to KMS38 ^+ Online KMS            ^|
 | 
			
		||||
echo                      ^|                                                       ^|
 | 
			
		||||
echo                      ^|   [8] Exit                                            ^|
 | 
			
		||||
echo                      ^|                                                       ^|
 | 
			
		||||
echo                      ^|_______________________________________________________^|
 | 
			
		||||
echo:     
 | 
			
		||||
choice /C:12345678 /N /M ">                     Enter Your Choice [1,2,3,4,5,6,7,8] : "
 | 
			
		||||
 | 
			
		||||
if errorlevel 8 exit /b
 | 
			
		||||
if errorlevel 7 goto:$OEM$HWID_FB_KMS38-KMS
 | 
			
		||||
if errorlevel 6 goto:$OEM$KMS38KMS
 | 
			
		||||
if errorlevel 5 goto:$OEM$HWIDKMS
 | 
			
		||||
if errorlevel 4 goto:$OEM$KMS
 | 
			
		||||
if errorlevel 3 goto:$OEM$HWID_FB_KMS38
 | 
			
		||||
if errorlevel 2 goto:$OEM$KMS38
 | 
			
		||||
if errorlevel 1 goto:$OEM$HWID
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
:$OEM$HWID
 | 
			
		||||
 | 
			
		||||
cls
 | 
			
		||||
call :Prep
 | 
			
		||||
call :HWIDPrep
 | 
			
		||||
call :export HWIDSetup "%_dir%\SetupComplete.cmd"
 | 
			
		||||
set error_=
 | 
			
		||||
call :HWIDPrep2
 | 
			
		||||
 | 
			
		||||
if defined error_ goto ErrorFound
 | 
			
		||||
set "_oem=HWID"
 | 
			
		||||
goto Done
 | 
			
		||||
 | 
			
		||||
:HWIDSetup:
 | 
			
		||||
@echo off
 | 
			
		||||
 | 
			
		||||
reg query HKU\S-1-5-19 1>nul 2>nul || (
 | 
			
		||||
echo ==== Error ====
 | 
			
		||||
echo Right click on this file and select 'Run as administrator'
 | 
			
		||||
echo Press any key to exit...
 | 
			
		||||
pause >nul
 | 
			
		||||
exit /b
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
call "%~dp0HWID_Activation.cmd" /u
 | 
			
		||||
 | 
			
		||||
cd /d "%SystemRoot%\Setup\"
 | 
			
		||||
if exist "%SystemRoot%\Setup\Scripts\" @RD /S /Q "%SystemRoot%\Setup\Scripts\"
 | 
			
		||||
exit /b
 | 
			
		||||
:HWIDSetup:
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
:$OEM$KMS38
 | 
			
		||||
 | 
			
		||||
cls
 | 
			
		||||
call :Prep
 | 
			
		||||
call :KMS38Prep
 | 
			
		||||
call :export KMS38Setup "%_dir%\SetupComplete.cmd"
 | 
			
		||||
set error_=
 | 
			
		||||
call :KMS38Prep2
 | 
			
		||||
 | 
			
		||||
if defined error_ goto ErrorFound
 | 
			
		||||
set "_oem=KMS38"
 | 
			
		||||
goto Done
 | 
			
		||||
 | 
			
		||||
:KMS38Setup:
 | 
			
		||||
@echo off
 | 
			
		||||
 | 
			
		||||
reg query HKU\S-1-5-19 1>nul 2>nul || (
 | 
			
		||||
echo ==== Error ====
 | 
			
		||||
echo Right click on this file and select 'Run as administrator'
 | 
			
		||||
echo Press any key to exit...
 | 
			
		||||
pause >nul
 | 
			
		||||
exit /b
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
call "%~dp0KMS38_Activation.cmd" /u
 | 
			
		||||
 | 
			
		||||
cd /d "%SystemRoot%\Setup\"
 | 
			
		||||
if exist "%SystemRoot%\Setup\Scripts\" @RD /S /Q "%SystemRoot%\Setup\Scripts\"
 | 
			
		||||
exit /b
 | 
			
		||||
:KMS38Setup:
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
:$OEM$HWID_FB_KMS38
 | 
			
		||||
 | 
			
		||||
cls
 | 
			
		||||
call :Prep
 | 
			
		||||
 | 
			
		||||
copy /y /b "%HWID_Activation.cmd%" "%_dir%\HWID_Activation.cmd" %nul%
 | 
			
		||||
call :KMS38Prep
 | 
			
		||||
call :export HWID_FB_KMS38 "%_dir%\SetupComplete.cmd"
 | 
			
		||||
 | 
			
		||||
set error_=
 | 
			
		||||
If not exist "%_dir%\HWID_Activation.cmd" (set error_=1)
 | 
			
		||||
call :KMS38Prep2
 | 
			
		||||
 | 
			
		||||
if defined error_ goto ErrorFound
 | 
			
		||||
set "_oem=HWID`, Fallback to KMS38"
 | 
			
		||||
goto Done
 | 
			
		||||
 | 
			
		||||
:HWID_FB_KMS38:
 | 
			
		||||
@echo off
 | 
			
		||||
 | 
			
		||||
setlocal EnableDelayedExpansion
 | 
			
		||||
reg query HKU\S-1-5-19 1>nul 2>nul || (
 | 
			
		||||
echo ==== Error ====
 | 
			
		||||
echo Right click on this file and select 'Run as administrator'
 | 
			
		||||
echo Press any key to exit...
 | 
			
		||||
pause >nul
 | 
			
		||||
exit /b
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
 | 
			
		||||
 | 
			
		||||
::  Check Windows Edition
 | 
			
		||||
set osedition=
 | 
			
		||||
for /f "tokens=2 delims==" %%a in ('"wmic path SoftwareLicensingProduct where (ApplicationID='55c92734-d682-4d71-983e-d6ec3f16059f' and PartialProductKey is not NULL) get LicenseFamily /VALUE" 2^>nul') do if not errorlevel 1 set "osedition=%%a"
 | 
			
		||||
if not defined osedition for /f "tokens=3 delims=: " %%a in ('DISM /English /Online /Get-CurrentEdition 2^>nul ^| find /i "Current Edition :"') do set "osedition=%%a"
 | 
			
		||||
 | 
			
		||||
::  Check Installation type
 | 
			
		||||
set instype=
 | 
			
		||||
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v InstallationType 2^>nul') do if not errorlevel 1 set "instype=%%b"
 | 
			
		||||
 | 
			
		||||
set KMS38=
 | 
			
		||||
if "%winbuild%" GEQ "17763" if "%osedition%"=="EnterpriseS" set KMS38=1
 | 
			
		||||
if "%winbuild%" GEQ "17763" if "%osedition%"=="EnterpriseSN" set KMS38=1
 | 
			
		||||
if "%osedition%"=="EnterpriseG" set KMS38=1
 | 
			
		||||
if "%osedition%"=="EnterpriseGN" set KMS38=1
 | 
			
		||||
if not "%instype%"=="Client" echo %osedition%| findstr /I /B Server 1>nul && set KMS38=1
 | 
			
		||||
 | 
			
		||||
if defined KMS38 (
 | 
			
		||||
call "%~dp0KMS38_Activation.cmd" /u
 | 
			
		||||
) else (
 | 
			
		||||
call "%~dp0HWID_Activation.cmd" /u
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
cd /d "%SystemRoot%\Setup\"
 | 
			
		||||
if exist "%SystemRoot%\Setup\Scripts\" @RD /S /Q "%SystemRoot%\Setup\Scripts\"
 | 
			
		||||
exit /b
 | 
			
		||||
:HWID_FB_KMS38:
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
:$OEM$KMS
 | 
			
		||||
 | 
			
		||||
cls
 | 
			
		||||
call :Prep
 | 
			
		||||
call :KMSPrep
 | 
			
		||||
call :export KMSSetup "%_dir%\SetupComplete.cmd"
 | 
			
		||||
set error_=
 | 
			
		||||
call :KMSPrep2
 | 
			
		||||
 | 
			
		||||
if defined error_ goto ErrorFound
 | 
			
		||||
set "_oem=Online KMS"
 | 
			
		||||
goto Done
 | 
			
		||||
 | 
			
		||||
:KMSSetup:
 | 
			
		||||
@echo off
 | 
			
		||||
 | 
			
		||||
============================================================================
 | 
			
		||||
 | 
			
		||||
:: Change value from 1 to 0 to disable KMS Renewal And Activation Task
 | 
			
		||||
set Renewal_And_Activation_Task=1
 | 
			
		||||
 | 
			
		||||
:: Change value from 1 to 0 to disable KMS activation desktop context menu 
 | 
			
		||||
set Desktop_context_menu=1
 | 
			
		||||
 | 
			
		||||
============================================================================
 | 
			
		||||
 | 
			
		||||
reg query HKU\S-1-5-19 1>nul 2>nul || (
 | 
			
		||||
echo ==== Error ====
 | 
			
		||||
echo Right click on this file and select 'Run as administrator'
 | 
			
		||||
echo Press any key to exit...
 | 
			
		||||
pause >nul
 | 
			
		||||
exit /b
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
if %Renewal_And_Activation_Task% EQU 1 call "%~dp0Renewal_Setup.cmd" /rat
 | 
			
		||||
if %Desktop_context_menu% EQU 1 call "%~dp0Renewal_Setup.cmd" /dcm
 | 
			
		||||
 | 
			
		||||
cd /d "%SystemRoot%\Setup\"
 | 
			
		||||
if exist "%SystemRoot%\Setup\Scripts\" @RD /S /Q "%SystemRoot%\Setup\Scripts\"
 | 
			
		||||
exit /b
 | 
			
		||||
:KMSSetup:
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
:$OEM$HWIDKMS
 | 
			
		||||
 | 
			
		||||
cls
 | 
			
		||||
call :Prep
 | 
			
		||||
call :HWIDPrep
 | 
			
		||||
call :KMSPrep
 | 
			
		||||
 | 
			
		||||
call :export HWIDKMSSetup "%_dir%\SetupComplete.cmd"
 | 
			
		||||
 | 
			
		||||
set error_=
 | 
			
		||||
call :HWIDPrep2
 | 
			
		||||
call :KMSPrep2
 | 
			
		||||
 | 
			
		||||
if defined error_ goto ErrorFound
 | 
			
		||||
set "_oem=HWID `+ Online KMS"
 | 
			
		||||
goto Done
 | 
			
		||||
 | 
			
		||||
:HWIDKMSSetup:
 | 
			
		||||
@echo off
 | 
			
		||||
 | 
			
		||||
============================================================================
 | 
			
		||||
 | 
			
		||||
:: Change value from 1 to 0 to disable KMS Renewal And Activation Task
 | 
			
		||||
set Renewal_And_Activation_Task=1
 | 
			
		||||
 | 
			
		||||
:: Change value from 1 to 0 to disable KMS activation desktop context menu 
 | 
			
		||||
set Desktop_context_menu=1
 | 
			
		||||
 | 
			
		||||
============================================================================
 | 
			
		||||
 | 
			
		||||
reg query HKU\S-1-5-19 1>nul 2>nul || (
 | 
			
		||||
echo ==== Error ====
 | 
			
		||||
echo Right click on this file and select 'Run as administrator'
 | 
			
		||||
echo Press any key to exit...
 | 
			
		||||
pause >nul
 | 
			
		||||
exit /b
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
call "%~dp0HWID_Activation.cmd" /u
 | 
			
		||||
if defined HWIDAct set SkipWinAct=/swa
 | 
			
		||||
 | 
			
		||||
if %Renewal_And_Activation_Task% EQU 1 call "%~dp0Renewal_Setup.cmd" /rat %SkipWinAct%
 | 
			
		||||
if %Desktop_context_menu% EQU 1 call "%~dp0Renewal_Setup.cmd" /dcm %SkipWinAct%
 | 
			
		||||
 | 
			
		||||
cd /d "%SystemRoot%\Setup\"
 | 
			
		||||
if exist "%SystemRoot%\Setup\Scripts\" @RD /S /Q "%SystemRoot%\Setup\Scripts\"
 | 
			
		||||
exit /b
 | 
			
		||||
:HWIDKMSSetup:
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
:$OEM$KMS38KMS
 | 
			
		||||
 | 
			
		||||
cls
 | 
			
		||||
call :Prep
 | 
			
		||||
call :KMS38Prep
 | 
			
		||||
call :KMSPrep
 | 
			
		||||
call :export KMS38KMSSetup "%_dir%\SetupComplete.cmd"
 | 
			
		||||
set error_=
 | 
			
		||||
call :KMS38Prep2
 | 
			
		||||
call :KMSPrep2
 | 
			
		||||
 | 
			
		||||
if defined error_ goto ErrorFound
 | 
			
		||||
set "_oem=KMS38 `+ Online KMS"
 | 
			
		||||
goto Done
 | 
			
		||||
 | 
			
		||||
:KMS38KMSSetup:
 | 
			
		||||
@echo off
 | 
			
		||||
 | 
			
		||||
============================================================================
 | 
			
		||||
 | 
			
		||||
:: Change value from 1 to 0 to disable KMS Renewal And Activation Task
 | 
			
		||||
set Renewal_And_Activation_Task=1
 | 
			
		||||
 | 
			
		||||
:: Change value from 1 to 0 to disable KMS activation desktop context menu 
 | 
			
		||||
set Desktop_context_menu=1
 | 
			
		||||
 | 
			
		||||
============================================================================
 | 
			
		||||
 | 
			
		||||
reg query HKU\S-1-5-19 1>nul 2>nul || (
 | 
			
		||||
echo ==== Error ====
 | 
			
		||||
echo Right click on this file and select 'Run as administrator'
 | 
			
		||||
echo Press any key to exit...
 | 
			
		||||
pause >nul
 | 
			
		||||
exit /b
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
call "%~dp0KMS38_Activation.cmd" /u
 | 
			
		||||
 | 
			
		||||
if %Renewal_And_Activation_Task% EQU 1 call "%~dp0Renewal_Setup.cmd" /rat
 | 
			
		||||
if %Desktop_context_menu% EQU 1 call "%~dp0Renewal_Setup.cmd" /dcm
 | 
			
		||||
 | 
			
		||||
cd /d "%SystemRoot%\Setup\"
 | 
			
		||||
if exist "%SystemRoot%\Setup\Scripts\" @RD /S /Q "%SystemRoot%\Setup\Scripts\"
 | 
			
		||||
exit /b
 | 
			
		||||
:KMS38KMSSetup:
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
:$OEM$HWID_FB_KMS38-KMS
 | 
			
		||||
 | 
			
		||||
cls
 | 
			
		||||
call :Prep
 | 
			
		||||
 | 
			
		||||
copy /y /b "%HWID_Activation.cmd%" "%_dir%\HWID_Activation.cmd" %nul%
 | 
			
		||||
call :KMS38Prep
 | 
			
		||||
call :KMSPrep
 | 
			
		||||
call :export HWID_FB_KMS38-KMSSetup "%_dir%\SetupComplete.cmd"
 | 
			
		||||
 | 
			
		||||
set error_=
 | 
			
		||||
If not exist "%_dir%\HWID_Activation.cmd" (set error_=1)
 | 
			
		||||
call :KMS38Prep2
 | 
			
		||||
call :KMSPrep2
 | 
			
		||||
 | 
			
		||||
if defined error_ goto ErrorFound
 | 
			
		||||
set "_oem=HWID`, Fallback to KMS38 `+ Online KMS"
 | 
			
		||||
goto Done
 | 
			
		||||
 | 
			
		||||
:HWID_FB_KMS38-KMSSetup:
 | 
			
		||||
@echo off
 | 
			
		||||
 | 
			
		||||
============================================================================
 | 
			
		||||
 | 
			
		||||
:: Change value from 1 to 0 to disable KMS Renewal And Activation Task
 | 
			
		||||
set Renewal_And_Activation_Task=1
 | 
			
		||||
 | 
			
		||||
:: Change value from 1 to 0 to disable KMS activation desktop context menu 
 | 
			
		||||
set Desktop_context_menu=1
 | 
			
		||||
 | 
			
		||||
============================================================================
 | 
			
		||||
 | 
			
		||||
setlocal EnableDelayedExpansion
 | 
			
		||||
reg query HKU\S-1-5-19 1>nul 2>nul || (
 | 
			
		||||
echo ==== Error ====
 | 
			
		||||
echo Right click on this file and select 'Run as administrator'
 | 
			
		||||
echo Press any key to exit...
 | 
			
		||||
pause >nul
 | 
			
		||||
exit /b
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
 | 
			
		||||
 | 
			
		||||
::  Check Windows Edition
 | 
			
		||||
set osedition=
 | 
			
		||||
for /f "tokens=2 delims==" %%a in ('"wmic path SoftwareLicensingProduct where (ApplicationID='55c92734-d682-4d71-983e-d6ec3f16059f' and PartialProductKey is not NULL) get LicenseFamily /VALUE" 2^>nul') do if not errorlevel 1 set "osedition=%%a"
 | 
			
		||||
if not defined osedition for /f "tokens=3 delims=: " %%a in ('DISM /English /Online /Get-CurrentEdition 2^>nul ^| find /i "Current Edition :"') do set "osedition=%%a"
 | 
			
		||||
 | 
			
		||||
::  Check Installation type
 | 
			
		||||
set instype=
 | 
			
		||||
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v InstallationType 2^>nul') do if not errorlevel 1 set "instype=%%b"
 | 
			
		||||
 | 
			
		||||
set KMS38=
 | 
			
		||||
if "%winbuild%" GEQ "17763" if "%osedition%"=="EnterpriseS" set KMS38=1
 | 
			
		||||
if "%winbuild%" GEQ "17763" if "%osedition%"=="EnterpriseSN" set KMS38=1
 | 
			
		||||
if "%osedition%"=="EnterpriseG" set KMS38=1
 | 
			
		||||
if "%osedition%"=="EnterpriseGN" set KMS38=1
 | 
			
		||||
if not "%instype%"=="Client" echo %osedition%| findstr /I /B Server 1>nul && set KMS38=1
 | 
			
		||||
 | 
			
		||||
if defined KMS38 (
 | 
			
		||||
call "%~dp0KMS38_Activation.cmd" /u
 | 
			
		||||
) else (
 | 
			
		||||
call "%~dp0HWID_Activation.cmd" /u
 | 
			
		||||
if defined HWIDAct set SkipWinAct=/swa
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
if %Renewal_And_Activation_Task% EQU 1 call "%~dp0Renewal_Setup.cmd" /rat %SkipWinAct%
 | 
			
		||||
if %Desktop_context_menu% EQU 1 call "%~dp0Renewal_Setup.cmd" /dcm %SkipWinAct%
 | 
			
		||||
 | 
			
		||||
cd /d "%SystemRoot%\Setup\"
 | 
			
		||||
if exist "%SystemRoot%\Setup\Scripts\" @RD /S /Q "%SystemRoot%\Setup\Scripts\"
 | 
			
		||||
exit /b
 | 
			
		||||
:HWID_FB_KMS38-KMSSetup:
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
:ErrorFound
 | 
			
		||||
 | 
			
		||||
%ELine%
 | 
			
		||||
echo $OEM$ Folder was not created successfully...
 | 
			
		||||
goto :Done2
 | 
			
		||||
:Done
 | 
			
		||||
echo ________________________________________________________________________________________________
 | 
			
		||||
echo:
 | 
			
		||||
%EchoGreen% %_oem% `$OEM`$ folder is successfully created on the Desktop.
 | 
			
		||||
echo ________________________________________________________________________________________________
 | 
			
		||||
:Done2
 | 
			
		||||
echo:
 | 
			
		||||
echo Press any key to exit...
 | 
			
		||||
pause >nul
 | 
			
		||||
exit /b
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
:Prep
 | 
			
		||||
 | 
			
		||||
cd /d "%desktop%"
 | 
			
		||||
md "%desktop%\$OEM$\$$\Setup\Scripts\"
 | 
			
		||||
md "%desktop%\$OEM$\$$\Setup\Scripts\BIN"
 | 
			
		||||
 | 
			
		||||
cd /d "!_work!"
 | 
			
		||||
pushd "!_work!"
 | 
			
		||||
cd ..
 | 
			
		||||
cd ..
 | 
			
		||||
 | 
			
		||||
exit /b
 | 
			
		||||
 | 
			
		||||
:HWIDPrep
 | 
			
		||||
 | 
			
		||||
copy /y /b "%HWID_Activation.cmd%" "%_dir%\HWID_Activation.cmd" %nul%
 | 
			
		||||
copy /y /b "%gatherosstate.exe%" "%_dir%\BIN\gatherosstate.exe" %nul%
 | 
			
		||||
copy /y /b "%slc.dll%" "%_dir%\BIN\slc.dll" %nul%
 | 
			
		||||
copy /y /b "%ARM64_gatherosstate.exe%" "%_dir%\BIN\ARM64_gatherosstate.exe" %nul%
 | 
			
		||||
copy /y /b "%ARM64_slc.dll%" "%_dir%\BIN\ARM64_slc.dll" %nul%
 | 
			
		||||
exit /b
 | 
			
		||||
 | 
			
		||||
:KMS38Prep
 | 
			
		||||
 | 
			
		||||
copy /y /b "%KMS38_Activation.cmd%" "%_dir%\KMS38_Activation.cmd" %nul%
 | 
			
		||||
copy /y /b "%ClipUp.exe%" "%_dir%\BIN\ClipUp.exe" %nul%
 | 
			
		||||
copy /y /b "%gatherosstate.exe%" "%_dir%\BIN\gatherosstate.exe" %nul%
 | 
			
		||||
copy /y /b "%slc.dll%" "%_dir%\BIN\slc.dll" %nul%
 | 
			
		||||
copy /y /b "%ARM64_gatherosstate.exe%" "%_dir%\BIN\ARM64_gatherosstate.exe" %nul%
 | 
			
		||||
copy /y /b "%ARM64_slc.dll%" "%_dir%\BIN\ARM64_slc.dll" %nul%
 | 
			
		||||
exit /b
 | 
			
		||||
 | 
			
		||||
:KMSPrep
 | 
			
		||||
 | 
			
		||||
copy /y /b "%Activate.cmd%" "%_dir%\Activate.cmd" %nul%
 | 
			
		||||
copy /y /b "%Renewal_Setup.cmd%" "%_dir%\Renewal_Setup.cmd" %nul%
 | 
			
		||||
copy /y /b "%cleanosppx64.exe%" "%_dir%\BIN\cleanosppx64.exe" %nul%
 | 
			
		||||
copy /y /b "%cleanosppx86.exe%" "%_dir%\BIN\cleanosppx86.exe" %nul%
 | 
			
		||||
exit /b
 | 
			
		||||
 | 
			
		||||
:HWIDPrep2
 | 
			
		||||
 | 
			
		||||
If not exist "%_dir%\HWID_Activation.cmd" (set error_=1)
 | 
			
		||||
If not exist "%_dir%\BIN\gatherosstate.exe" (set error_=1)
 | 
			
		||||
If not exist "%_dir%\BIN\slc.dll" (set error_=1)
 | 
			
		||||
If not exist "%_dir%\BIN\ARM64_gatherosstate.exe" (set error_=1)
 | 
			
		||||
If not exist "%_dir%\BIN\ARM64_slc.dll" (set error_=1)
 | 
			
		||||
If not exist "%_dir%\SetupComplete.cmd" (set error_=1)
 | 
			
		||||
exit /b
 | 
			
		||||
 | 
			
		||||
:KMS38Prep2
 | 
			
		||||
 | 
			
		||||
If not exist "%_dir%\KMS38_Activation.cmd" (set error_=1)
 | 
			
		||||
If not exist "%_dir%\BIN\ClipUp.exe" (set error_=1)
 | 
			
		||||
If not exist "%_dir%\BIN\gatherosstate.exe" (set error_=1)
 | 
			
		||||
If not exist "%_dir%\BIN\slc.dll" (set error_=1)
 | 
			
		||||
If not exist "%_dir%\BIN\ARM64_gatherosstate.exe" (set error_=1)
 | 
			
		||||
If not exist "%_dir%\BIN\ARM64_slc.dll" (set error_=1)
 | 
			
		||||
If not exist "%_dir%\SetupComplete.cmd" (set error_=1)
 | 
			
		||||
exit /b
 | 
			
		||||
 | 
			
		||||
:KMSPrep2
 | 
			
		||||
 | 
			
		||||
If not exist "%_dir%\Activate.cmd" (set error_=1)
 | 
			
		||||
If not exist "%_dir%\Renewal_Setup.cmd" (set error_=1)
 | 
			
		||||
If not exist "%_dir%\BIN\cleanosppx64.exe" (set error_=1)
 | 
			
		||||
If not exist "%_dir%\BIN\cleanosppx86.exe" (set error_=1)
 | 
			
		||||
If not exist "%_dir%\SetupComplete.cmd" (set error_=1)
 | 
			
		||||
exit /b
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
::  Extract the text from batch script without character and file encoding issue
 | 
			
		||||
::  Thanks to @abbodi1406
 | 
			
		||||
 | 
			
		||||
:export
 | 
			
		||||
%nul% %_psc% "$f=[io.file]::ReadAllText('!_batp!') -split \":%~1\:.*`r`n\"; [io.file]::WriteAllText('%~2',$f[1].Trim(),[System.Text.Encoding]::ASCII);" &exit/b
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,123 @@
 | 
			
		|||
====================================================================================================
 | 
			
		||||
   $OEM$ Folders [Windows Pre-Activation]:
 | 
			
		||||
====================================================================================================
 | 
			
		||||
 | 
			
		||||
 - To create a Preactivated Windows installation .iso, do the following things:
 | 
			
		||||
   Copy the "$OEM$" folder to the "sources" folder in the Windows installation media (.iso or USB).
 | 
			
		||||
   The directory will appear like this: \sources\$OEM$ in your altered .iso or on your bootable 
 | 
			
		||||
   USB drive.
 | 
			
		||||
   Now use this .iso or bootable USB drive to install Windows and it will either already be activated 
 | 
			
		||||
   (KMS38) as soon as it boots, or will self-activate at first internet contact. 
 | 
			
		||||
 | 
			
		||||
----------------------------------------------------------------------------------------------------
 | 
			
		||||
   HWID:
 | 
			
		||||
----------------------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
 - When using Digital License (HWID), no files are stored on the system, and when connected to the 
 | 
			
		||||
   internet for the first time, the system will self-activate at that time.
 | 
			
		||||
   
 | 
			
		||||
----------------------------------------------------------------------------------------------------
 | 
			
		||||
   KMS38:
 | 
			
		||||
----------------------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
 - When using KMS38, no files are stored on the system, and Windows becomes activated immediately 
 | 
			
		||||
   without further actions or connectivity of any kind being required.
 | 
			
		||||
 | 
			
		||||
----------------------------------------------------------------------------------------------------
 | 
			
		||||
   Online KMS (separately, or in combination with HWID or KMS38):
 | 
			
		||||
----------------------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
 - It creates the following 2 Activation/Renewal Methods. You can turn off any of them in 
 | 
			
		||||
   setupcomplete.cmd file
 | 
			
		||||
 | 
			
		||||
   ----------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
   1- Automatic Renewal via Task Scheduler---
 | 
			
		||||
 | 
			
		||||
   It creates following files and tasks,
 | 
			
		||||
 | 
			
		||||
   Files:
 | 
			
		||||
   C:\ProgramData\Online_KMS_Activation\BIN\cleanosppx64.exe
 | 
			
		||||
   C:\ProgramData\Online_KMS_Activation\BIN\cleanosppx86.exe
 | 
			
		||||
   C:\ProgramData\Online_KMS_Activation\Activate.cmd
 | 
			
		||||
   C:\ProgramData\Online_KMS_Activation\Info.txt
 | 
			
		||||
 | 
			
		||||
   Scheduled Tasks:
 | 
			
		||||
   \Online_KMS_Activation_Script-Renewal  (Weekly)
 | 
			
		||||
   \Online_KMS_Activation_Script-Run_Once (Activation Task)
 | 
			
		||||
 | 
			
		||||
   The scheduled task runs only if the system is connected to the Internet.
 | 
			
		||||
   Activation Task will run on the system login and after successful activation and registering 
 | 
			
		||||
   online KMS server, this task will delete itself. leaving behind only one task to run weekly 
 | 
			
		||||
   for the lifetime of the system. 
 | 
			
		||||
 | 
			
		||||
   ----------------------------------------------------------
 | 
			
		||||
   
 | 
			
		||||
   2- Manual Renewal via Desktop Context Menu---
 | 
			
		||||
 | 
			
		||||
   It creates Desktop context Menu for manual activation and renewal.
 | 
			
		||||
   It creates the following files and registry entries.
 | 
			
		||||
 | 
			
		||||
   Files:
 | 
			
		||||
   C:\ProgramData\Online_KMS_Activation\BIN\cleanosppx64.exe
 | 
			
		||||
   C:\ProgramData\Online_KMS_Activation\BIN\cleanosppx86.exe
 | 
			
		||||
   C:\ProgramData\Online_KMS_Activation\Activate.cmd
 | 
			
		||||
   C:\ProgramData\Online_KMS_Activation\Info.txt
 | 
			
		||||
   
 | 
			
		||||
   Registry entries:
 | 
			
		||||
   HKCR\DesktopBackground\shell\Activate Windows - Office
 | 
			
		||||
   HKCR\DesktopBackground\shell\Activate Windows - Office\command
 | 
			
		||||
 | 
			
		||||
   It creates an easy to reach the Desktop context menu for the manual activation renewal.
 | 
			
		||||
   
 | 
			
		||||
   ----------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
   d30a0e4e5911d3ca705617d17225372731c770e2 *cleanosppx64.exe                   Virus Total = 0/66
 | 
			
		||||
   39ed8659e7ca16aaccb86def94ce6cec4c847dd6 *cleanosppx86.exe                   Virus Total = 1/66
 | 
			
		||||
 | 
			
		||||
   Virus Total Report Date: 12-11-2019
 | 
			
		||||
   
 | 
			
		||||
   These files are official Microsoft files and in this script, these are used in 
 | 
			
		||||
   cleaning office license in C2R Retail office to VL conversion process.
 | 
			
		||||
   
 | 
			
		||||
   The source of these files is the 'old' version of Microsoft Tool O15CTRRemove.diagcab
 | 
			
		||||
   You can get the original file here https://s.put.re/WFuXpyWA.zip
 | 
			
		||||
 | 
			
		||||
   ----------------------------------------------------------
 | 
			
		||||
   
 | 
			
		||||
   IMPORTANT NOTE - Some sensitive AV's may flag the Automatic Renewal via the Task, and not 
 | 
			
		||||
   because of KMS, because for them it's suspicious to run long scripts in the background as Tasks.
 | 
			
		||||
 | 
			
		||||
   It's recommended to set exclusions in Antivirus for
 | 
			
		||||
   C:\ProgramData\Online_KMS_Activation\Activate.cmd
 | 
			
		||||
 | 
			
		||||
   ----------------------------------------------------------
 | 
			
		||||
   
 | 
			
		||||
 - When using Online KMS plus HWID Digital License, Online KMS script will be set to skip Windows 
 | 
			
		||||
   activation (if the HWID activation was applied but was not successful due to lack of internet 
 | 
			
		||||
   at the time of installation of Windows) but will register the KMS for other products, and all 
 | 
			
		||||
   later installed Volume License (VL) products (MS Office) will self-activate when going online. 
 | 
			
		||||
 | 
			
		||||
 - When using Online KMS plus KMS38, Online KMS will not skip Windows activation but skip KMS38 
 | 
			
		||||
   activation and will register the KMS for other products, and all subsequently-installed Volume 
 | 
			
		||||
   License (VL) products (MS Office) will self-activate when going online.
 | 
			
		||||
 | 
			
		||||
----------------------------------------------------------------------------------------------------
 | 
			
		||||
   HWID (Fallback to KMS38):
 | 
			
		||||
----------------------------------------------------------------------------------------------------
 | 
			
		||||
  
 | 
			
		||||
 - In this method, KMS38 will be used for the activation in case the Windows version is not 
 | 
			
		||||
   supported by HWID. For example, Windows 10 LTSC and Windows server.
 | 
			
		||||
 | 
			
		||||
----------------------------------------------------------------------------------------------------
 | 
			
		||||
   Activation Type       Supported Product             Activation Period
 | 
			
		||||
----------------------------------------------------------------------------------------------------
 | 
			
		||||
   
 | 
			
		||||
   Digital License    -  Windows 10                 -  Permanent
 | 
			
		||||
   KMS38              -  Windows 10 / Server        -  Until the year 2038
 | 
			
		||||
   Online KMS         -  Windows / Server / Office  -  For 180 Days, renewal task needs to be 
 | 
			
		||||
                                                       created for lifetime auto-activation.
 | 
			
		||||
   
 | 
			
		||||
----------------------------------------------------------------------------------------------------
 | 
			
		||||
   
 | 
			
		||||
   * For more details, use the ReadMe.txt included in the respective activation folders.
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,412 @@
 | 
			
		|||
@setlocal DisableDelayedExpansion
 | 
			
		||||
@echo off
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
:: =======================================================================================================
 | 
			
		||||
::
 | 
			
		||||
::   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
 | 
			
		||||
::
 | 
			
		||||
:: =======================================================================================================
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
title Protect / Unprotect KMS38 Activation
 | 
			
		||||
set _elev=
 | 
			
		||||
if /i "%~1"=="-el" set _elev=1
 | 
			
		||||
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
 | 
			
		||||
set "_psc=powershell -nop -ep bypass -c"
 | 
			
		||||
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 :PU_color "==== ERROR ====" %Red% &echo:"
 | 
			
		||||
set line=__________________________________________________________________________________________________
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
for %%i in (powershell.exe) do if "%%~$path:i"=="" (
 | 
			
		||||
echo: &echo ==== ERROR ==== &echo:
 | 
			
		||||
echo Powershell is not installed in the system.
 | 
			
		||||
echo Aborting...
 | 
			
		||||
goto PU_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 PU_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 :Passed
 | 
			
		||||
  ) || (
 | 
			
		||||
  if defined _elev goto :E_Admin
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
set "_batf=%~f0"
 | 
			
		||||
set "_vbsf=%temp%\admin.vbs"
 | 
			
		||||
set _PSarg="""%~f0""" -el
 | 
			
		||||
 | 
			
		||||
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) && (
 | 
			
		||||
del /f /q "!_vbsf!"
 | 
			
		||||
exit /b
 | 
			
		||||
) || (
 | 
			
		||||
del /f /q "!_vbsf!"
 | 
			
		||||
%nul% %_psc% "start cmd.exe -arg '/c \"!_PSarg:'=''!\"' -verb runas" && (
 | 
			
		||||
exit /b
 | 
			
		||||
) || (
 | 
			
		||||
goto :E_Admin
 | 
			
		||||
)
 | 
			
		||||
)
 | 
			
		||||
exit /b
 | 
			
		||||
 | 
			
		||||
:E_Admin
 | 
			
		||||
%ELine%
 | 
			
		||||
echo This script require administrator privileges.
 | 
			
		||||
echo To do so, right click on this script and select 'Run as administrator'.
 | 
			
		||||
goto PU_Done
 | 
			
		||||
 | 
			
		||||
:Passed
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
mode con: cols=98 lines=30
 | 
			
		||||
 | 
			
		||||
set slp=SoftwareLicensingProduct
 | 
			
		||||
set sls=SoftwareLicensingService
 | 
			
		||||
set wApp=55c92734-d682-4d71-983e-d6ec3f16059f
 | 
			
		||||
set "SPPk=SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform"
 | 
			
		||||
 | 
			
		||||
::  Fix for the special characters limitation in path name
 | 
			
		||||
::  Written by @abbodi1406
 | 
			
		||||
 | 
			
		||||
set "_batf=%~f0"
 | 
			
		||||
set "_batp=%_batf:'=''%"
 | 
			
		||||
 | 
			
		||||
setlocal EnableDelayedExpansion
 | 
			
		||||
 | 
			
		||||
::  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"
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
cls
 | 
			
		||||
echo:
 | 
			
		||||
echo %line%
 | 
			
		||||
echo:
 | 
			
		||||
echo    [1] Protect KMS38 Activation from being overwritten by 180 days KMS Activators
 | 
			
		||||
echo:   
 | 
			
		||||
echo    [2] Undo changes
 | 
			
		||||
echo:   
 | 
			
		||||
echo    [3] Exit
 | 
			
		||||
echo:
 | 
			
		||||
echo %line%
 | 
			
		||||
echo:
 | 
			
		||||
choice /C:123 /N /M ">  Enter Your Choice [1,2,3] : "
 | 
			
		||||
 | 
			
		||||
if errorlevel 3 exit /b
 | 
			
		||||
if errorlevel 2 goto Undo
 | 
			
		||||
if errorlevel 1 goto Protect
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
:Protect
 | 
			
		||||
 | 
			
		||||
cls
 | 
			
		||||
 | 
			
		||||
::  Check KMS client setup key
 | 
			
		||||
 | 
			
		||||
set _gvlk=
 | 
			
		||||
wmic path %slp% where "ApplicationID='%wApp%' and PartialProductKey<>null" Get ProductKeyChannel 2>nul | findstr /i GVLK 1>nul && (set _gvlk=1)
 | 
			
		||||
 | 
			
		||||
if not defined _gvlk (
 | 
			
		||||
%ELine%
 | 
			
		||||
echo System is not activated with KMS38. ^(KMS Key is not installed^)  Aborting...
 | 
			
		||||
goto PU_Done
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
::  Check Activation Grace Period
 | 
			
		||||
 | 
			
		||||
set gpr=
 | 
			
		||||
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=%%#"
 | 
			
		||||
 | 
			
		||||
if "%gpr%" LEQ "259200" (
 | 
			
		||||
%ELine%
 | 
			
		||||
echo System is not activated with KMS38.  Aborting...
 | 
			
		||||
goto PU_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 PU_Done
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
::  Check Windows Edition with SKU value for better accuracy
 | 
			
		||||
 | 
			
		||||
set osedition=
 | 
			
		||||
call :K38_CheckEdition %nul%
 | 
			
		||||
 | 
			
		||||
if "%osedition%"=="" (
 | 
			
		||||
%ELine%
 | 
			
		||||
echo OS Edition was not detected properly. Aborting...
 | 
			
		||||
goto PU_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"
 | 
			
		||||
 | 
			
		||||
if "%app%"=="" (
 | 
			
		||||
%ELine%
 | 
			
		||||
echo Activation ID was not detected properly. Aborting...
 | 
			
		||||
goto PU_Done
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
wmic path %sls% where __CLASS='%sls%' call ClearKeyManagementServiceMachine %nul%
 | 
			
		||||
wmic path %sls% where __CLASS='%sls%' call ClearKeyManagementServicePort %nul%
 | 
			
		||||
 | 
			
		||||
reg query "HKLM\%SPPk%\%wApp%" %nul% && (
 | 
			
		||||
%nul% call :reg_takeownership "HKLM\%SPPk%\%wApp%" FullControl Allow S-1-5-32-544
 | 
			
		||||
reg delete "HKLM\%SPPk%\%wApp%" /f %nul%
 | 
			
		||||
reg delete "HKU\S-1-5-20\%SPPk%\%wApp%" /f %nul%
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
reg query "HKLM\%SPPk%\%wApp%" %nul% && (
 | 
			
		||||
%ELine%
 | 
			
		||||
echo Registry Key was not cleared successfully. Aborting...
 | 
			
		||||
goto PU_Done
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
::  Set specific KMS host to Local Host
 | 
			
		||||
::  Thanks to @abbodi1406
 | 
			
		||||
 | 
			
		||||
set setkms_error=
 | 
			
		||||
 | 
			
		||||
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 defined setkms_error (
 | 
			
		||||
reg delete "HKLM\%SPPk%\%wApp%" /f %nul%
 | 
			
		||||
reg delete "HKU\S-1-5-20\%SPPk%\%wApp%" /f %nul%
 | 
			
		||||
%ELine%
 | 
			
		||||
echo Specific KMS host to Local Host was not properly applied. Aborting...
 | 
			
		||||
goto PU_Done
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
%nul% call :reg_takeownership "HKLM\%SPPk%\%wApp%" "SetValue, Delete" Deny S-1-5-32-544
 | 
			
		||||
 | 
			
		||||
reg delete "HKLM\%SPPk%\%wApp%" /f %nul%
 | 
			
		||||
reg query "HKLM\%SPPk%\%wApp%" %nul% || (
 | 
			
		||||
%ELine%
 | 
			
		||||
echo Registry Key was not protected properly. Aborting...
 | 
			
		||||
goto PU_Done
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
::  Check Activation Grace Period
 | 
			
		||||
 | 
			
		||||
set gpr=
 | 
			
		||||
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=%%#"
 | 
			
		||||
 | 
			
		||||
if "%gpr%" LEQ "259200" (
 | 
			
		||||
%ELine%
 | 
			
		||||
echo System is not activated with KMS38.
 | 
			
		||||
goto PU_Done
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
cls
 | 
			
		||||
echo:
 | 
			
		||||
echo %line%
 | 
			
		||||
echo:
 | 
			
		||||
echo Specific KMS host set to 127.0.0.2 ^(Local Host^) successfully.
 | 
			
		||||
echo:
 | 
			
		||||
echo Registry item locked successfully.
 | 
			
		||||
echo HKLM\%SPPk%\%wApp%
 | 
			
		||||
echo:
 | 
			
		||||
call :PU_color "%winos% - KMS38 Activation is now protected." %Green%
 | 
			
		||||
echo:
 | 
			
		||||
echo Now you need to activate Office with KMS ^(If required^)
 | 
			
		||||
echo:
 | 
			
		||||
echo %line%
 | 
			
		||||
 | 
			
		||||
goto PU_Done
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
:Undo
 | 
			
		||||
 | 
			
		||||
cls
 | 
			
		||||
set exist_=
 | 
			
		||||
reg query "HKLM\%SPPk%\%wApp%" %nul% && (set exist_=1)
 | 
			
		||||
 | 
			
		||||
if defined exist_ (
 | 
			
		||||
%nul% call :reg_takeownership "HKLM\%SPPk%\%wApp%" FullControl Allow S-1-5-32-544
 | 
			
		||||
reg delete "HKLM\%SPPk%\%wApp%" /f %nul%
 | 
			
		||||
reg delete "HKU\S-1-5-20\%SPPk%\%wApp%" /f %nul%
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
reg query "HKLM\%SPPk%\%wApp%" %nul% && (
 | 
			
		||||
%ELine%
 | 
			
		||||
echo Registry Key was not cleared successfully. Aborting...
 | 
			
		||||
goto PU_Done
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
echo:
 | 
			
		||||
echo %line%
 | 
			
		||||
echo:
 | 
			
		||||
if defined exist_ (
 | 
			
		||||
echo Registry item deleted successfully.
 | 
			
		||||
echo HKLM\%SPPk%\%wApp%
 | 
			
		||||
echo:
 | 
			
		||||
call :PU_color "KMS38 Activation is now unprotected [set to default]" %Green%
 | 
			
		||||
) else (
 | 
			
		||||
call :PU_color "It is already unprotected [set to default]" %Green%
 | 
			
		||||
)
 | 
			
		||||
echo:
 | 
			
		||||
echo %line%
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
:PU_Done
 | 
			
		||||
echo:
 | 
			
		||||
echo Press any key to exit...
 | 
			
		||||
pause >nul
 | 
			
		||||
exit /b
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
:PU_color
 | 
			
		||||
 | 
			
		||||
%_psc% write-host '%1' -fore '%2' -back '%3'
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
::  Reg_takeownership snippet
 | 
			
		||||
::  Written by @AveYo aka @BAU
 | 
			
		||||
::  pastebin.com/XTPt0JSC
 | 
			
		||||
 | 
			
		||||
:reg_takeownership
 | 
			
		||||
set "pargs=$regkey='%~1'; $p='%~2'; $a='%~3'; $u='%~4'; $o='%~5';"
 | 
			
		||||
%_psc% "%pargs%; $f=[io.file]::ReadAllText('!_batp!') -split ':ps_reg_own\:.*';iex ($f[1]);" & exit/b:ps_reg_own:
 | 
			
		||||
$dll0='[DllImport("ntdll.dll")]public static extern IntPtr RtlAdjustPrivilege(int a,bool b,bool c,ref bool d);';
 | 
			
		||||
$nt=Add-Type -Member $dll0 -Name Nt -PassThru; foreach($i in @(9,17,18)){$null=$nt::RtlAdjustPrivilege($i,1,0,[ref]0)}
 | 
			
		||||
$root=$true; if($o -eq ''){$o=$u}; $rk=$regkey -split '\\',2; $key=$rk[1];
 | 
			
		||||
switch -regex ($rk[0]){ '[mM]'{$HK='LocalMachine'};'[uU]'{$HK='CurrentUser'};default{$HK='ClassesRoot'}; }
 | 
			
		||||
$usr=0,0,0; $sec=0,0,0; $rule=0,0,0; $perm='FullControl',$p,$p; $access='Allow',$a,$a; $s=$o,$u,'S-1-5-32-544';
 | 
			
		||||
for($i=0;$i -le 2;$i++){ $usr[$i]=[System.Security.Principal.SecurityIdentifier]$s[$i];
 | 
			
		||||
$rule[$i]=[System.Security.AccessControl.RegistryAccessRule]::new($usr[$i], $perm[$i], 3, 0, $access[$i]);
 | 
			
		||||
$sec[$i]=[System.Security.AccessControl.RegistrySecurity]::new(); }
 | 
			
		||||
function Reg_TakeOwnership { param($hive, $key, $root=$false);
 | 
			
		||||
$reg=[Microsoft.Win32.Registry]::$hive.OpenSubKey($key,'ReadWriteSubTree','TakeOwnership'); $sec[2].SetOwner($usr[2]);
 | 
			
		||||
$reg.SetAccessControl($sec[2]); if($root){ $reg=$reg.OpenSubKey('','ReadWriteSubTree','ChangePermissions');
 | 
			
		||||
$acl=$reg.GetAccessControl(); $acl.SetAccessRuleProtection($false,$false); $acl.ResetAccessRule($rule[1]);
 | 
			
		||||
$reg.SetAccessControl($acl); } $sec[0].SetOwner($usr[0]); $reg.SetAccessControl($sec[0]); }
 | 
			
		||||
Reg_TakeOwnership $HK $key $true; if($root){ $r=[Microsoft.Win32.Registry]::$HK.OpenSubKey($key);
 | 
			
		||||
foreach($sk in $r.GetSubKeyNames()){try{ Reg_TakeOwnership $HK "$($key+'\\'+$sk)" $false}catch{} }}
 | 
			
		||||
Get-Acl "$($rk[0]+':\\'+$rk[1])" | fl:ps_reg_own:
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,48 @@
 | 
			
		|||
====================================================================================================
 | 
			
		||||
   KMS38 Protection:
 | 
			
		||||
====================================================================================================
 | 
			
		||||
 | 
			
		||||
 - If you don't know what KMS38 is, then first check it in the Read Me.
 | 
			
		||||
 | 
			
		||||
 - By default, a KMS38 Activation is vulnerable to unintended overwriting/replacement and 
 | 
			
		||||
   neutralization by a 180-Day KMS Activator (non-KMS38 Activator).
 | 
			
		||||
   However, with a few tricks you can ensure that no alternative KMS Activator can replace KMS38 
 | 
			
		||||
   Activation by accident or even on purpose. This script demonstrate how to do/undo that.
 | 
			
		||||
 | 
			
		||||
 - Protect KMS38:
 | 
			
		||||
   - How does KMS38 Protection work?
 | 
			
		||||
     In the KMS activation method, the Windows Operating System first checks the KMS IP registered 
 | 
			
		||||
     as a specific KMS, and if that is not defined then it checks the Global KMS IP.
 | 
			
		||||
     Another fact is that if LocalHost (127.0.0.2) is defined as KMS IP in the Windows 8.1 and 10 OS's
 | 
			
		||||
     then Windows will not accept it as a valid KMS IP.
 | 
			
		||||
     This script simply utilizes the above facts to protect the KMS38 activation from being 
 | 
			
		||||
     overwritten by any alternative 'normal' 180-Day KMS Activation.
 | 
			
		||||
 | 
			
		||||
     Script steps-
 | 
			
		||||
     - Check if Windows is activated with KMS38, if yes,
 | 
			
		||||
     - Set that Windows edition specific KMS IP to LocalHost (127.0.0.2),
 | 
			
		||||
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\55c92734-d682-4d71-983e-d6ec3f16059f\XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
 | 
			
		||||
where X is Windows edition Activation ID.
 | 
			
		||||
 | 
			
		||||
     - Lock this Registry with Reg_takeownership snippet by @AveYo aka @BAU
 | 
			
		||||
       pastebin.com/XTPt0JSC
 | 
			
		||||
     - Done.
 | 
			
		||||
 | 
			
		||||
 - Unprotect KMS38:
 | 
			
		||||
   - Just undo above steps,
 | 
			
		||||
     - Give administrator full control of that mentioned registry key.
 | 
			
		||||
     - Delete that registry key.
 | 
			
		||||
     - Done.
 | 
			
		||||
 | 
			
		||||
=======================================================================================================
 | 
			
		||||
 | 
			
		||||
  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
 | 
			
		||||
 | 
			
		||||
=======================================================================================================
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,291 @@
 | 
			
		|||
@setlocal DisableDelayedExpansion
 | 
			
		||||
@echo off
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
:: =======================================================================================================
 | 
			
		||||
::
 | 
			
		||||
::   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
 | 
			
		||||
::
 | 
			
		||||
:: =======================================================================================================
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
cls
 | 
			
		||||
title Change Windows 10 Edition with Retail/OEM Key
 | 
			
		||||
set _elev=
 | 
			
		||||
if /i "%~1"=="-el" set _elev=1
 | 
			
		||||
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
 | 
			
		||||
set "_psc=powershell -nop -ep bypass -c"
 | 
			
		||||
set "nul=1>nul 2>nul"
 | 
			
		||||
set "ELine=echo: &echo ==== ERROR ==== &echo:"
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
if %winbuild% LSS 17134 (
 | 
			
		||||
%ELine%
 | 
			
		||||
echo Unsupported OS version Detected.
 | 
			
		||||
echo OS Requirement - Windows 10 [17134] 1803 and later builds.
 | 
			
		||||
goto Ced_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 :Passed
 | 
			
		||||
  ) || (
 | 
			
		||||
  if defined _elev goto :E_Admin
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
set "_batf=%~f0"
 | 
			
		||||
set "_vbsf=%temp%\admin.vbs"
 | 
			
		||||
set _PSarg="""%~f0""" -el
 | 
			
		||||
 | 
			
		||||
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) && (
 | 
			
		||||
del /f /q "!_vbsf!"
 | 
			
		||||
exit /b
 | 
			
		||||
) || (
 | 
			
		||||
del /f /q "!_vbsf!"
 | 
			
		||||
%nul% %_psc% "start cmd.exe -arg '/c \"!_PSarg:'=''!\"' -verb runas" && (
 | 
			
		||||
exit /b
 | 
			
		||||
) || (
 | 
			
		||||
goto :E_Admin
 | 
			
		||||
)
 | 
			
		||||
)
 | 
			
		||||
exit /b
 | 
			
		||||
 | 
			
		||||
:E_Admin
 | 
			
		||||
%ELine%
 | 
			
		||||
echo This script require administrator privileges.
 | 
			
		||||
echo To do so, right click on this script and select 'Run as administrator'.
 | 
			
		||||
goto Ced_Done
 | 
			
		||||
 | 
			
		||||
:Passed
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
::  Set buffer height independently of window height
 | 
			
		||||
::  https://stackoverflow.com/a/13351373
 | 
			
		||||
::  Written by @dbenham
 | 
			
		||||
 | 
			
		||||
mode con: cols=98 lines=31
 | 
			
		||||
%nul% %_psc% "&{$H=get-host;$W=$H.ui.rawui;$B=$W.buffersize;$B.height=36;$W.buffersize=$B;}"
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
set slp=SoftwareLicensingProduct
 | 
			
		||||
set sls=SoftwareLicensingService
 | 
			
		||||
set wApp=55c92734-d682-4d71-983e-d6ec3f16059f
 | 
			
		||||
setlocal EnableDelayedExpansion
 | 
			
		||||
 | 
			
		||||
::  Check Installation type
 | 
			
		||||
set instype=
 | 
			
		||||
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v InstallationType 2^>nul') do if not errorlevel 1 set "instype=%%b"
 | 
			
		||||
 | 
			
		||||
if not "%instype%"=="Client" (
 | 
			
		||||
%ELine%
 | 
			
		||||
echo Unsupported OS version [Server] Detected.
 | 
			
		||||
echo OS Requirement - Windows 10 [17134] 1803 and later builds.
 | 
			
		||||
goto Ced_Done
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
::  Check Windows Edition
 | 
			
		||||
set osedition=
 | 
			
		||||
for /f "tokens=2 delims==" %%a in ('"wmic path %slp% where (ApplicationID='%wApp%' and PartialProductKey is not NULL) get LicenseFamily /VALUE" 2^>nul') do if not errorlevel 1 set "osedition=%%a"
 | 
			
		||||
if not defined osedition for /f "tokens=3 delims=: " %%a in ('DISM /English /Online /Get-CurrentEdition 2^>nul ^| find /i "Current Edition :"') do set "osedition=%%a"
 | 
			
		||||
 | 
			
		||||
cls
 | 
			
		||||
if "%osedition%"=="" (
 | 
			
		||||
%ELine%
 | 
			
		||||
echo OS Edition was not detected properly. Aborting...
 | 
			
		||||
goto Ced_Done
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
echo _______________________________________________________________________________________________
 | 
			
		||||
echo:
 | 
			
		||||
echo  Note 1 - This script can not change 'Core'(Home) to 'Non-Core' (Pro) Editions.
 | 
			
		||||
echo           You'll have to do the above manually, Follow these steps.
 | 
			
		||||
echo         - Disable internet.
 | 
			
		||||
echo         - Go to Settings ^> Update ^& Security ^> Activation and 
 | 
			
		||||
echo           Insert 'Pro' Edition Product Key VK7JG-NPHTM-C97JM-9MPGT-3V66T
 | 
			
		||||
echo         - Follow on screen instructions, Done.
 | 
			
		||||
echo:
 | 
			
		||||
echo  Note 2 - Following option works only in W10 17134 (RS4) and later builds.
 | 
			
		||||
echo _______________________________________________________________________________________________
 | 
			
		||||
echo:
 | 
			
		||||
echo   You can change the Current Edition '%osedition%' to one of the following :
 | 
			
		||||
echo _______________________________________________________________________________________________
 | 
			
		||||
 | 
			
		||||
REM Thanks to @RPO for the help in codes
 | 
			
		||||
 | 
			
		||||
echo:
 | 
			
		||||
for /f "tokens=4" %%a in ('dism /online /english /Get-TargetEditions ^| findstr /i /c:"Target Edition : "') do echo %%a
 | 
			
		||||
echo:
 | 
			
		||||
choice /C:21 /N /M "[1] Continue [2] Exit : "
 | 
			
		||||
if %errorlevel%==1 exit /b
 | 
			
		||||
echo:
 | 
			
		||||
 | 
			
		||||
for /f "tokens=4" %%a in ('dism /online /english /Get-TargetEditions ^| findstr /i /c:"Target Edition : "') do (
 | 
			
		||||
 | 
			
		||||
choice /C:NY /N /M "Do you want to change to the %%a edition? [Y,N] : "
 | 
			
		||||
if errorlevel 2 (
 | 
			
		||||
 | 
			
		||||
call :%%a %nul%
 | 
			
		||||
if "!key!"=="" cls &%ELine% &echo [%%a ^| %winbuild%] HWID Activation is Not Supported. &goto Ced_Done
 | 
			
		||||
 | 
			
		||||
cls
 | 
			
		||||
echo ____________________________________________________________________
 | 
			
		||||
 | 
			
		||||
REM  Thanks to @abbodi1406 for the WMI methods
 | 
			
		||||
 | 
			
		||||
echo:
 | 
			
		||||
echo Changing the Edition to Windows 10 %%a
 | 
			
		||||
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=%%#"
 | 
			
		||||
wmic path %sls% where __CLASS='%sls%' call RefreshLicenseStatus %nul%
 | 
			
		||||
echo:
 | 
			
		||||
call echo Installing %%_channel%% Key [!key!] 
 | 
			
		||||
echo [Successful]
 | 
			
		||||
echo:
 | 
			
		||||
echo Reboot is required to properly change the Edition.
 | 
			
		||||
) || (
 | 
			
		||||
%ELine%
 | 
			
		||||
echo Installing Retail/OEM Key [!key!]
 | 
			
		||||
echo [Unsuccessful]
 | 
			
		||||
)
 | 
			
		||||
echo ____________________________________________________________________
 | 
			
		||||
 | 
			
		||||
goto Ced_Done
 | 
			
		||||
))
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
:Ced_Done
 | 
			
		||||
 | 
			
		||||
echo:
 | 
			
		||||
echo Press any key to exit...
 | 
			
		||||
pause >nul
 | 
			
		||||
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"
 | 
			
		||||
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"
 | 
			
		||||
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,322 @@
 | 
			
		|||
@setlocal DisableDelayedExpansion
 | 
			
		||||
@echo off
 | 
			
		||||
 | 
			
		||||
:: For unattended mode, run the script with /u parameter.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
:: =======================================================================================================
 | 
			
		||||
::
 | 
			
		||||
::   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
 | 
			
		||||
::
 | 
			
		||||
:: =======================================================================================================
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
cls
 | 
			
		||||
title Install Windows 10 Retail/OEM Key
 | 
			
		||||
set Unattended=
 | 
			
		||||
set _args=
 | 
			
		||||
set _elev=
 | 
			
		||||
set "_arg1=%~1"
 | 
			
		||||
if not defined _arg1 goto :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)
 | 
			
		||||
:NoProgArgs
 | 
			
		||||
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
 | 
			
		||||
set "_psc=powershell -nop -ep bypass -c"
 | 
			
		||||
set "nul=1>nul 2>nul"
 | 
			
		||||
set "ELine=echo: &echo ==== ERROR ==== &echo:"
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
if %winbuild% LSS 10240 (
 | 
			
		||||
%ELine%
 | 
			
		||||
echo Unsupported OS version Detected.
 | 
			
		||||
echo Project is supported only for Windows 10.
 | 
			
		||||
goto Ins_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 :Passed
 | 
			
		||||
  ) || (
 | 
			
		||||
  if defined _elev goto :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 :E_Admin
 | 
			
		||||
)
 | 
			
		||||
)
 | 
			
		||||
exit /b
 | 
			
		||||
 | 
			
		||||
:E_Admin
 | 
			
		||||
%ELine%
 | 
			
		||||
echo This script require administrator privileges.
 | 
			
		||||
echo To do so, right click on this script and select 'Run as administrator'.
 | 
			
		||||
goto Ins_Done
 | 
			
		||||
 | 
			
		||||
:Passed
 | 
			
		||||
 | 
			
		||||
mode con: cols=98 lines=30
 | 
			
		||||
setlocal EnableDelayedExpansion
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
::  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"
 | 
			
		||||
 | 
			
		||||
::  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 Ins_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 Ins_Done
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
set key=
 | 
			
		||||
call :%osedition% %nul%
 | 
			
		||||
 | 
			
		||||
if "%key%"=="" (
 | 
			
		||||
%ELine%
 | 
			
		||||
echo [%winos% ^| %winbuild%] HWID Activation is Not Supported.
 | 
			
		||||
goto Ins_Done
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
if defined Unattended goto ContinueKeyInsert
 | 
			
		||||
 | 
			
		||||
cls
 | 
			
		||||
echo ___________________________________________________________________________________________
 | 
			
		||||
echo:
 | 
			
		||||
echo  Install [%winos% ^| %winbuild%] Retail/OEM Key 
 | 
			
		||||
echo  [%key%]
 | 
			
		||||
echo ___________________________________________________________________________________________
 | 
			
		||||
echo:
 | 
			
		||||
choice /C:12 /N /M "[1] Continue [2] Exit : "
 | 
			
		||||
 | 
			
		||||
if errorlevel 2 exit /b
 | 
			
		||||
if errorlevel 1 goto ContinueKeyInsert
 | 
			
		||||
 | 
			
		||||
:ContinueKeyInsert
 | 
			
		||||
 | 
			
		||||
cls
 | 
			
		||||
echo ___________________________________________________________________________________________
 | 
			
		||||
 | 
			
		||||
::  Thanks to @abbodi1406 for the WMI methods
 | 
			
		||||
 | 
			
		||||
set slp=SoftwareLicensingProduct
 | 
			
		||||
set sls=SoftwareLicensingService
 | 
			
		||||
set wApp=55c92734-d682-4d71-983e-d6ec3f16059f
 | 
			
		||||
 | 
			
		||||
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=%%#"
 | 
			
		||||
wmic path %sls% where __CLASS='%sls%' call RefreshLicenseStatus %nul%
 | 
			
		||||
echo:
 | 
			
		||||
echo [%winos% ^| %winbuild%]
 | 
			
		||||
call echo Installing %%_channel%% Key [%key%] 
 | 
			
		||||
echo [Successful]
 | 
			
		||||
) || (
 | 
			
		||||
%ELine%
 | 
			
		||||
echo Installing Retail/OEM Key [%key%]
 | 
			
		||||
echo [Unsuccessful]
 | 
			
		||||
)
 | 
			
		||||
echo ___________________________________________________________________________________________
 | 
			
		||||
 | 
			
		||||
::========================================================================================================================================
 | 
			
		||||
 | 
			
		||||
:Ins_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
 | 
			
		||||
 | 
			
		||||
: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"
 | 
			
		||||
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"
 | 
			
		||||
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,4 @@
 | 
			
		|||
@echo off
 | 
			
		||||
start https://www.nsaneforums.com/topic/316668-microsoft-activation-scripts/ &:: Login required
 | 
			
		||||
start https://gitlab.com/massgrave/microsoft-activation-scripts
 | 
			
		||||
start https://github.com/massgravel/Microsoft-Activation-Scripts
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,31 @@
 | 
			
		|||
Use the tool 'HashCheck' to compare hashes.
 | 
			
		||||
https://github.com/gurnec/HashCheck/releases/latest
 | 
			
		||||
 | 
			
		||||
9d5b4b3e761cca9531d64200dfbbfa0dec94f5b0 *Activators\Online_KMS_Activation\BIN\_Info.txt
 | 
			
		||||
c1a44a54b4d53092de243d3af068fdbbda3c27de *Activators\Online_KMS_Activation\Renewal_Setup.cmd
 | 
			
		||||
502d0705dcb06900ca3700271bc33eb3fdc83769 *Activators\Online_KMS_Activation\Uninstall.cmd
 | 
			
		||||
2ca8daf456c858d58d51d20ccf6857da7460bcae *Activators\Online_KMS_Activation\_ReadMe.txt
 | 
			
		||||
68de64a326cdf1b0336c2ecd42a62fec8e7110f2 *Activators\ReadMe.txt
 | 
			
		||||
8b81e4db09cf7800d678b0ff8569df7c8ca278f1 *Extras\Download_Genuine_Installation_Media.url
 | 
			
		||||
ba656804fd4c58dbf34b0b195a00d14cf84a790e *Extras\Extract_OEM_Folder\Extract_OEM_Folder.cmd
 | 
			
		||||
1fd8374d9cad3b71b69162adbad4eab009ceb029 *Activators\Check_Activation_Status.cmd
 | 
			
		||||
6c0697f17d1a7d8589eaaf37a4275fa745615f30 *Extras\Extract_OEM_Folder\ReadMe.txt
 | 
			
		||||
b5b0f7c0bc677d4ca381e41cccf06e8ee6f97f00 *Extras\KMS38_Protection\Protect_Unprotect-KMS38.cmd
 | 
			
		||||
a8443a4aa8d1956ea893557e18b3d8ec8056269f *Extras\KMS38_Protection\ReadMe.txt
 | 
			
		||||
578364cb2319da7999acd8c015b4ce8da8f1b282 *Activators\HWID-KMS38_Activation\BIN\ARM64_gatherosstate.exe
 | 
			
		||||
5dbea3a580cf60391453a04a5c910a3ceca2b810 *Activators\HWID-KMS38_Activation\BIN\ARM64_slc.dll
 | 
			
		||||
48d928b1bec25a56fe896c430c2c034b7866aa7a *Activators\HWID-KMS38_Activation\BIN\ClipUp.exe
 | 
			
		||||
fabb5a0fc1e6a372219711152291339af36ed0b5 *Activators\HWID-KMS38_Activation\BIN\gatherosstate.exe
 | 
			
		||||
ca3a51fdfc8749b8be85f7904b1c238a6dfba135 *Activators\HWID-KMS38_Activation\BIN\slc.dll
 | 
			
		||||
be0392be7ee0a78c7d1e8903cd29ea76cbafe201 *Activators\HWID-KMS38_Activation\BIN\_Info.txt
 | 
			
		||||
5786bd332d1e08ed8a8bd264f7f085ff83aec778 *Activators\HWID-KMS38_Activation\HWID_Activation.cmd
 | 
			
		||||
497300df6bcf4bc64cc4065cd81a856fb54a3851 *Activators\HWID-KMS38_Activation\KMS38_Activation.cmd
 | 
			
		||||
bd37bf2122cc34f3680bbf17e89e8634b3654661 *Activators\HWID-KMS38_Activation\ReadMe_HWID.txt
 | 
			
		||||
a53371e73405ba9c1c4fa6a29c604bf3b954117c *Activators\HWID-KMS38_Activation\ReadMe_KMS38.txt
 | 
			
		||||
2898e59d908fd2ff38cc1b57f0ce453f2250b8af *Activators\Online_KMS_Activation\Activate.cmd
 | 
			
		||||
d30a0e4e5911d3ca705617d17225372731c770e2 *Activators\Online_KMS_Activation\BIN\cleanosppx64.exe
 | 
			
		||||
39ed8659e7ca16aaccb86def94ce6cec4c847dd6 *Activators\Online_KMS_Activation\BIN\cleanosppx86.exe
 | 
			
		||||
86748a866ebd11766fe71ff12b63d2525d6f28be *Extras\OEMRET-Change_W10_Edition.cmd
 | 
			
		||||
9838babe8091dad9574be5606fe88618b85dca3a *Extras\OEMRET-Install_W10_Key.cmd
 | 
			
		||||
b470dc10afa63feebc1d8c1249b59f0a299026a6 *Credits.txt
 | 
			
		||||
36075a49f50c915b3878f60460a3bb0301f3b257 *Homepages.cmd
 | 
			
		||||
		Loading…
	
		Reference in New Issue