office365officemicrosoft365microsoftmassgravelmassgravewindows-11kms38windows-10kmswindowshwidpowershellactivatorohook
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
324 lines
9.1 KiB
324 lines
9.1 KiB
@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 |
|
|
|
::======================================================================================================================================== |