mirror of
				https://github.com/massgravel/Microsoft-Activation-Scripts.git
				synced 2025-11-04 00:46:57 +01:00 
			
		
		
		
	- Now Microsoft support HWID (Digital License) for Windows 10 LTSC 2019, added key for it in the script. - Some minor improvements.
		
			
				
	
	
		
			324 lines
		
	
	
		
			9.1 KiB
		
	
	
	
		
			Batchfile
		
	
	
	
	
	
			
		
		
	
	
			324 lines
		
	
	
		
			9.1 KiB
		
	
	
	
		
			Batchfile
		
	
	
	
	
	
@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"
 | 
						|
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"
 | 
						|
if "%winbuild%" EQU "17763" set "key=43TBQ-NH92J-XKTM7-KT3KK-P39PB"
 | 
						|
exit /b
 | 
						|
 | 
						|
:EnterpriseSN
 | 
						|
if "%winbuild%" EQU "10240" set "key=8V8WN-3GXBH-2TCMG-XHRX3-9766K"
 | 
						|
if "%winbuild%" EQU "14393" set "key=2DBW3-N2PJG-MVHW3-G7TDK-9HKR4"
 | 
						|
if "%winbuild%" EQU "17763" set "key=M33WV-NHY3C-R7FPM-BQGPT-239PG"
 | 
						|
exit /b
 | 
						|
 | 
						|
:Professional
 | 
						|
set "key=VK7JG-NPHTM-C97JM-9MPGT-3V66T"
 | 
						|
exit /b
 | 
						|
 | 
						|
:ProfessionalEducation
 | 
						|
set "key=8PTT6-RNW4C-6V7J2-C2D3X-MHBPB"
 | 
						|
exit /b
 | 
						|
 | 
						|
:ProfessionalEducationN
 | 
						|
set "key=GJTYN-HDMQY-FRR76-HVGC7-QPF8P"
 | 
						|
exit /b
 | 
						|
 | 
						|
:ProfessionalN
 | 
						|
set "key=2B87N-8KFHP-DKV6R-Y2C8J-PKCKT"
 | 
						|
exit /b
 | 
						|
 | 
						|
:ProfessionalWorkstation
 | 
						|
set "key=DXG7C-N36C4-C4HTG-X4T3X-2YV77"
 | 
						|
exit /b
 | 
						|
 | 
						|
:ProfessionalWorkstationN
 | 
						|
set "key=WYPNQ-8C467-V2W6J-TX4WX-WT2RQ"
 | 
						|
exit /b
 | 
						|
 | 
						|
:ServerRdsh
 | 
						|
set "key=NJCF7-PW8QT-3324D-688JX-2YV66"
 | 
						|
exit /b
 | 
						|
 | 
						|
:IoTEnterprise
 | 
						|
set "key=XQQYW-NFFMW-XJPBH-K8732-CKFFD"
 | 
						|
exit /b
 | 
						|
 | 
						|
::======================================================================================================================================== |