@echo off :: For unattended mode, run the script with /u parameter. ::======================================================================================================================================== : ====================================================== : This script is a fork of @s1ave77's Tool : hwid.kms38.gen.mk6.exe : https://www.nsaneforums.com/topic/312871--/ : ====================================================== : ====================================================== : This script was initially written by @s1ave77 : Later improved by @RPO and Me (@WindowsAddict) : ====================================================== : ================================================================= : This script is a part of 'Microsoft Activation Scripts' : Maintained by @WindowsAddict : Homepage - https://www.nsaneforums.com/topic/316668--/ : ================================================================= ::======================================================================================================================================== ::======================================================================================================================================== cls title Digital License Activation if /i "%*" EQU "/u" (set Unattended=1) else (set Unattended=0) for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G reg Query "HKLM\Hardware\Description\System\CentralProcessor\0" | find /i "x86" > NUL && set arch=x86|| set arch=x64 set "nul=>nul 2>&1" set "ELine=echo. &call :Color 4F "==== ERROR ====" &echo:&echo." setlocal EnableDelayedExpansion call :Color_Pre ::======================================================================================================================================== : =========================================================== : Check if the file path name contains special characters : https://stackoverflow.com/a/33626625 : Written by @jeb (stackoverflow) : Thanks to @abbodi1406 (MDL) for the help. : =========================================================== setlocal setlocal DisableDelayedExpansion set "param=%~f0" cmd /v:on /c echo(^^!param^^!| findstr /R "[| ` ~ ! @ %% \^ & ( ) \[ \] { } + = ; ' , |]*^" endlocal if %errorlevel% EQU 0 ( %ELine% echo Disallowed special characters detected in file path name. echo Make sure file path name do not have following special characters, echo ^` ^~ ^! ^@ %% ^^ ^& ^( ^) [ ] { } ^+ ^= ^; ^' ^, goto Done ) ::======================================================================================================================================== if %winbuild% LSS 10240 ( %ELine% echo Unsupported OS version Detected. echo Project is supported only for Windows 10. goto Done ) ::======================================================================================================================================== : ================================================ : Self-elevate passing args and preventing loop : Written by @AveYo aka @BAU : ================================================ reg query HKEY_USERS\S-1-5-20 1>nul 2>nul && goto GotPrivileges If "%ElevError%"=="Y" goto Elev_Err set "args="%~f0" %*" & call set "args=%%args:"=\"%%" echo Initializing... powershell -c "start cmd -ArgumentList '/c set ElevError=Y& call %args%' -verb runas" && exit /b :Elev_Err %ELine% echo Right click on this file and select 'Run as administrator' goto Done :GotPrivileges ::======================================================================================================================================== mode con: cols=110 lines=35 cd /d "%~dp0" pushd "%~dp0" if not exist "%~dp0Files\" ( %ELine% echo 'Files' Folder does not exist in current directory. echo It's supposed to have files required for the Activation. goto Done ) ::======================================================================================================================================== copy /y nul "%~dp0Files\#.rw" %nul% && ( if exist "%~dp0Files\#.rw" del /f /q "%~dp0Files\#.rw" ) || ( %ELine% echo 'Files' Folder in current directory is write protected. echo Copy the Activator's package to a writable directory. goto Done ) ::======================================================================================================================================== FOR /F "TOKENS=2 DELIMS==" %%A IN ('"WMIC PATH SoftwareLicensingProduct WHERE (Name LIKE 'Windows%%' AND PartialProductKey is not NULL) GET LicenseFamily /VALUE"') 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 Done ) ::======================================================================================================================================== call :CheckPermAct if [!Perm!]==[1] ( echo ---------------------------------------------- echo Checking: Windows is Permanently Activated. echo Activation is not required. echo ---------------------------------------------- echo. if %Unattended% EQU 1 goto Done echo ---------------------------------------- echo Press [A] or [B] button in Keyboard : echo ---------------------------------------- echo. choice /C:AB /N /M "[A] I still want to Activate [B] Exit : " if errorlevel 2 exit /b if errorlevel 1 goto continue ) ::======================================================================================================================================== :Continue cls set key= call :%osedition% %nul% if "%Key%"=="" ( %ELine% echo [%osedition% ^| %winbuild%] Digital License ^(HWID^) Activation is Not Supported. goto Done ) if %winbuild% EQU 10240 for %%# in (EnterpriseS, EnterpriseSN) do if "%osedition%"=="%%#" set LTSB15=1 set "G15=%~dp0Files\gatherosstateLTSB15" if exist "%G15%.cmd" del /f /q "%G15%.cmd" if exist "%G15%.exe" del /f /q "%G15%.exe" : =========================================== : Text to File conversion and vice-versa : Compressed2TXT : https://github.com/AveYo/Compressed2TXT : Written by @AveYo aka @BAU : =========================================== if defined LTSB15 ( call :check gatherosstateLTSB15.txt if defined _miss goto Done type "%G15%.txt">"%G15%.cmd" call "%G15%.cmd" %nul% if exist "%G15%.cmd" del /f /q "%G15%.cmd" if not exist "%G15%.exe" ( %ELine% echo gatherosstateLTSB15.txt to .exe conversion is failed. Aborting... goto Done ) set gatherosstate=gatherosstateLTSB15.exe ) else ( set gatherosstate=gatherosstate.exe ) call :check %gatherosstate% slc.dll if defined _miss goto Done ::======================================================================================================================================== cd /d "%~dp0" if exist "%~dp0Files\*.xml" del /f /q "%~dp0Files\*.xml" Powershell Restart-Service sppsvc %nul% cls echo Checking OS Info [%osedition% ^| %winbuild% ^| %arch%] set "Chkint=Checking Internet Connection " ping www.microsoft.com %nul% && ( echo %Chkint% [Connected] ) || ( call :Color 4F "%Chkint% [Not connected]" &echo: ) set "ReTok=Rebuilding ClipSVC tokens " Powershell stop-service clipsvc %nul% if exist "%ProgramData%\Microsoft\Windows\ClipSVC\*.dat" del /f /q "%ProgramData%\Microsoft\Windows\ClipSVC\*.dat" %nul% if exist "%ProgramData%\Microsoft\Windows\ClipSVC\*.dat" set tokerr_=1 Powershell Restart-Service clipsvc %nul% :: starting clipsvc service will rebuild the tokens if not exist, although in older windows 10 versions, tokens will rebuild when ticket is applied. if defined tokerr_ ( call :Color 4F "%ReTok% [Unsuccessful]" &echo: ) else ( echo %ReTok% [Successful] ) echo. set _1=ClipSVC set _2=wlidsvc set _3=sppsvc set _4=wuauserv for %%# in (%_1% %_2% %_3% %_4%) do call :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 :Color 4F "%CLecho%" &echo: & set Clst_e=1) else (echo %CLecho%) if not "%wl_start_type%"=="Demand" (call :Color 4F "%wlecho%" &echo: & set wlst_e=1) else (echo %wlecho%) if not "%sp_start_type%"=="Delayed-Auto" (call :Color 4F "%specho%" &echo: & set spst_e=1) else (echo %specho%) if "%wu_start_type%"=="Disabled" (set _C=4F) else (set _C=8F) if not "%wu_start_type%"=="Auto" (call :Color %_C% "%wuecho%" &echo: & 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 :Color 4F "Error in changing Startup Type to [ %Clst_u%%wlst_u%%spst_u%%wust_u%]" &echo:) if not "%Cl_state%"=="Running" (Powershell start-service %_1% %nul% && set Cl_s=%_1% || set Cl_u=%_1% ) if not "%wl_state%"=="Running" (Powershell start-service %_2% %nul% && set wl_s=%_2% || set wl_u=%_2% ) if not "%sp_state%"=="Running" (Powershell start-service %_3% %nul% && set sp_s=%_3% || set sp_u=%_3% ) if not "%wu_state%"=="Running" (Powershell 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 :Color 4F "Error in starting services [ %Cl_u%%wl_u%%sp_u%%wu_u%]" &echo:) if defined wust_u ( echo. call :Color 5F "Most likely a Windows Update blocker program has securely disabled the wuauserv, identify and unblock it" &echo: ) echo. cscript /nologo %windir%\system32\slmgr.vbs -ipk %key% start /wait Files\%gatherosstate% if not exist "%~dp0Files\GenuineTicket.xml" call Files\%gatherosstate% if not exist "%~dp0Files\GenuineTicket.xml" Files\%gatherosstate% if exist "%G15%.exe" del /f /q "%G15%.exe" set "GenTicket=Generating GenuineTicket.xml " if not exist "%~dp0Files\GenuineTicket.xml" ( call :Color 4F "%GenTicket% [Unsuccessful]" &echo: ) else ( echo %GenTicket% [Successful] ) echo Installing GenuineTicket.xml clipup -v -o -altto Files\ echo. set "Act=Activation " cscript /nologo %windir%\system32\slmgr.vbs -ato %nul% call :CheckPermAct if [!Perm!]==[1] ( call :Color 2F "%Act% [Successful]" &echo: goto Act_Cont ) call :ActivationRetry call :CheckPermAct if [!Perm!]==[1] ( call :Color 2F "%Act% [Successful]" &echo: ) if not [%ErrCode%]==[] set "Error_Code_=[Error Code %ErrCode%]" if [!Perm!]==[0] ( call :Color 4F "%Act% [Unsuccessful] %Error_Code_%" &echo: call :Color 5F "Try the Troubleshoot Guide listed in the ReadMe File" &echo: &echo. ) :Act_Cont cscript /nologo %windir%\system32\slmgr.vbs -xpr 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 :Color 4F "%changing_wust_back% [Unsuccessful]" &echo: ) ) goto Done ::======================================================================================================================================== : ================================ : Echo all the missing files. : Written by @abbodi1406 (MDL) : ================================ :check for %%# in (%1 %2) do (if not exist "%~dp0Files\%%#" (if defined _miss (set "_miss=!_miss! %%#") else (set "_miss=%%#"))) if defined _miss ( %ELine% echo Following required file^(s^) is missing in 'Files' folder. Aborting... echo. echo !_miss! ) exit /b ::======================================================================================================================================== :ServiceCheck : ====================================== : Detect Service status and start type : Written by @RPO (MDL) : ====================================== 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 ::======================================================================================================================================== :CheckPermAct : =========================================== : Check Windows Permanent Activation status : Written by @abbodi1406 (MDL) : =========================================== wmic path SoftwareLicensingProduct where (LicenseStatus='1' and GracePeriodRemaining='0' and PartialProductKey is not NULL) get Name 2>nul | findstr /i "Windows" 1>nul && set Perm=1||set Perm=0 exit /b ::======================================================================================================================================== :ActivationRetry Powershell Restart-Service sppsvc %nul% : ====================================== : Detect Error Code in the Activation : Written by @abbodi1406 (MDL) : ====================================== WMIC PATH SoftwareLicensingProduct WHERE (Name like 'Windows%%' and PartialProductKey is not NULL) CALL Activate >nul 2>&1 set errorcode=%errorlevel% cmd /c exit /b %errorcode% if %errorcode% NEQ 0 set "ErrCode=0x%=ExitCode%" exit /b ::======================================================================================================================================== : ====================================================== : Multicolor outputs without any external programs : https://stackoverflow.com/a/5344911 : Written by @jeb (stackoverflow) : ====================================================== :Color_Pre for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (set "DEL=%%a") &exit /b :color pushd "%temp%" "%~2" &findstr /v /a:%1 /R "^$" "%~2" nul &del "%~2" > nul 2>&1 &popd &exit /b ::======================================================================================================================================== :Done echo. if %Unattended% EQU 1 ( echo Exiting in 5 seconds... if %winbuild% LSS 7600 (ping -n 5 127.0.0.1 > nul) else (timeout /t 5) exit /b ) 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 ::========================================================================================================================================