mirror of
https://github.com/massgravel/Microsoft-Activation-Scripts.git
synced 2024-11-28 19:14:13 +01:00
1.7
This commit is contained in:
parent
d17d7496e0
commit
bc8ae03488
File diff suppressed because it is too large
Load Diff
@ -55,8 +55,7 @@ if not %errorlevel%==0 (
|
|||||||
echo:
|
echo:
|
||||||
echo Error: This is not a correct file. It has LF line ending issue.
|
echo Error: This is not a correct file. It has LF line ending issue.
|
||||||
echo:
|
echo:
|
||||||
echo Press any key to exit...
|
ping 127.0.0.1 -n 6 > nul
|
||||||
pause >nul
|
|
||||||
popd
|
popd
|
||||||
exit /b
|
exit /b
|
||||||
)
|
)
|
||||||
@ -86,6 +85,7 @@ set cbs_log=%SystemRoot%\logs\cbs\cbs.log
|
|||||||
set "nceline=echo: &echo ==== ERROR ==== &echo:"
|
set "nceline=echo: &echo ==== ERROR ==== &echo:"
|
||||||
set "eline=echo: &call :_color %Red% "==== ERROR ====" &echo:"
|
set "eline=echo: &call :_color %Red% "==== ERROR ====" &echo:"
|
||||||
set "line=_________________________________________________________________________________________________"
|
set "line=_________________________________________________________________________________________________"
|
||||||
|
if %~z0 GEQ 200000 (set "_exitmsg=Go back") else (set "_exitmsg=Exit")
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
@ -135,7 +135,7 @@ goto at_done
|
|||||||
|
|
||||||
:: Elevate script as admin and pass arguments and preventing loop
|
:: Elevate script as admin and pass arguments and preventing loop
|
||||||
|
|
||||||
%nul% reg query HKU\S-1-5-19 || (
|
>nul fltmc || (
|
||||||
if not defined _elev %nul% %psc% "start cmd.exe -arg '/c \"!_PSarg:'=''!\"' -verb runas" && exit /b
|
if not defined _elev %nul% %psc% "start cmd.exe -arg '/c \"!_PSarg:'=''!\"' -verb runas" && exit /b
|
||||||
%nceline%
|
%nceline%
|
||||||
echo This script require administrator privileges.
|
echo This script require administrator privileges.
|
||||||
@ -170,33 +170,43 @@ color 07
|
|||||||
title Activation Troubleshoot
|
title Activation Troubleshoot
|
||||||
mode con cols=77 lines=30
|
mode con cols=77 lines=30
|
||||||
|
|
||||||
echo:
|
|
||||||
echo:
|
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
echo: _______________________________________________________________
|
echo: _______________________________________________________________
|
||||||
echo:
|
echo:
|
||||||
echo: [1] ReadMe
|
call :_color2 %_White% " [1] " %_Green% "Help"
|
||||||
echo: ___________________________________________________
|
echo: ___________________________________________________
|
||||||
echo:
|
echo:
|
||||||
echo: [2] Dism RestoreHealth
|
echo: [2] Dism RestoreHealth
|
||||||
echo: [3] SFC Scannow
|
echo: [3] SFC Scannow
|
||||||
echo:
|
echo:
|
||||||
echo: [4] Rebuild Licensing Tokens
|
echo: [4] Rebuild Licensing Tokens
|
||||||
echo: [5] Clear Office vNext License
|
echo: [5] Rebuild ClipSVC Licences
|
||||||
|
echo: [6] Clear Office vNext Licences
|
||||||
echo: ___________________________________________________
|
echo: ___________________________________________________
|
||||||
echo:
|
echo:
|
||||||
echo: [6] Solution: Office is not genuine banner
|
echo: [7] Rebuild WMI Repository
|
||||||
echo: [0] Exit
|
echo: [8] Fix: Issues Caused By Gaming Spoofers
|
||||||
|
echo: [9] Fix: Issues Caused By KB971033 In Windows 7
|
||||||
|
echo: [G] Fix: Office Is Not Genuine Banner
|
||||||
|
echo: [E] Export Event Viewer Logs
|
||||||
|
echo: ___________________________________________________
|
||||||
|
echo:
|
||||||
|
echo: [0] %_exitmsg%
|
||||||
echo: _______________________________________________________________
|
echo: _______________________________________________________________
|
||||||
echo:
|
echo:
|
||||||
call :_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard :"
|
call :_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard :"
|
||||||
choice /C:1234560 /N
|
choice /C:123456789GE0 /N
|
||||||
set _erl=%errorlevel%
|
set _erl=%errorlevel%
|
||||||
|
|
||||||
if %_erl%==7 exit /b
|
if %_erl%==12 exit /b
|
||||||
if %_erl%==6 start https://massgrave.dev/office-license-is-not-genuine &goto at_menu
|
if %_erl%==11 goto:exportevtlogs
|
||||||
if %_erl%==5 goto:clearvnext
|
if %_erl%==10 start https://massgrave.dev/office-license-is-not-genuine &goto at_menu
|
||||||
|
if %_erl%==9 goto:fixwindows7
|
||||||
|
if %_erl%==8 goto:fixspoofer
|
||||||
|
if %_erl%==7 goto:rewmi
|
||||||
|
if %_erl%==6 goto:clearvnext
|
||||||
|
if %_erl%==5 goto:reclipsvc
|
||||||
if %_erl%==4 goto:retokens
|
if %_erl%==4 goto:retokens
|
||||||
if %_erl%==3 goto:sfcscan
|
if %_erl%==3 goto:sfcscan
|
||||||
if %_erl%==2 goto:dism_rest
|
if %_erl%==2 goto:dism_rest
|
||||||
@ -242,7 +252,7 @@ call :_color2 %_White% " - " %Gray% "Make sure the Windows update is properl
|
|||||||
echo:
|
echo:
|
||||||
echo %line%
|
echo %line%
|
||||||
echo:
|
echo:
|
||||||
choice /C:29 /N /M "> [9] Continue [2] Go back : "
|
choice /C:09 /N /M "> [9] Continue [0] Go back : "
|
||||||
if %errorlevel%==1 goto at_menu
|
if %errorlevel%==1 goto at_menu
|
||||||
|
|
||||||
cls
|
cls
|
||||||
@ -260,12 +270,6 @@ echo dism /online /cleanup-image /restorehealth /Logpath:"%SystemRoot%\Temp\RHea
|
|||||||
echo:
|
echo:
|
||||||
dism /online /cleanup-image /restorehealth /Logpath:"%SystemRoot%\Temp\RHealth_DISM_%_time%.txt" /loglevel:4
|
dism /online /cleanup-image /restorehealth /Logpath:"%SystemRoot%\Temp\RHealth_DISM_%_time%.txt" /loglevel:4
|
||||||
|
|
||||||
if not exist "!desktop!\" (
|
|
||||||
echo:
|
|
||||||
call :_color %Red% "Desktop location is not detected. Failed to copy logs on the dekstop."
|
|
||||||
goto :at_back
|
|
||||||
)
|
|
||||||
|
|
||||||
if not exist "!desktop!\AT_Logs\" md "!desktop!\AT_Logs\" %nul%
|
if not exist "!desktop!\AT_Logs\" md "!desktop!\AT_Logs\" %nul%
|
||||||
copy /y /b "%SystemRoot%\Temp\RHealth_DISM_%_time%.txt" "!desktop!\AT_Logs\RHealth_DISM_%_time%.txt" %nul%
|
copy /y /b "%SystemRoot%\Temp\RHealth_DISM_%_time%.txt" "!desktop!\AT_Logs\RHealth_DISM_%_time%.txt" %nul%
|
||||||
copy /y /b "%cbs_log%" "!desktop!\AT_Logs\RHealth_CBS_%_time%.txt" %nul%
|
copy /y /b "%cbs_log%" "!desktop!\AT_Logs\RHealth_CBS_%_time%.txt" %nul%
|
||||||
@ -295,7 +299,7 @@ echo restarting the PC after each time to completely fix everything that it
|
|||||||
echo:
|
echo:
|
||||||
echo %line%
|
echo %line%
|
||||||
echo:
|
echo:
|
||||||
choice /C:29 /N /M "> [9] Continue [2] Go back : "
|
choice /C:09 /N /M "> [9] Continue [0] Go back : "
|
||||||
if %errorlevel%==1 goto at_menu
|
if %errorlevel%==1 goto at_menu
|
||||||
|
|
||||||
cls
|
cls
|
||||||
@ -312,12 +316,6 @@ echo sfc /scannow
|
|||||||
echo:
|
echo:
|
||||||
sfc /scannow
|
sfc /scannow
|
||||||
|
|
||||||
if not exist "!desktop!\" (
|
|
||||||
echo:
|
|
||||||
call :_color %Red% "Desktop location is not detected. Failed to copy logs on the dekstop."
|
|
||||||
goto :at_back
|
|
||||||
)
|
|
||||||
|
|
||||||
if not exist "!desktop!\AT_Logs\" md "!desktop!\AT_Logs\" %nul%
|
if not exist "!desktop!\AT_Logs\" md "!desktop!\AT_Logs\" %nul%
|
||||||
|
|
||||||
copy /y /b "%cbs_log%" "!desktop!\AT_Logs\SFC_CBS_%_time%.txt" %nul%
|
copy /y /b "%cbs_log%" "!desktop!\AT_Logs\SFC_CBS_%_time%.txt" %nul%
|
||||||
@ -346,15 +344,10 @@ echo - KMS option activated Office but Office activation page is not sh
|
|||||||
echo:
|
echo:
|
||||||
echo %line%
|
echo %line%
|
||||||
echo:
|
echo:
|
||||||
choice /C:29 /N /M "> [9] Continue [2] Go back : "
|
choice /C:09 /N /M "> [9] Continue [0] Go back : "
|
||||||
if %errorlevel%==1 goto at_menu
|
if %errorlevel%==1 goto at_menu
|
||||||
|
|
||||||
cls
|
cls
|
||||||
mode con cols=115 lines=32
|
|
||||||
%nul% %psc% "&{$W=$Host.UI.RawUI.WindowSize;$B=$Host.UI.RawUI.BufferSize;$W.Height=31;$B.Height=200;$Host.UI.RawUI.WindowSize=$W;$Host.UI.RawUI.BufferSize=$B;}"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
echo:
|
echo:
|
||||||
echo %line%
|
echo %line%
|
||||||
echo:
|
echo:
|
||||||
@ -362,16 +355,30 @@ call :_color %Magenta% "Clearing Office vNext License"
|
|||||||
echo:
|
echo:
|
||||||
|
|
||||||
setlocal DisableDelayedExpansion
|
setlocal DisableDelayedExpansion
|
||||||
set "_locl=%LocalAppData%\Microsoft\Office\Licenses"
|
set "_Local=%LocalAppData%"
|
||||||
setlocal EnableDelayedExpansion
|
setlocal EnableDelayedExpansion
|
||||||
call :cleanfolder
|
|
||||||
set "_locl=%ProgramData%\Microsoft\Office\Licenses"
|
attrib -R "!ProgramData!\Microsoft\Office\Licenses" %nul%
|
||||||
call :cleanfolder
|
attrib -R "!_Local!\Microsoft\Office\Licenses" %nul%
|
||||||
|
rd /s /q "!ProgramData!\Microsoft\Office\Licenses\" %nul%
|
||||||
|
rd /s /q "!_Local!\Microsoft\Office\Licenses\" %nul%
|
||||||
|
|
||||||
|
if exist "!ProgramData!\Microsoft\Office\Licenses\" (
|
||||||
|
echo Failed To Delete - !ProgramData!\Microsoft\Office\Licenses\
|
||||||
|
) else (
|
||||||
|
echo Deleted Folder - !ProgramData!\Microsoft\Office\Licenses\
|
||||||
|
)
|
||||||
|
|
||||||
|
if exist "!_Local!\Microsoft\Office\Licenses\" (
|
||||||
|
echo Failed To Delete - !_Local!\Microsoft\Office\Licenses\
|
||||||
|
) else (
|
||||||
|
echo Deleted Folder - !_Local!\Microsoft\Office\Licenses\
|
||||||
|
)
|
||||||
|
|
||||||
echo:
|
echo:
|
||||||
for %%# in (
|
for %%# in (
|
||||||
HKCU\Software\Microsoft\Office\16.0\Common\Licensing
|
HKCU\Software\Microsoft\Office\16.0\Common\Licensing
|
||||||
HKCU\Software\Microsoft\Office\16.0\Common\Identity
|
HKCU\Software\Microsoft\Office\16.0\Registration
|
||||||
) do (
|
) do (
|
||||||
reg query %%# %nul% && (
|
reg query %%# %nul% && (
|
||||||
reg delete %%# /f %nul% && (
|
reg delete %%# /f %nul% && (
|
||||||
@ -380,32 +387,12 @@ echo Deleted Registry - %%#
|
|||||||
echo Failed to Delete - %%#
|
echo Failed to Delete - %%#
|
||||||
)
|
)
|
||||||
) || (
|
) || (
|
||||||
echo Already Clean - %%#
|
echo Deleted Registry - %%#
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
goto :at_back
|
goto :at_back
|
||||||
|
|
||||||
:cleanfolder
|
|
||||||
|
|
||||||
2>nul dir /b /a "!_locl!\*" | %nul% findstr "^" && (
|
|
||||||
pushd "!_locl!\" && (
|
|
||||||
del /S /F /Q "!_locl!\*"
|
|
||||||
for /F "delims=" %%i in ('dir /b') do (
|
|
||||||
RD /S /Q "%%i" %nul%
|
|
||||||
if not exist "!_locl!\%%i\" (
|
|
||||||
echo Deleted Folder - !_locl!\%%i
|
|
||||||
) else (
|
|
||||||
echo Failed To Delete - !_locl!\%%i
|
|
||||||
)
|
|
||||||
)
|
|
||||||
popd
|
|
||||||
)
|
|
||||||
) || (
|
|
||||||
echo Already Clean - !_locl!\
|
|
||||||
)
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:retokens
|
:retokens
|
||||||
@ -432,11 +419,12 @@ call :_color2 %_White% " - " %Red% "Apply it only when it is necessary."
|
|||||||
echo:
|
echo:
|
||||||
echo %line%
|
echo %line%
|
||||||
echo:
|
echo:
|
||||||
choice /C:29 /N /M "> [9] Continue [2] Go back : "
|
choice /C:09 /N /M "> [9] Continue [0] Go back : "
|
||||||
if %errorlevel%==1 goto at_menu
|
if %errorlevel%==1 goto at_menu
|
||||||
|
|
||||||
|
|
||||||
cls
|
cls
|
||||||
|
:cleanspptoken
|
||||||
echo:
|
echo:
|
||||||
echo %line%
|
echo %line%
|
||||||
echo:
|
echo:
|
||||||
@ -496,7 +484,7 @@ sc qc osppsvc %nul% || (
|
|||||||
echo:
|
echo:
|
||||||
call :_color %Magenta% "OSPP based Office is not installed"
|
call :_color %Magenta% "OSPP based Office is not installed"
|
||||||
call :_color %Magenta% "Skipping rebuilding OSPP tokens"
|
call :_color %Magenta% "Skipping rebuilding OSPP tokens"
|
||||||
goto :cleanclipsvc
|
goto :repairoffice
|
||||||
)
|
)
|
||||||
|
|
||||||
call :_color %Magenta% "Rebuilding OSPP Licensing Tokens"
|
call :_color %Magenta% "Rebuilding OSPP Licensing Tokens"
|
||||||
@ -545,12 +533,6 @@ call :_color %Green% "tokens.dat file was rebuilt successfully."
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:cleanclipsvc
|
|
||||||
|
|
||||||
:: This section is removed
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:repairoffice
|
:repairoffice
|
||||||
|
|
||||||
echo:
|
echo:
|
||||||
@ -597,10 +579,11 @@ set _86=HKLM\SOFTWARE\Wow6432Node\Microsoft\Office
|
|||||||
%nul% reg query %_86%\ClickToRun /v InstallPath && (set "c2r16_86=Office 16.0 C2R x86" & set "c2r16repair86=%systemdrive%\Program Files\Microsoft Office 15\Client%arch%\OfficeClickToRun.exe")
|
%nul% reg query %_86%\ClickToRun /v InstallPath && (set "c2r16_86=Office 16.0 C2R x86" & set "c2r16repair86=%systemdrive%\Program Files\Microsoft Office 15\Client%arch%\OfficeClickToRun.exe")
|
||||||
|
|
||||||
set uwp16=
|
set uwp16=
|
||||||
if %winbuild% GEQ 10240 reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\msoxmled.exe" %nul% && (
|
if %winbuild% GEQ 10240 (
|
||||||
dir /b "%ProgramFiles%\WindowsApps\Microsoft.Office.Desktop*" %nul% && set uwp16=Office 16.0 UWP
|
dir /b "%ProgramFiles%\WindowsApps\Microsoft.Office.Desktop*" %nul% && set uwp16=Office 16.0 UWP
|
||||||
dir /b "%ProgramW6432%\WindowsApps\Microsoft.Office.Desktop*" %nul% && set uwp16=Office 16.0 UWP
|
dir /b "%ProgramW6432%\WindowsApps\Microsoft.Office.Desktop*" %nul% && set uwp16=Office 16.0 UWP
|
||||||
dir /b "%ProgramFiles(x86)%\WindowsApps\Microsoft.Office.Desktop*" %nul% && set uwp16=Office 16.0 UWP
|
dir /b "%ProgramFiles(x86)%\WindowsApps\Microsoft.Office.Desktop*" %nul% && set uwp16=Office 16.0 UWP
|
||||||
|
%psc% "Get-AppxPackage -name "Microsoft.Office.Desktop"" | find /i "Office" 1>nul && set uwp16=Office 16.0 UWP
|
||||||
)
|
)
|
||||||
|
|
||||||
set /a counter=0
|
set /a counter=0
|
||||||
@ -645,7 +628,7 @@ goto :repairend
|
|||||||
echo:
|
echo:
|
||||||
) else (
|
) else (
|
||||||
echo:
|
echo:
|
||||||
call :_color %_Yellow% "A Window will popup, in that Window you need to select Repair Option..."
|
call :_color %_Yellow% "A Window will popup, in that Window you need to select [Quick] Repair Option..."
|
||||||
call :_color %_Yellow% "Press any key to continue..."
|
call :_color %_Yellow% "Press any key to continue..."
|
||||||
echo:
|
echo:
|
||||||
pause >nul
|
pause >nul
|
||||||
@ -691,6 +674,405 @@ echo %line%
|
|||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
call :_color %Green% "Finished"
|
call :_color %Green% "Finished"
|
||||||
|
goto :at_back
|
||||||
|
|
||||||
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
:reclipsvc
|
||||||
|
|
||||||
|
cls
|
||||||
|
mode 98, 30
|
||||||
|
title Rebuild ClipSVC Licences
|
||||||
|
|
||||||
|
if %winbuild% LSS 10240 (
|
||||||
|
%eline%
|
||||||
|
echo Unsupported OS version Detected.
|
||||||
|
echo This command is supported only for Windows 10/11 and their Server equivalent..
|
||||||
|
goto :at_back
|
||||||
|
)
|
||||||
|
|
||||||
|
echo:
|
||||||
|
echo %line%
|
||||||
|
echo:
|
||||||
|
echo Notes:
|
||||||
|
echo:
|
||||||
|
echo - Rebuilding ClipSVC Licences helps in troubleshooting HWID-KMS38 activation issues.
|
||||||
|
echo:
|
||||||
|
echo - Do not run this option unless you are having issues in HWID-KMS38 activation.
|
||||||
|
echo:
|
||||||
|
echo - System restart is recommended after applying it.
|
||||||
|
echo:
|
||||||
|
echo %line%
|
||||||
|
echo:
|
||||||
|
choice /C:09 /N /M "> [9] Continue [0] Go back : "
|
||||||
|
if %errorlevel%==1 goto at_menu
|
||||||
|
|
||||||
|
cls
|
||||||
|
echo:
|
||||||
|
|
||||||
|
echo Stopping ClipSVC service...
|
||||||
|
call :_stopservice ClipSVC
|
||||||
|
timeout /t 2 %nul%
|
||||||
|
|
||||||
|
echo:
|
||||||
|
echo Applying the command to Clean ClipSVC Licences...
|
||||||
|
echo rundll32 clipc.dll,ClipCleanUpState
|
||||||
|
|
||||||
|
rundll32 clipc.dll,ClipCleanUpState
|
||||||
|
|
||||||
|
if %winbuild% LEQ 10240 (
|
||||||
|
call :_color %Green% "[Successful]"
|
||||||
|
) else (
|
||||||
|
if exist "%ProgramData%\Microsoft\Windows\ClipSVC\tokens.dat" (
|
||||||
|
call :_color %Red% "[Failed]"
|
||||||
|
) else (
|
||||||
|
call :_color %Green% "[Successful]"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
:: Below registry key (Volatile & Protected) gets created after the ClipSVC License cleanup command, and gets automatically deleted after
|
||||||
|
:: system restart. It needs to be deleted to activate the system without restart.
|
||||||
|
|
||||||
|
set "RegKey=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ClipSVC\Volatile\PersistedSystemState"
|
||||||
|
set "_ident=HKU\S-1-5-19\SOFTWARE\Microsoft\IdentityCRL"
|
||||||
|
|
||||||
|
reg query "%RegKey%" %nul% && %nul% call :regownstart
|
||||||
|
reg delete "%RegKey%" /f %nul%
|
||||||
|
|
||||||
|
echo:
|
||||||
|
echo Deleting a Volatile ^& Protected Registry Key...
|
||||||
|
echo [%RegKey%]
|
||||||
|
reg query "%RegKey%" %nul% && (
|
||||||
|
call :_color %Red% "[Failed]"
|
||||||
|
echo Restart the system, that will delete this registry key automatically.
|
||||||
|
) || (
|
||||||
|
call :_color %Green% "[Successful]"
|
||||||
|
)
|
||||||
|
|
||||||
|
:: Clear HWID token related registry to fix activation incase if there is any corruption
|
||||||
|
|
||||||
|
echo:
|
||||||
|
echo Deleting a IdentityCRL Registry Key...
|
||||||
|
echo [%_ident%]
|
||||||
|
reg delete "%_ident%" /f %nul%
|
||||||
|
reg query "%_ident%" %nul% && (
|
||||||
|
call :_color %Red% "[Failed]"
|
||||||
|
) || (
|
||||||
|
call :_color %Green% "[Successful]"
|
||||||
|
)
|
||||||
|
|
||||||
|
echo:
|
||||||
|
echo Restarting [ClipSVC wlidsvc LicenseManager sppsvc] services...
|
||||||
|
for %%# in (ClipSVC wlidsvc LicenseManager sppsvc) do (net stop %%# /y %nul% & net start %%# /y %nul%)
|
||||||
|
goto :at_back
|
||||||
|
|
||||||
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
:fixspoofer
|
||||||
|
|
||||||
|
cls
|
||||||
|
mode con cols=115 lines=32
|
||||||
|
%nul% %psc% "&{$W=$Host.UI.RawUI.WindowSize;$B=$Host.UI.RawUI.BufferSize;$W.Height=31;$B.Height=200;$Host.UI.RawUI.WindowSize=$W;$Host.UI.RawUI.BufferSize=$B;}"
|
||||||
|
title Fix: Issues Caused By Gaming Spoofers
|
||||||
|
|
||||||
|
%psc% $ExecutionContext.SessionState.LanguageMode 2>nul | find /i "Full" 1>nul || (
|
||||||
|
%eline%
|
||||||
|
echo Powershell is not responding properly. Aborting."
|
||||||
|
goto :at_back
|
||||||
|
)
|
||||||
|
|
||||||
|
echo:
|
||||||
|
echo %line%
|
||||||
|
echo:
|
||||||
|
echo Notes:
|
||||||
|
echo:
|
||||||
|
echo - Gaming unban/spoofers/cleaners often cause Windows activation issues.
|
||||||
|
echo:
|
||||||
|
call :_color2 %_White% " - " %Red% "Apply this fix ONLY if you have used these things."
|
||||||
|
echo:
|
||||||
|
echo - This option will fix files and registry permissions and rebuild licensing tokens.
|
||||||
|
echo:
|
||||||
|
echo - System restart is recommended after applying it.
|
||||||
|
echo:
|
||||||
|
echo %line%
|
||||||
|
echo:
|
||||||
|
choice /C:09 /N /M "> [9] Continue [0] Go back : "
|
||||||
|
if %errorlevel%==1 goto at_menu
|
||||||
|
|
||||||
|
cls
|
||||||
|
echo:
|
||||||
|
echo Fixing registry and files permissions...
|
||||||
|
call :fixpermissions %nul%
|
||||||
|
goto :cleanspptoken
|
||||||
|
|
||||||
|
:fixpermissions
|
||||||
|
|
||||||
|
:: Thanks to skidaim for the fix
|
||||||
|
|
||||||
|
takeown /F %windir%\System32\sppsvc.exe
|
||||||
|
icacls %windir%\System32 /grant administrators:F /T
|
||||||
|
icacls %windir%\System32\spp /grant administrators:F /T
|
||||||
|
|
||||||
|
:: I know it's bad but people have messed up system32 permissions, that's why I don't recommend to run this unless users have messed up systems
|
||||||
|
|
||||||
|
%psc% $acl = Get-Acl 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform'; $rule = New-Object System.Security.AccessControl.RegistryAccessRule ('NT Service\sppsvc','FullControl','ContainerInherit, ObjectInherit','None','Allow'); $acl.SetAccessRule($rule); Set-Acl -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform' -AclObject $acl
|
||||||
|
%psc% $acl = Get-Acl 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SPP'; $rule = New-Object System.Security.AccessControl.RegistryAccessRule ('NT Service\sppsvc','FullControl','ContainerInherit, ObjectInherit','None','Allow'); $acl.SetAccessRule($rule); Set-Acl -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SPP' -AclObject $acl
|
||||||
|
%psc% $acl = Get-Acl 'HKLM:\SYSTEM\CurrentControlSet\Services\SPPSVC'; $rule = New-Object System.Security.AccessControl.RegistryAccessRule ('NT Service\sppsvc','FullControl','ContainerInherit, ObjectInherit','None','Allow'); $acl.SetAccessRule($rule); Set-Acl -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\SPPSVC' -AclObject $acl
|
||||||
|
%psc% $acl = Get-Acl 'HKLM:\SYSTEM\WPA'; $rule = New-Object System.Security.AccessControl.RegistryAccessRule ('NT Service\sppsvc','FullControl','ContainerInherit, ObjectInherit','None','Allow'); $acl.SetAccessRule($rule); Set-Acl -Path 'HKLM:\SYSTEM\WPA' -AclObject $acl
|
||||||
|
%psc% $acl = Get-Acl '%windir%\System32'; $rule = New-Object System.Security.AccessControl.FileSystemAccessRule ('NT Service\sppsvc','FullControl','ContainerInherit, ObjectInherit','None','Allow'); $acl.SetAccessRule($rule); Set-Acl -Path '%windir%\System32' -AclObject $acl
|
||||||
|
%psc% $acl = Get-Acl '%windir%\System32\spp'; $rule = New-Object System.Security.AccessControl.FileSystemAccessRule ('NT Service\sppsvc','FullControl','ContainerInherit, ObjectInherit','None','Allow'); $acl.SetAccessRule($rule); Set-Acl -Path '%windir%\System32\spp' -AclObject $acl
|
||||||
|
exit /b
|
||||||
|
|
||||||
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
:fixwindows7
|
||||||
|
|
||||||
|
cls
|
||||||
|
mode 98, 30
|
||||||
|
title Fix: Issues Caused By KB971033 In Windows 7
|
||||||
|
|
||||||
|
if %winbuild% GEQ 9200 (
|
||||||
|
%eline%
|
||||||
|
echo Unsupported OS version Detected.
|
||||||
|
echo This option is supported only for Windows 7 and it's Server equivalent.
|
||||||
|
goto :at_back
|
||||||
|
)
|
||||||
|
|
||||||
|
echo:
|
||||||
|
echo %line%
|
||||||
|
echo:
|
||||||
|
echo Notes:
|
||||||
|
echo:
|
||||||
|
echo - This option fixes issues caused by Update KB971033 in Windows 7.
|
||||||
|
echo https://support.microsoft.com/en-us/help/4487266
|
||||||
|
echo:
|
||||||
|
echo %line%
|
||||||
|
echo:
|
||||||
|
choice /C:01 /N /M "> [1] Continue [0] Go back : "
|
||||||
|
if %errorlevel%==1 goto at_menu
|
||||||
|
|
||||||
|
cls
|
||||||
|
echo:
|
||||||
|
|
||||||
|
echo Checking Update KB971033...
|
||||||
|
dism /online /get-packages | find /i "Microsoft-Windows-Security-WindowsActivationTechnologies-package~31bf3856ad364e35~amd64~~7.1.7600.16395" 1>nul && (
|
||||||
|
echo [Found]
|
||||||
|
echo Uninstalling it...
|
||||||
|
) || (
|
||||||
|
echo [Not Found]
|
||||||
|
)
|
||||||
|
|
||||||
|
wusa /uninstall /quiet /norestart /kb:971033
|
||||||
|
|
||||||
|
echo:
|
||||||
|
echo Applying Fixes...
|
||||||
|
echo:
|
||||||
|
|
||||||
|
net stop sppuinotify /y
|
||||||
|
sc config sppuinotify start= disabled
|
||||||
|
net stop sppsvc /y
|
||||||
|
del %windir%\system32\7B296FB0-376B-497e-B012-9C450E1B7327-5P-0.C7483456-A289-439d-8115-601632D005A0 /ah
|
||||||
|
del %windir%\system32\7B296FB0-376B-497e-B012-9C450E1B7327-5P-1.C7483456-A289-439d-8115-601632D005A0 /ah
|
||||||
|
del %windir%\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform\tokens.dat
|
||||||
|
del %windir%\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform\cache\cache.dat
|
||||||
|
cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul%
|
||||||
|
sc config sppuinotify start= demand
|
||||||
|
|
||||||
|
goto :at_back
|
||||||
|
|
||||||
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
:rewmi
|
||||||
|
|
||||||
|
cls
|
||||||
|
mode 98, 30
|
||||||
|
title Rebuild WMI Repository
|
||||||
|
|
||||||
|
:: https://techcommunity.microsoft.com/t5/ask-the-performance-team/wmi-repository-corruption-or-not/ba-p/375484
|
||||||
|
|
||||||
|
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" (
|
||||||
|
%eline%
|
||||||
|
echo WMI rebuild is not recommended on Windows Server. Aborting...
|
||||||
|
goto :at_back
|
||||||
|
)
|
||||||
|
|
||||||
|
echo:
|
||||||
|
echo Initializing...
|
||||||
|
|
||||||
|
set _wmic=0
|
||||||
|
for %%# in (wmic.exe) do @if not "%%~$PATH:#"=="" set _wmic=1
|
||||||
|
|
||||||
|
set error=
|
||||||
|
if %_wmic% EQU 1 wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i "computersystem" 1>nul
|
||||||
|
if %_wmic% EQU 0 %psc% "Get-CIMInstance -Class Win32_ComputerSystem | Select-Object -Property CreationClassName" 2>nul | find /i "computersystem" 1>nul
|
||||||
|
if %errorlevel% NEQ 0 set error=1
|
||||||
|
winmgmt /verifyrepository %nul%
|
||||||
|
if %errorlevel% NEQ 0 set error=1
|
||||||
|
|
||||||
|
cls
|
||||||
|
echo:
|
||||||
|
echo %line%
|
||||||
|
echo:
|
||||||
|
if defined error (
|
||||||
|
echo WMI Status - [Not Responding] %_wmic%
|
||||||
|
) else (
|
||||||
|
call :_color %_Green% " WMI Status - [Working]"
|
||||||
|
)
|
||||||
|
echo:
|
||||||
|
echo Notes:
|
||||||
|
echo:
|
||||||
|
call :_color2 %_White% " - " %Magenta% "WMI rebuild can cause some 3rd party apps to not work until reinstall."
|
||||||
|
echo:
|
||||||
|
call :_color2 %_White% " - " %Red% "Apply this fix ONLY if WMI is not working."
|
||||||
|
echo:
|
||||||
|
echo %line%
|
||||||
|
echo:
|
||||||
|
choice /C:09 /N /M "> [9] Continue [0] Go back : "
|
||||||
|
if %errorlevel%==1 goto at_menu
|
||||||
|
|
||||||
|
:: Below fixes are taken from https://kb.acronis.com/content/62731
|
||||||
|
|
||||||
|
cls
|
||||||
|
echo:
|
||||||
|
|
||||||
|
sc query Winmgmt %nul% || (
|
||||||
|
%eline%
|
||||||
|
echo Winmgmt service is not installed. Aborting...
|
||||||
|
goto :at_back
|
||||||
|
)
|
||||||
|
|
||||||
|
echo Disabling Winmgmt service...
|
||||||
|
sc config Winmgmt start= disabled %nul%
|
||||||
|
if %errorlevel% EQU 0 (
|
||||||
|
call :_color %Green% "[Successful]"
|
||||||
|
) else (
|
||||||
|
call :_color %Red% "[Failed] Aborting..."
|
||||||
|
goto :wmifixend
|
||||||
|
)
|
||||||
|
|
||||||
|
echo:
|
||||||
|
echo Stopping Winmgmt service...
|
||||||
|
call :_stopservice Winmgmt
|
||||||
|
call :_stopservice Winmgmt
|
||||||
|
sc query Winmgmt | find /i "1 STOPPED" %nul% && (
|
||||||
|
call :_color %Green% "[Successful]"
|
||||||
|
) || (
|
||||||
|
call :_color %Red% "[Failed] Aborting..."
|
||||||
|
goto :wmifixend
|
||||||
|
)
|
||||||
|
|
||||||
|
echo:
|
||||||
|
echo Deleting WMI repository...
|
||||||
|
if exist "%windir%\System32\wbem\repository\" rmdir /s /q "%windir%\System32\wbem\repository\" %nul%
|
||||||
|
if exist "%windir%\System32\wbem\repository\" (
|
||||||
|
call :_color %Red% "[Failed]"
|
||||||
|
) else (
|
||||||
|
call :_color %Green% "[Successful]"
|
||||||
|
)
|
||||||
|
|
||||||
|
echo:
|
||||||
|
echo Enabling Winmgmt service...
|
||||||
|
sc config Winmgmt start= auto %nul%
|
||||||
|
if %errorlevel% EQU 0 (
|
||||||
|
call :_color %Green% "[Successful]"
|
||||||
|
) else (
|
||||||
|
call :_color %Red% "[Failed]"
|
||||||
|
)
|
||||||
|
|
||||||
|
echo:
|
||||||
|
echo Checking WMI...
|
||||||
|
if %_wmic% EQU 1 wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i "computersystem" 1>nul
|
||||||
|
if %_wmic% EQU 0 %psc% "Get-CIMInstance -Class Win32_ComputerSystem | Select-Object -Property CreationClassName" 2>nul | find /i "computersystem" 1>nul
|
||||||
|
if %errorlevel% NEQ 0 (
|
||||||
|
call :_color %Red% "[Not Responding]"
|
||||||
|
) else (
|
||||||
|
call :_color %Green% "[Working]"
|
||||||
|
)
|
||||||
|
|
||||||
|
goto :at_back
|
||||||
|
|
||||||
|
:wmifixend
|
||||||
|
|
||||||
|
echo:
|
||||||
|
echo Enabling Winmgmt service...
|
||||||
|
sc config Winmgmt start= auto %nul%
|
||||||
|
if %errorlevel% EQU 0 (
|
||||||
|
call :_color %Green% "[Successful]"
|
||||||
|
) else (
|
||||||
|
call :_color %Red% "[Failed]"
|
||||||
|
)
|
||||||
|
|
||||||
|
goto :at_back
|
||||||
|
|
||||||
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
:exportevtlogs
|
||||||
|
|
||||||
|
cls
|
||||||
|
mode con cols=125 lines=32
|
||||||
|
%nul% %psc% "&{$W=$Host.UI.RawUI.WindowSize;$B=$Host.UI.RawUI.BufferSize;$W.Height=31;$B.Height=500;$Host.UI.RawUI.WindowSize=$W;$Host.UI.RawUI.BufferSize=$B;}"
|
||||||
|
title Export Event Viewer Logs
|
||||||
|
|
||||||
|
set tdir=%SystemRoot%\Temp\_EventLogs
|
||||||
|
if exist %tdir%\. rd /s /q %tdir%\ %nul%
|
||||||
|
if exist %tdir%\ (
|
||||||
|
%eline%
|
||||||
|
echo Failed to delete below folder. Aborting...
|
||||||
|
echo %tdir%\
|
||||||
|
goto :at_back
|
||||||
|
)
|
||||||
|
|
||||||
|
md %tdir%\
|
||||||
|
|
||||||
|
echo:
|
||||||
|
echo Creating archive file of Event logs...
|
||||||
|
|
||||||
|
set _time=
|
||||||
|
for /f %%a in ('%psc% "Get-Date -format HH_mm_ss"') do set _time=%%a
|
||||||
|
%nul% robocopy %SystemRoot%\System32\winevt\Logs\ %tdir%\
|
||||||
|
|
||||||
|
:: https://stackoverflow.com/a/46268232
|
||||||
|
|
||||||
|
set "ddf="%SystemRoot%\Temp\ddf""
|
||||||
|
%nul% del /q /f %ddf%
|
||||||
|
echo/.New Cabinet>%ddf%
|
||||||
|
echo/.set Cabinet=ON>>%ddf%
|
||||||
|
echo/.set CabinetFileCountThreshold=0;>>%ddf%
|
||||||
|
echo/.set Compress=ON>>%ddf%
|
||||||
|
echo/.set CompressionType=LZX>>%ddf%
|
||||||
|
echo/.set CompressionLevel=7;>>%ddf%
|
||||||
|
echo/.set CompressionMemory=21;>>%ddf%
|
||||||
|
echo/.set FolderFileCountThreshold=0;>>%ddf%
|
||||||
|
echo/.set FolderSizeThreshold=0;>>%ddf%
|
||||||
|
echo/.set GenerateInf=OFF>>%ddf%
|
||||||
|
echo/.set InfFileName=nul>>%ddf%
|
||||||
|
echo/.set MaxCabinetSize=0;>>%ddf%
|
||||||
|
echo/.set MaxDiskFileCount=0;>>%ddf%
|
||||||
|
echo/.set MaxDiskSize=0;>>%ddf%
|
||||||
|
echo/.set MaxErrors=1;>>%ddf%
|
||||||
|
echo/.set RptFileName=nul>>%ddf%
|
||||||
|
echo/.set UniqueFiles=ON>>%ddf%
|
||||||
|
pushd "%tdir%\"
|
||||||
|
for /f "tokens=* delims=" %%D in ('dir /a:-D/b/s "%tdir%\"') do (
|
||||||
|
echo/"%%~fD" /inf=no;>>%ddf%
|
||||||
|
)
|
||||||
|
makecab /F %ddf% /D DiskDirectory1="" /D CabinetNameTemplate=%tdir%\Logs.cab
|
||||||
|
del /q /f %ddf%
|
||||||
|
popd
|
||||||
|
|
||||||
|
if not exist "!desktop!\AT_Logs\" md "!desktop!\AT_Logs\" %nul%
|
||||||
|
copy /y /b "%tdir%\Logs.cab" "!desktop!\AT_Logs\EventLogs_%_time%.cab" %nul%
|
||||||
|
if exist %tdir%\. rd /s /q %tdir%\ %nul%
|
||||||
|
|
||||||
|
echo:
|
||||||
|
if exist "!desktop!\AT_Logs\EventLogs_%_time%.cab" (
|
||||||
|
call :_color %Green% "[Successful]"
|
||||||
|
echo EventLogs_%_time%.cab created inside AT_Logs folder on the dekstop.
|
||||||
|
) else (
|
||||||
|
call :_color %Red% "[Failed]"
|
||||||
|
)
|
||||||
|
|
||||||
|
goto :at_back
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
@ -708,7 +1090,7 @@ goto :at_menu
|
|||||||
:at_done
|
:at_done
|
||||||
|
|
||||||
echo:
|
echo:
|
||||||
echo Press any key to exit...
|
echo Press any key to %_exitmsg%...
|
||||||
pause >nul
|
pause >nul
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
@ -779,7 +1161,57 @@ del /S /F /Q "%%#*.dat"
|
|||||||
)
|
)
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
::========================================================================================================================================\
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
:regownstart
|
||||||
|
|
||||||
|
setlocal
|
||||||
|
set "TMP=%SystemRoot%\Temp"
|
||||||
|
set "TEMP=%SystemRoot%\Temp"
|
||||||
|
%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':regown\:.*';iex ($f[1]);"
|
||||||
|
endlocal
|
||||||
|
exit /b
|
||||||
|
|
||||||
|
:: Below code takes ownership of a volatile registry key and deletes it
|
||||||
|
:: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ClipSVC\Volatile\PersistedSystemState
|
||||||
|
|
||||||
|
:: Thanks to Remko Weijnen for the code and thanks to abbodi1406 for the help
|
||||||
|
:: remkoweijnen.nl/blog/2012/01/16/take-ownership-of-a-registry-key-in-powershell/
|
||||||
|
|
||||||
|
:regown:
|
||||||
|
$definition = @"
|
||||||
|
using System;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
namespace Win32Api
|
||||||
|
{
|
||||||
|
public class NtDll
|
||||||
|
{
|
||||||
|
[DllImport("ntdll.dll", EntryPoint="RtlAdjustPrivilege")]
|
||||||
|
public static extern int RtlAdjustPrivilege(int Privilege, bool Enable, bool CurrentThread, ref bool Enabled);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"@
|
||||||
|
|
||||||
|
Add-Type -TypeDefinition $definition -PassThru | Out-Null
|
||||||
|
[Win32Api.NtDll]::RtlAdjustPrivilege(9, $true, $false, [ref]$false) | Out-Null
|
||||||
|
|
||||||
|
$SID = New-Object System.Security.Principal.SecurityIdentifier('S-1-5-32-544')
|
||||||
|
$IDN = ($SID.Translate([System.Security.Principal.NTAccount])).Value
|
||||||
|
$Admin = New-Object System.Security.Principal.NTAccount($IDN)
|
||||||
|
|
||||||
|
$path = 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\ClipSVC\Volatile\PersistedSystemState'
|
||||||
|
$key = [Microsoft.Win32.RegistryKey]::OpenBaseKey('LocalMachine', 'Registry64').OpenSubKey($path, 'ReadWriteSubTree', 'takeownership')
|
||||||
|
|
||||||
|
$acl = $key.GetAccessControl()
|
||||||
|
$acl.SetOwner($Admin)
|
||||||
|
$key.SetAccessControl($acl)
|
||||||
|
|
||||||
|
$rule = New-Object System.Security.AccessControl.RegistryAccessRule($Admin,"FullControl","Allow")
|
||||||
|
$acl.SetAccessRule($rule)
|
||||||
|
$key.SetAccessControl($acl)
|
||||||
|
:regown:
|
||||||
|
|
||||||
|
::========================================================================================================================================
|
||||||
|
|
||||||
:_color
|
:_color
|
||||||
|
|
||||||
|
@ -14,6 +14,10 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
:: To stage current edition while changing edition with CBS Upgrade Method, change 0 to 1 in below line
|
||||||
|
set _stg=0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
@ -55,8 +59,7 @@ if not %errorlevel%==0 (
|
|||||||
echo:
|
echo:
|
||||||
echo Error: This is not a correct file. It has LF line ending issue.
|
echo Error: This is not a correct file. It has LF line ending issue.
|
||||||
echo:
|
echo:
|
||||||
echo Press any key to exit...
|
ping 127.0.0.1 -n 6 > nul
|
||||||
pause >nul
|
|
||||||
popd
|
popd
|
||||||
exit /b
|
exit /b
|
||||||
)
|
)
|
||||||
@ -102,13 +105,23 @@ set "_Yellow="Black" "Yellow""
|
|||||||
set "nceline=echo: &echo ==== ERROR ==== &echo:"
|
set "nceline=echo: &echo ==== ERROR ==== &echo:"
|
||||||
set "eline=echo: &call :dk_color %Red% "==== ERROR ====" &echo:"
|
set "eline=echo: &call :dk_color %Red% "==== ERROR ====" &echo:"
|
||||||
set "line=echo ___________________________________________________________________________________________"
|
set "line=echo ___________________________________________________________________________________________"
|
||||||
|
if %~z0 GEQ 200000 (set "_exitmsg=Go back") else (set "_exitmsg=Exit")
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
if %winbuild% LSS 10240 (
|
if %winbuild% LSS 7600 (
|
||||||
%eline%
|
%nceline%
|
||||||
echo Unsupported OS version detected.
|
echo Unsupported OS version detected.
|
||||||
echo Project is supported for Windows 10/11/Server Build 10240 and later.
|
echo Project is supported only for Windows 7/8/8.1/10/11 and their Server equivalent.
|
||||||
|
goto ced_done
|
||||||
|
)
|
||||||
|
|
||||||
|
if %winbuild% LSS 9200 if not exist "%SystemRoot%\servicing\Packages\Microsoft-Windows-PowerShell-WTR-Package~*.mum" (
|
||||||
|
%nceline%
|
||||||
|
echo Updated Powershell not found.
|
||||||
|
echo:
|
||||||
|
echo Download Windows Management Framework 5.1 from below link and install
|
||||||
|
echo https://aka.ms/wmf5download
|
||||||
goto ced_done
|
goto ced_done
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -151,7 +164,7 @@ goto ced_done
|
|||||||
|
|
||||||
:: Elevate script as admin and pass arguments and preventing loop
|
:: Elevate script as admin and pass arguments and preventing loop
|
||||||
|
|
||||||
%nul% reg query HKU\S-1-5-19 || (
|
>nul fltmc || (
|
||||||
if not defined _elev %nul% %psc% "start cmd.exe -arg '/c \"!_PSarg:'=''!\"' -verb runas" && exit /b
|
if not defined _elev %nul% %psc% "start cmd.exe -arg '/c \"!_PSarg:'=''!\"' -verb runas" && exit /b
|
||||||
%eline%
|
%eline%
|
||||||
echo This script require administrator privileges.
|
echo This script require administrator privileges.
|
||||||
@ -164,23 +177,39 @@ goto ced_done
|
|||||||
cls
|
cls
|
||||||
mode 98, 30
|
mode 98, 30
|
||||||
|
|
||||||
call :dk_initial
|
echo:
|
||||||
|
echo Initializing...
|
||||||
|
echo:
|
||||||
|
call :dk_product
|
||||||
|
call :dk_ckeckwmic
|
||||||
|
|
||||||
if not defined applist (
|
:: Show info for potential script stuck scenario
|
||||||
cls
|
|
||||||
%eline%
|
sc start sppsvc %nul%
|
||||||
echo Not Respoding: !e_wmispp!
|
if %errorlevel% NEQ 1056 if %errorlevel% NEQ 0 (
|
||||||
goto ced_done
|
echo:
|
||||||
|
echo Error code: %errorlevel%
|
||||||
|
call :dk_color %Red% "Failed to start [sppsvc] service, rest of the process may take a long time..."
|
||||||
|
echo:
|
||||||
)
|
)
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
:: Check Activation IDs
|
||||||
|
|
||||||
|
call :dk_actids
|
||||||
|
|
||||||
|
if not defined applist (
|
||||||
|
%eline%
|
||||||
|
echo Activation IDs not found. Aborting...
|
||||||
|
goto ced_done
|
||||||
|
)
|
||||||
|
|
||||||
:: Check Windows Edition
|
:: Check Windows Edition
|
||||||
|
|
||||||
set osedition=
|
set osedition=
|
||||||
for /f "tokens=3 delims=: " %%a in ('DISM /English /Online /Get-CurrentEdition 2^>nul ^| find /i "Current Edition :"') do set "osedition=%%a"
|
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%"=="" (
|
if "%osedition%"=="" (
|
||||||
%eline%
|
%eline%
|
||||||
DISM /English /Online /Get-CurrentEdition %nul%
|
DISM /English /Online /Get-CurrentEdition %nul%
|
||||||
@ -190,10 +219,6 @@ echo OS Edition was not detected properly. Aborting...
|
|||||||
goto ced_done
|
goto ced_done
|
||||||
)
|
)
|
||||||
|
|
||||||
:: Check product name
|
|
||||||
|
|
||||||
call :dk_product
|
|
||||||
|
|
||||||
:: Check SKU value
|
:: Check SKU value
|
||||||
|
|
||||||
set osSKU=
|
set osSKU=
|
||||||
@ -213,6 +238,9 @@ echo SKU value was not detected properly. Aborting...
|
|||||||
goto ced_done
|
goto ced_done
|
||||||
)
|
)
|
||||||
|
|
||||||
|
set branch=
|
||||||
|
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v BuildBranch 2^>nul') do set "branch=%%b"
|
||||||
|
|
||||||
:: Check PowerShell
|
:: Check PowerShell
|
||||||
|
|
||||||
%psc% $ExecutionContext.SessionState.LanguageMode 2>nul | find /i "Full" 1>nul || (
|
%psc% $ExecutionContext.SessionState.LanguageMode 2>nul | find /i "Full" 1>nul || (
|
||||||
@ -221,25 +249,17 @@ echo PowerShell is not responding properly. Aborting...
|
|||||||
goto ced_done
|
goto ced_done
|
||||||
)
|
)
|
||||||
|
|
||||||
:: Check slmgr /dlv
|
|
||||||
|
|
||||||
cscript //nologo %windir%\system32\slmgr.vbs /dlv %nul%
|
|
||||||
set error_code=%errorlevel%
|
|
||||||
cmd /c exit /b %error_code%
|
|
||||||
if %error_code% NEQ 0 set "error_code=[0x%=ExitCode%]"
|
|
||||||
if %error_code% NEQ 0 (
|
|
||||||
%eline%
|
|
||||||
echo slmgr /dlv is not responding %error_code%
|
|
||||||
goto ced_done
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:: Get Target editions list
|
:: Get Target editions list
|
||||||
|
|
||||||
set _target=
|
set _target=
|
||||||
|
set _dtarget=
|
||||||
|
set _ptarget=
|
||||||
set _ntarget=
|
set _ntarget=
|
||||||
for /f "tokens=4" %%a in ('dism /online /english /Get-TargetEditions ^| findstr /i /c:"Target Edition : "') do (if defined _target (set "_target=!_target! %%a") else (set "_target=%%a"))
|
|
||||||
|
if %winbuild% GEQ 10240 for /f "tokens=4" %%a in ('dism /online /english /Get-TargetEditions ^| findstr /i /c:"Target Edition : "') do (if defined _dtarget (set "_dtarget=!_dtarget! %%a") else (set "_dtarget=%%a"))
|
||||||
|
for /f "tokens=4" %%a in ('%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':cbsxml\:.*';& ([ScriptBlock]::Create($f[1])) -GetTargetEditions;" ^| findstr /i /c:"Target Edition : "') do (if defined _ptarget (set "_ptarget=!_ptarget! %%a") else (set "_ptarget=%%a"))
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
@ -253,9 +273,13 @@ echo Aborting...
|
|||||||
goto ced_done
|
goto ced_done
|
||||||
)
|
)
|
||||||
|
|
||||||
|
for %%# in ( %_dtarget% %_ptarget% ) do (
|
||||||
|
echo "!_target!" | find /i " %%# " 1>nul || set "_target=!_target! %%# "
|
||||||
|
)
|
||||||
|
|
||||||
if defined _target (
|
if defined _target (
|
||||||
for %%# in (%_target%) do (
|
for %%# in (%_target%) do (
|
||||||
echo %%# | findstr /i "CountrySpecific CloudEdition" %nul% || (if defined _ntarget (set "_ntarget=!_ntarget! %%#") else (set "_ntarget=%%#"))
|
echo %%# | findstr /i "CountrySpecific CloudEdition" %nul% || (set "_ntarget=!_ntarget! %%#")
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -275,26 +299,40 @@ goto ced_done
|
|||||||
cls
|
cls
|
||||||
mode 98, 30
|
mode 98, 30
|
||||||
set inpt=
|
set inpt=
|
||||||
|
set note=
|
||||||
set counter=0
|
set counter=0
|
||||||
set verified=0
|
set verified=0
|
||||||
set targetedition=
|
set targetedition=
|
||||||
|
|
||||||
%line%
|
%line%
|
||||||
echo:
|
echo:
|
||||||
call :dk_color %Gray% "You can change the Current Edition [%osedition%] to one of the following."
|
call :dk_color %Gray% "You can change the Edition [%osedition%] [%winbuild%] to one of the following."
|
||||||
%line%
|
%line%
|
||||||
echo:
|
echo:
|
||||||
|
|
||||||
for %%A in (%_ntarget%) do (
|
for %%A in (%_ntarget%) do (
|
||||||
set /a counter+=1
|
set /a counter+=1
|
||||||
|
if %winbuild% GEQ 10240 (
|
||||||
|
echo "%_ptarget%" | find /i "%%A" 1>nul && (
|
||||||
|
set note=1
|
||||||
|
call :dk_color2 %_White% "[!counter!] " %Magenta% "%%A"
|
||||||
|
) || (
|
||||||
echo [!counter!] %%A
|
echo [!counter!] %%A
|
||||||
|
)
|
||||||
|
) else (
|
||||||
|
echo [!counter!] %%A
|
||||||
|
)
|
||||||
set targetedition!counter!=%%A
|
set targetedition!counter!=%%A
|
||||||
)
|
)
|
||||||
|
|
||||||
%line%
|
%line%
|
||||||
echo:
|
echo:
|
||||||
echo [0] Exit
|
echo [0] %_exitmsg%
|
||||||
echo:
|
echo:
|
||||||
|
if defined note (
|
||||||
|
echo Note: CBS Upgrade Method is available for Purple colored editions.
|
||||||
|
echo:
|
||||||
|
)
|
||||||
call :dk_color %_Green% "Enter option number in keyboard, and press "Enter":"
|
call :dk_color %_Green% "Enter option number in keyboard, and press "Enter":"
|
||||||
set /p inpt=
|
set /p inpt=
|
||||||
if "%inpt%"=="" goto cedmenu2
|
if "%inpt%"=="" goto cedmenu2
|
||||||
@ -305,6 +343,42 @@ if %verified%==0 goto cedmenu2
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
cls
|
||||||
|
if %winbuild% GEQ 10240 (
|
||||||
|
echo "%_ptarget%" | find /i "%targetedition%" 1>nul && (
|
||||||
|
echo "%_dtarget%" | find /i "%targetedition%" 1>nul && (
|
||||||
|
echo:
|
||||||
|
%line%
|
||||||
|
echo:
|
||||||
|
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" (
|
||||||
|
echo [1] DISM Method
|
||||||
|
) else (
|
||||||
|
echo [1] Changepk Method
|
||||||
|
)
|
||||||
|
echo:
|
||||||
|
echo [2] CBS Upgrade Method [Alternative]
|
||||||
|
echo:
|
||||||
|
echo [0] Go back
|
||||||
|
%line%
|
||||||
|
echo:
|
||||||
|
echo Enter a menu option in the Keyboard:
|
||||||
|
choice /C:120 /N
|
||||||
|
set _el=!errorlevel!
|
||||||
|
if !_el!==3 goto :cedmenu2
|
||||||
|
if !_el!==2 goto :cbsmethod
|
||||||
|
if !_el!==1 REM
|
||||||
|
)
|
||||||
|
)
|
||||||
|
) else (
|
||||||
|
goto :cbsmethod
|
||||||
|
)
|
||||||
|
|
||||||
|
echo "%_ptarget%" | find /i "%targetedition%" 1>nul && (
|
||||||
|
echo "%_dtarget%" | find /i "%targetedition%" 1>nul || (
|
||||||
|
goto :cbsmethod
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" (
|
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" (
|
||||||
goto :ced_change_server
|
goto :ced_change_server
|
||||||
)
|
)
|
||||||
@ -327,7 +401,7 @@ set _changepk=1
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
if %winbuild% LEQ 19044 call :changeeditiondata
|
if %winbuild% LEQ 19045 call :changeeditiondata
|
||||||
|
|
||||||
if not defined key call :ced_targetSKU %targetedition%
|
if not defined key call :ced_targetSKU %targetedition%
|
||||||
if not defined key if defined targetSKU call :ced_windowskey
|
if not defined key if defined targetSKU call :ced_windowskey
|
||||||
@ -337,7 +411,8 @@ if not defined key (
|
|||||||
%eline%
|
%eline%
|
||||||
echo [%targetedition% ^| %winbuild%]
|
echo [%targetedition% ^| %winbuild%]
|
||||||
echo Unable to get product key from pkeyhelper.dll
|
echo Unable to get product key from pkeyhelper.dll
|
||||||
echo Make sure you are using updated version of the script
|
echo Make sure you are using updated version of the script.
|
||||||
|
echo https://massgrave.dev
|
||||||
goto ced_done
|
goto ced_done
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -348,8 +423,6 @@ goto ced_done
|
|||||||
:: Changing from Core to Non-Core & Changing editions in Windows build older than 17134 requires "changepk /productkey" method and restart
|
:: Changing from Core to Non-Core & Changing editions in Windows build older than 17134 requires "changepk /productkey" method and restart
|
||||||
:: In other cases, editions can be changed instantly with "slmgr /ipk"
|
:: In other cases, editions can be changed instantly with "slmgr /ipk"
|
||||||
|
|
||||||
:ced_loop
|
|
||||||
|
|
||||||
cls
|
cls
|
||||||
if %_changepk%==1 (
|
if %_changepk%==1 (
|
||||||
echo "%_chan%" | find /i "OEM" >NUL && (
|
echo "%_chan%" | find /i "OEM" >NUL && (
|
||||||
@ -358,10 +431,17 @@ echo [%osedition%] can not be changed to [%targetedition%] Edition due to lack o
|
|||||||
echo Non-OEM keys are required to change from Core to Non-Core Editions.
|
echo Non-OEM keys are required to change from Core to Non-Core Editions.
|
||||||
goto ced_done
|
goto ced_done
|
||||||
)
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
:ced_loop
|
||||||
|
|
||||||
|
cls
|
||||||
|
if %_changepk%==1 (
|
||||||
for %%a in (dns.msftncsi.com,www.microsoft.com,one.one.one.one,resolver1.opendns.com) do (
|
for %%a in (dns.msftncsi.com,www.microsoft.com,one.one.one.one,resolver1.opendns.com) do (
|
||||||
for /f "delims=[] tokens=2" %%# in ('ping -n 1 %%a') do (
|
for /f "delims=[] tokens=2" %%# in ('ping -n 1 %%a') do (
|
||||||
if not [%%#]==[] (
|
if not [%%#]==[] (
|
||||||
%eline%
|
%eline%
|
||||||
|
echo Internet needs to be disconnected to change edition [%osedition%] to [%targetedition%]
|
||||||
echo Disconnect the Internet and then press any key...
|
echo Disconnect the Internet and then press any key...
|
||||||
pause >nul
|
pause >nul
|
||||||
goto ced_loop
|
goto ced_loop
|
||||||
@ -375,12 +455,20 @@ echo Changing the Current Edition [%osedition%] to [%targetedition%]
|
|||||||
echo:
|
echo:
|
||||||
|
|
||||||
if %_changepk%==1 (
|
if %_changepk%==1 (
|
||||||
call :dk_color %Green% "You can safely ignore if error appears in the upgrade Window."
|
call :dk_color %_Green% "You can safely ignore if error appears in the upgrade Window."
|
||||||
call :dk_color %Red% "But in that case you must manually reboot the system."
|
call :dk_color %_Yellow% "But in that case you must manually reboot the system."
|
||||||
echo:
|
echo:
|
||||||
|
%psc% "$BLinfo = Get-BitLockerVolume -MountPoint "C:";$blinfo.ProtectionStatus" | find /i "On" 1>nul && (
|
||||||
|
call :dk_color %Red% "Bitlocker / Device Encryption is On in the system."
|
||||||
|
echo:
|
||||||
|
echo Either Use alternative CBS upgrade method for edition change
|
||||||
|
echo Or Ensure that you have it's recovery key, you may need it
|
||||||
|
echo Or Turn off Bitlocker / Device Encryption
|
||||||
|
echo:
|
||||||
|
)
|
||||||
call :dk_color %Magenta% "Important - Save your work before continue, system will auto reboot."
|
call :dk_color %Magenta% "Important - Save your work before continue, system will auto reboot."
|
||||||
echo:
|
echo:
|
||||||
choice /C:21 /N /M "[1] Continue [2] Exit : "
|
choice /C:21 /N /M "[1] Continue [2] %_exitmsg% : "
|
||||||
if !errorlevel!==1 exit /b
|
if !errorlevel!==1 exit /b
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -419,6 +507,34 @@ goto ced_done
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
:cbsmethod
|
||||||
|
|
||||||
|
cls
|
||||||
|
mode con cols=105 lines=32
|
||||||
|
%nul% %psc% "&{$W=$Host.UI.RawUI.WindowSize;$B=$Host.UI.RawUI.BufferSize;$W.Height=31;$B.Height=200;$Host.UI.RawUI.WindowSize=$W;$Host.UI.RawUI.BufferSize=$B;}"
|
||||||
|
|
||||||
|
echo:
|
||||||
|
echo Changing the Current Edition [%osedition%] to [%targetedition%]
|
||||||
|
echo:
|
||||||
|
call :dk_color %Magenta% "Important - Save your work before continue, system will auto reboot."
|
||||||
|
if %winbuild% GEQ 17034 if %targetedition%==Professional echo - Enterprise Key will be installed instead of Pro, you can quickly change to Pro later.
|
||||||
|
echo:
|
||||||
|
choice /C:01 /N /M "[1] Continue [0] %_exitmsg% : "
|
||||||
|
if %errorlevel%==1 exit /b
|
||||||
|
|
||||||
|
echo:
|
||||||
|
echo Initializing...
|
||||||
|
echo:
|
||||||
|
|
||||||
|
if %_stg%==0 (set stage=) else (set stage=-StageCurrent)
|
||||||
|
%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':cbsxml\:.*';& ([ScriptBlock]::Create($f[1])) -SetEdition %targetedition% %stage%;"
|
||||||
|
|
||||||
|
echo:
|
||||||
|
%line%
|
||||||
|
goto ced_done
|
||||||
|
|
||||||
|
::========================================================================================================================================
|
||||||
|
|
||||||
:ced_change_server
|
:ced_change_server
|
||||||
|
|
||||||
cls
|
cls
|
||||||
@ -438,7 +554,8 @@ if not defined key (
|
|||||||
%eline%
|
%eline%
|
||||||
echo [%targetedition% ^| %winbuild%]
|
echo [%targetedition% ^| %winbuild%]
|
||||||
echo Unable to get product key from pkeyhelper.dll
|
echo Unable to get product key from pkeyhelper.dll
|
||||||
echo Make sure you are using updated version of the script
|
echo Make sure you are using updated version of the script.
|
||||||
|
echo https://massgrave.dev
|
||||||
goto ced_done
|
goto ced_done
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -459,7 +576,7 @@ call :dk_color %Magenta% "Make sure to restart the system."
|
|||||||
:ced_done
|
:ced_done
|
||||||
|
|
||||||
echo:
|
echo:
|
||||||
call :dk_color %_Yellow% "Press any key to exit..."
|
call :dk_color %_Yellow% "Press any key to %_exitmsg%..."
|
||||||
pause >nul
|
pause >nul
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
@ -509,53 +626,6 @@ wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i "com
|
|||||||
)
|
)
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
:dk_initial
|
|
||||||
|
|
||||||
echo:
|
|
||||||
echo Initializing...
|
|
||||||
|
|
||||||
:: Check and enable WinMgmt, sppsvc services if required
|
|
||||||
|
|
||||||
for %%# in (WinMgmt sppsvc) do (
|
|
||||||
for /f "skip=2 tokens=2*" %%a in ('reg query HKLM\SYSTEM\CurrentControlSet\Services\%%# /v Start 2^>nul') do if /i %%b NEQ 0x2 (
|
|
||||||
echo:
|
|
||||||
echo Enabling %%# service...
|
|
||||||
if /i %%#==sppsvc sc config %%# start= delayed-auto %nul% || echo Failed
|
|
||||||
if /i %%#==WinMgmt sc config %%# start= auto %nul% || echo Failed
|
|
||||||
)
|
|
||||||
sc start %%# %nul%
|
|
||||||
if !errorlevel! NEQ 1056 if !errorlevel! NEQ 0 (
|
|
||||||
echo:
|
|
||||||
echo Starting %%# service...
|
|
||||||
sc start %%#
|
|
||||||
echo:
|
|
||||||
call :dk_color %Red% "Failed to start [%%#] service, rest of the process may take a long time..."
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
:: Check WMI and SPP Errors
|
|
||||||
|
|
||||||
call :dk_ckeckwmic
|
|
||||||
|
|
||||||
set e_wmi=
|
|
||||||
set e_wmispp=
|
|
||||||
call :dk_actids
|
|
||||||
|
|
||||||
if not defined applist (
|
|
||||||
net stop sppsvc /y %nul%
|
|
||||||
cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul%
|
|
||||||
if !errorlevel! NEQ 0 cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul%
|
|
||||||
call :dk_refresh
|
|
||||||
|
|
||||||
if %_wmic% EQU 1 wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i "computersystem" 1>nul
|
|
||||||
if %_wmic% EQU 0 %psc% "Get-CIMInstance -Class Win32_ComputerSystem | Select-Object -Property CreationClassName" 2>nul | find /i "computersystem" 1>nul
|
|
||||||
if !errorlevel! NEQ 0 set e_wmi=1
|
|
||||||
|
|
||||||
if defined e_wmi (set e_wmispp=WMI, SPP) else (set e_wmispp=SPP)
|
|
||||||
call :dk_actids
|
|
||||||
)
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:: Get Product Key from pkeyhelper.dll for future new editions
|
:: Get Product Key from pkeyhelper.dll for future new editions
|
||||||
@ -631,6 +701,231 @@ exit /b
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
:: https://github.com/Gamers-Against-Weed/Set-WindowsCbsEdition
|
||||||
|
|
||||||
|
:cbsxml:[
|
||||||
|
param (
|
||||||
|
[Parameter()]
|
||||||
|
[String]$SetEdition,
|
||||||
|
|
||||||
|
[Parameter()]
|
||||||
|
[Switch]$GetTargetEditions,
|
||||||
|
|
||||||
|
[Parameter()]
|
||||||
|
[Switch]$StageCurrent
|
||||||
|
)
|
||||||
|
|
||||||
|
function Get-AssemblyIdentity {
|
||||||
|
param (
|
||||||
|
[String]$PackageName
|
||||||
|
)
|
||||||
|
|
||||||
|
$PackageName = [String]$PackageName
|
||||||
|
$packageData = ($PackageName -split '~')
|
||||||
|
|
||||||
|
if($packageData[3] -eq '') {
|
||||||
|
$packageData[3] = 'neutral'
|
||||||
|
}
|
||||||
|
|
||||||
|
return "<assemblyIdentity name=`"$($packageData[0])`" version=`"$($packageData[4])`" processorArchitecture=`"$($packageData[2])`" publicKeyToken=`"$($packageData[1])`" language=`"$($packageData[3])`" />"
|
||||||
|
}
|
||||||
|
|
||||||
|
function Get-SxsName {
|
||||||
|
param (
|
||||||
|
[String]$PackageName
|
||||||
|
)
|
||||||
|
|
||||||
|
$name = ($PackageName -replace '[^A-z0-9\-\._]', '')
|
||||||
|
|
||||||
|
if($name.Length -gt 40) {
|
||||||
|
$name = ($name[0..18] -join '') + '\.\.' + ($name[-19..-1] -join '')
|
||||||
|
}
|
||||||
|
|
||||||
|
return $name.ToLower()
|
||||||
|
}
|
||||||
|
|
||||||
|
function Find-EditionXmlInSxs {
|
||||||
|
param (
|
||||||
|
[String]$Edition
|
||||||
|
)
|
||||||
|
|
||||||
|
$candidates = @($Edition, 'Client', 'Server')
|
||||||
|
$winSxs = $Env:SystemRoot + '\WinSxS'
|
||||||
|
$allInSxs = Get-ChildItem -Path $winSxs | select Name
|
||||||
|
|
||||||
|
foreach($candidate in $candidates) {
|
||||||
|
$name = Get-SxsName -PackageName "Microsoft-Windows-Editions-$candidate"
|
||||||
|
$packages = $allInSxs | where name -Match ('^.*_'+$name+'_31bf3856ad364e35')
|
||||||
|
|
||||||
|
if($packages.Length -eq 0) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
$package = $packages[-1].Name
|
||||||
|
$testPath = $winSxs + "\$package\" + $Edition + 'Edition.xml'
|
||||||
|
|
||||||
|
if(Test-Path -Path $testPath -PathType Leaf) {
|
||||||
|
return $testPath
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $null
|
||||||
|
}
|
||||||
|
|
||||||
|
function Find-EditionXml {
|
||||||
|
param (
|
||||||
|
[String]$Edition
|
||||||
|
)
|
||||||
|
|
||||||
|
$servicingEditions = $Env:SystemRoot + '\servicing\Editions'
|
||||||
|
$editionXml = $Edition + 'Edition.xml'
|
||||||
|
|
||||||
|
$editionXmlInServicing = $servicingEditions + '\' + $editionXml
|
||||||
|
|
||||||
|
if(Test-Path -Path $editionXmlInServicing -PathType Leaf) {
|
||||||
|
return $editionXmlInServicing
|
||||||
|
}
|
||||||
|
|
||||||
|
return Find-EditionXmlInSxs -Edition $Edition
|
||||||
|
}
|
||||||
|
|
||||||
|
function Write-UpgradeCandidates {
|
||||||
|
param (
|
||||||
|
[HashTable]$InstallCandidates
|
||||||
|
)
|
||||||
|
|
||||||
|
$editionCount = 0
|
||||||
|
Write-Host 'Editions that can be upgraded to:'
|
||||||
|
foreach($candidate in $InstallCandidates.Keys) {
|
||||||
|
Write-Host "Target Edition : $candidate"
|
||||||
|
$editionCount++
|
||||||
|
}
|
||||||
|
|
||||||
|
if($editionCount -eq 0) {
|
||||||
|
Write-Host '(no editions are available)'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function Write-UpgradeXml {
|
||||||
|
param (
|
||||||
|
[Array]$RemovalCandidates,
|
||||||
|
[Array]$InstallCandidates,
|
||||||
|
[Boolean]$Stage
|
||||||
|
)
|
||||||
|
|
||||||
|
$removeAction = 'remove'
|
||||||
|
if($Stage) {
|
||||||
|
$removeAction = 'stage'
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Output '<?xml version="1.0"?>'
|
||||||
|
Write-Output '<unattend xmlns="urn:schemas-microsoft-com:unattend">'
|
||||||
|
Write-Output '<servicing>'
|
||||||
|
|
||||||
|
foreach($package in $InstallCandidates) {
|
||||||
|
Write-Output '<package action="install">'
|
||||||
|
Write-Output (Get-AssemblyIdentity -PackageName $package)
|
||||||
|
Write-Output '</package>'
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach($package in $RemovalCandidates) {
|
||||||
|
Write-Output "<package action=`"$removeAction`">"
|
||||||
|
Write-Output (Get-AssemblyIdentity -PackageName $package)
|
||||||
|
Write-Output '</package>'
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Output '</servicing>'
|
||||||
|
Write-Output '</unattend>'
|
||||||
|
}
|
||||||
|
|
||||||
|
function Write-Usage {
|
||||||
|
Get-Help $PSCommandPath -detailed
|
||||||
|
}
|
||||||
|
|
||||||
|
$version = '1.0'
|
||||||
|
$getTargetsParam = $GetTargetEditions.IsPresent
|
||||||
|
$stageCurrentParam = $StageCurrent.IsPresent
|
||||||
|
|
||||||
|
if($SetEdition -eq '' -and ($false -eq $getTargetsParam)) {
|
||||||
|
Write-Usage
|
||||||
|
Exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
$removalCandidates = @();
|
||||||
|
$installCandidates = @{};
|
||||||
|
|
||||||
|
$packages = Get-ChildItem -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages' | select Name | where name -Match '^.*\\Microsoft-Windows-.*Edition~'
|
||||||
|
foreach($package in $packages) {
|
||||||
|
$state = (Get-ItemProperty -Path "Registry::$($package.Name)").CurrentState
|
||||||
|
$packageName = ($package.Name -split '\\')[-1]
|
||||||
|
$packageEdition = (($packageName -split 'Edition~')[0] -split 'Microsoft-Windows-')[-1]
|
||||||
|
|
||||||
|
if($state -eq 0x40) {
|
||||||
|
if($null -eq $installCandidates[$packageEdition]) {
|
||||||
|
$installCandidates[$packageEdition] = @()
|
||||||
|
}
|
||||||
|
|
||||||
|
if($false -eq ($packageName -in $installCandidates[$packageEdition])) {
|
||||||
|
$installCandidates[$packageEdition] = $installCandidates[$packageEdition] + @($packageName)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if((($state -eq 0x50) -or ($state -eq 0x70)) -and ($false -eq ($packageName -in $removalCandidates))) {
|
||||||
|
$removalCandidates = $removalCandidates + @($packageName)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if($getTargetsParam) {
|
||||||
|
Write-UpgradeCandidates -InstallCandidates $installCandidates
|
||||||
|
Exit
|
||||||
|
}
|
||||||
|
|
||||||
|
if($false -eq ($SetEdition -in $installCandidates.Keys)) {
|
||||||
|
Write-Error "The system cannot be upgraded to `"$SetEdition`""
|
||||||
|
Exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
$xmlPath = $Env:Temp + '\CbsUpgrade.xml'
|
||||||
|
|
||||||
|
Write-UpgradeXml -RemovalCandidates $removalCandidates `
|
||||||
|
-InstallCandidates $installCandidates[$SetEdition] `
|
||||||
|
-Stage $stageCurrentParam >$xmlPath
|
||||||
|
|
||||||
|
$editionXml = Find-EditionXml -Edition $SetEdition
|
||||||
|
if($null -eq $editionXml) {
|
||||||
|
Write-Warning 'Unable to find edition specific settings XML. Proceeding without it...'
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host 'Starting the upgrade process. This may take a while...'
|
||||||
|
|
||||||
|
DISM.EXE /English /NoRestart /Online /Apply-Unattend:$xmlPath
|
||||||
|
$dismError = $LASTEXITCODE
|
||||||
|
|
||||||
|
Remove-Item -Path $xmlPath -Force
|
||||||
|
|
||||||
|
if(($dismError -ne 0) -and ($dismError -ne 3010)) {
|
||||||
|
Write-Error 'Failed to upgrade to the target edition'
|
||||||
|
Exit $dismError
|
||||||
|
}
|
||||||
|
|
||||||
|
if($null -ne $editionXml) {
|
||||||
|
$destination = $Env:SystemRoot + '\' + $SetEdition + '.xml'
|
||||||
|
Copy-Item -Path $editionXml -Destination $destination
|
||||||
|
|
||||||
|
DISM.EXE /English /NoRestart /Online /Apply-Unattend:$editionXml
|
||||||
|
$dismError = $LASTEXITCODE
|
||||||
|
|
||||||
|
if(($dismError -ne 0) -and ($dismError -ne 3010)) {
|
||||||
|
Write-Error 'Failed to apply edition specific settings'
|
||||||
|
Exit $dismError
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Restart-Computer
|
||||||
|
:cbsxml:]
|
||||||
|
|
||||||
|
::========================================================================================================================================
|
||||||
|
|
||||||
:: 1st column = Generic Retail/OEM/MAK/GVLK Key
|
:: 1st column = Generic Retail/OEM/MAK/GVLK Key
|
||||||
:: 2nd column = Key Type
|
:: 2nd column = Key Type
|
||||||
:: 3rd column = WMI Edition ID
|
:: 3rd column = WMI Edition ID
|
||||||
@ -644,43 +939,45 @@ exit /b
|
|||||||
:changeeditiondata
|
:changeeditiondata
|
||||||
|
|
||||||
for %%# in (
|
for %%# in (
|
||||||
44NYX-TKR9D-CCM2D-V6B8F-HQWWR_Volume:MAK_Enterprise
|
44NYX-TKR9D-CCM2D-V6B8F-HQWWR__Volume:MAK_Enterprise
|
||||||
D6RD9-D4N8T-RT9QX-YW6YT-FCWWJ_____Retail_Starter
|
D6RD9-D4N8T-RT9QX-YW6YT-FCWWJ______Retail_Starter
|
||||||
3V6Q6-NQXCX-V8YXR-9QCYV-QPFCT_Volume:MAK_EnterpriseN
|
3V6Q6-NQXCX-V8YXR-9QCYV-QPFCT__Volume:MAK_EnterpriseN
|
||||||
3NFXW-2T27M-2BDW6-4GHRV-68XRX_____Retail_StarterN
|
3NFXW-2T27M-2BDW6-4GHRV-68XRX______Retail_StarterN
|
||||||
VK7JG-NPHTM-C97JM-9MPGT-3V66T_____Retail_Professional
|
VK7JG-NPHTM-C97JM-9MPGT-3V66T______Retail_Professional
|
||||||
2B87N-8KFHP-DKV6R-Y2C8J-PKCKT_____Retail_ProfessionalN
|
2B87N-8KFHP-DKV6R-Y2C8J-PKCKT______Retail_ProfessionalN
|
||||||
4CPRK-NM3K3-X6XXQ-RXX86-WXCHW_____Retail_CoreN
|
4CPRK-NM3K3-X6XXQ-RXX86-WXCHW______Retail_CoreN
|
||||||
N2434-X9D7W-8PF6X-8DV9T-8TYMD_____Retail_CoreCountrySpecific
|
N2434-X9D7W-8PF6X-8DV9T-8TYMD______Retail_CoreCountrySpecific
|
||||||
BT79Q-G7N6G-PGBYW-4YWX6-6F4BT_____Retail_CoreSingleLanguage
|
BT79Q-G7N6G-PGBYW-4YWX6-6F4BT______Retail_CoreSingleLanguage
|
||||||
YTMG3-N6DKC-DKB77-7M9GH-8HVX7_____Retail_Core
|
YTMG3-N6DKC-DKB77-7M9GH-8HVX7______Retail_Core
|
||||||
XKCNC-J26Q9-KFHD2-FKTHY-KD72Y_OEM:NONSLP_PPIPro
|
XKCNC-J26Q9-KFHD2-FKTHY-KD72Y__OEM:NONSLP_PPIPro
|
||||||
YNMGQ-8RYV3-4PGQ3-C8XTP-7CFBY_____Retail_Education
|
YNMGQ-8RYV3-4PGQ3-C8XTP-7CFBY______Retail_Education
|
||||||
84NGF-MHBT6-FXBX8-QWJK7-DRR8H_____Retail_EducationN
|
84NGF-MHBT6-FXBX8-QWJK7-DRR8H______Retail_EducationN
|
||||||
KCNVH-YKWX8-GJJB9-H9FDT-6F7W2_Volume:MAK_EnterpriseS_2021
|
KCNVH-YKWX8-GJJB9-H9FDT-6F7W2__Volume:MAK_EnterpriseS_VB
|
||||||
VBX36-N7DDY-M9H62-83BMJ-CPR42_Volume:MAK_EnterpriseS_2019
|
VBX36-N7DDY-M9H62-83BMJ-CPR42__Volume:MAK_EnterpriseS_RS5
|
||||||
PN3KR-JXM7T-46HM4-MCQGK-7XPJQ_Volume:MAK_EnterpriseS_2016
|
PN3KR-JXM7T-46HM4-MCQGK-7XPJQ__Volume:MAK_EnterpriseS_RS1
|
||||||
DVWKN-3GCMV-Q2XF4-DDPGM-VQWWY_Volume:MAK_EnterpriseS_2015
|
DVWKN-3GCMV-Q2XF4-DDPGM-VQWWY__Volume:MAK_EnterpriseS_TH
|
||||||
RQFNW-9TPM3-JQ73T-QV4VQ-DV9PT_Volume:MAK_EnterpriseSN_2021
|
RQFNW-9TPM3-JQ73T-QV4VQ-DV9PT__Volume:MAK_EnterpriseSN_VB
|
||||||
M33WV-NHY3C-R7FPM-BQGPT-239PG_Volume:MAK_EnterpriseSN_2019
|
M33WV-NHY3C-R7FPM-BQGPT-239PG__Volume:MAK_EnterpriseSN_RS5
|
||||||
2DBW3-N2PJG-MVHW3-G7TDK-9HKR4_Volume:MAK_EnterpriseSN_2016
|
2DBW3-N2PJG-MVHW3-G7TDK-9HKR4__Volume:MAK_EnterpriseSN_RS1
|
||||||
NTX6B-BRYC2-K6786-F6MVQ-M7V2X_Volume:MAK_EnterpriseSN_2015
|
NTX6B-BRYC2-K6786-F6MVQ-M7V2X__Volume:MAK_EnterpriseSN_TH
|
||||||
G3KNM-CHG6T-R36X3-9QDG6-8M8K9_____Retail_ProfessionalSingleLanguage
|
G3KNM-CHG6T-R36X3-9QDG6-8M8K9______Retail_ProfessionalSingleLanguage
|
||||||
HNGCC-Y38KG-QVK8D-WMWRK-X86VK_____Retail_ProfessionalCountrySpecific
|
HNGCC-Y38KG-QVK8D-WMWRK-X86VK______Retail_ProfessionalCountrySpecific
|
||||||
DXG7C-N36C4-C4HTG-X4T3X-2YV77_____Retail_ProfessionalWorkstation
|
DXG7C-N36C4-C4HTG-X4T3X-2YV77______Retail_ProfessionalWorkstation
|
||||||
WYPNQ-8C467-V2W6J-TX4WX-WT2RQ_____Retail_ProfessionalWorkstationN
|
WYPNQ-8C467-V2W6J-TX4WX-WT2RQ______Retail_ProfessionalWorkstationN
|
||||||
8PTT6-RNW4C-6V7J2-C2D3X-MHBPB_____Retail_ProfessionalEducation
|
8PTT6-RNW4C-6V7J2-C2D3X-MHBPB______Retail_ProfessionalEducation
|
||||||
GJTYN-HDMQY-FRR76-HVGC7-QPF8P_____Retail_ProfessionalEducationN
|
GJTYN-HDMQY-FRR76-HVGC7-QPF8P______Retail_ProfessionalEducationN
|
||||||
C4NTJ-CX6Q2-VXDMR-XVKGM-F9DJC_Volume:MAK_EnterpriseG
|
C4NTJ-CX6Q2-VXDMR-XVKGM-F9DJC__Volume:MAK_EnterpriseG
|
||||||
46PN6-R9BK9-CVHKB-HWQ9V-MBJY8_Volume:MAK_EnterpriseGN
|
46PN6-R9BK9-CVHKB-HWQ9V-MBJY8__Volume:MAK_EnterpriseGN
|
||||||
NJCF7-PW8QT-3324D-688JX-2YV66_____Retail_ServerRdsh
|
NJCF7-PW8QT-3324D-688JX-2YV66______Retail_ServerRdsh
|
||||||
V3WVW-N2PV2-CGWC3-34QGF-VMJ2C_____Retail_Cloud
|
V3WVW-N2PV2-CGWC3-34QGF-VMJ2C______Retail_Cloud
|
||||||
NH9J3-68WK7-6FB93-4K3DF-DJ4F6_____Retail_CloudN
|
NH9J3-68WK7-6FB93-4K3DF-DJ4F6______Retail_CloudN
|
||||||
2HN6V-HGTM8-6C97C-RK67V-JQPFD_____Retail_CloudE
|
2HN6V-HGTM8-6C97C-RK67V-JQPFD______Retail_CloudE
|
||||||
XQQYW-NFFMW-XJPBH-K8732-CKFFD_____OEM:DM_IoTEnterprise
|
XQQYW-NFFMW-XJPBH-K8732-CKFFD______OEM:DM_IoTEnterprise
|
||||||
QPM6N-7J2WJ-P88HH-P3YRH-YY74H_OEM:NONSLP_IoTEnterpriseS
|
QPM6N-7J2WJ-P88HH-P3YRH-YY74H__OEM:NONSLP_IoTEnterpriseS_VB
|
||||||
K9VKN-3BGWV-Y624W-MCRMQ-BHDCD_____Retail_CloudEditionN
|
KBN8V-HFGQ4-MGXVD-347P6-PDQGT_Volume:GVLK_IoTEnterpriseS_NI
|
||||||
KY7PN-VR6RX-83W6Y-6DDYQ-T6R4W_____Retail_CloudEdition
|
K9VKN-3BGWV-Y624W-MCRMQ-BHDCD______Retail_CloudEditionN
|
||||||
|
KY7PN-VR6RX-83W6Y-6DDYQ-T6R4W______Retail_CloudEdition
|
||||||
|
MPB3G-XNBR7-CC43M-FG64B-F9GBK______Retail_IoTEnterpriseSK
|
||||||
) do (
|
) do (
|
||||||
for /f "tokens=1-4 delims=_" %%A in ("%%#") do if /i %targetedition%==%%C (
|
for /f "tokens=1-4 delims=_" %%A in ("%%#") do if /i %targetedition%==%%C (
|
||||||
|
|
||||||
@ -689,7 +986,7 @@ set 4th=%%D
|
|||||||
if not defined 4th (
|
if not defined 4th (
|
||||||
set "key=%%A" & set "_chan=%%B"
|
set "key=%%A" & set "_chan=%%B"
|
||||||
) else (
|
) else (
|
||||||
echo "%winos%" | find "%%D" 1>nul && (set "key=%%A" & set "_chan=%%B")
|
echo "%branch%" | find "%%D" 1>nul && (set "key=%%A" & set "_chan=%%B")
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -701,7 +998,6 @@ exit /b
|
|||||||
:changeeditionserverdata
|
:changeeditionserverdata
|
||||||
|
|
||||||
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*CorEdition~*.mum" (set Cor=Cor) else (set Cor=)
|
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*CorEdition~*.mum" (set Cor=Cor) else (set Cor=)
|
||||||
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v BuildBranch 2^>nul') do set "branch=%%b"
|
|
||||||
|
|
||||||
:: Only RS3 and older version keys (GVLK/Generic Retail) are stored here, later ones are extracted from the system itself
|
:: Only RS3 and older version keys (GVLK/Generic Retail) are stored here, later ones are extracted from the system itself
|
||||||
|
|
||||||
|
@ -44,8 +44,7 @@ if not %errorlevel%==0 (
|
|||||||
echo:
|
echo:
|
||||||
echo Error: This is not a correct file. It has LF line ending issue.
|
echo Error: This is not a correct file. It has LF line ending issue.
|
||||||
echo:
|
echo:
|
||||||
echo Press any key to exit...
|
ping 127.0.0.1 -n 6 > nul
|
||||||
pause >nul
|
|
||||||
popd
|
popd
|
||||||
exit /b
|
exit /b
|
||||||
)
|
)
|
||||||
|
@ -72,8 +72,7 @@ if not %errorlevel%==0 (
|
|||||||
echo:
|
echo:
|
||||||
echo Error: This is not a correct file. It has LF line ending issue.
|
echo Error: This is not a correct file. It has LF line ending issue.
|
||||||
echo:
|
echo:
|
||||||
echo Press any key to exit...
|
ping 127.0.0.1 -n 6 > nul
|
||||||
pause >nul
|
|
||||||
popd
|
popd
|
||||||
exit /b
|
exit /b
|
||||||
)
|
)
|
||||||
@ -362,7 +361,7 @@ exit /b
|
|||||||
function PrintModePerPridFromRegistry
|
function PrintModePerPridFromRegistry
|
||||||
{
|
{
|
||||||
$vNextRegkey = "HKCU:\SOFTWARE\Microsoft\Office\16.0\Common\Licensing\LicensingNext"
|
$vNextRegkey = "HKCU:\SOFTWARE\Microsoft\Office\16.0\Common\Licensing\LicensingNext"
|
||||||
$vNextPrids = Get-Item -Path $vNextRegkey -ErrorAction Ignore | Select-Object -ExpandProperty 'property' | Where-Object -FilterScript {$_ -Ne 'InstalledGraceKey' -And $_ -Ne 'MigrationToV5Done' -And $_ -Ne 'test' -And $_ -Ne 'unknown'}
|
$vNextPrids = Get-Item -Path $vNextRegkey -ErrorAction Ignore | Select-Object -ExpandProperty 'property' | Where-Object -FilterScript {$_.ToLower() -like "*retail" -or $_.ToLower() -like "*volume"}
|
||||||
If ($vNextPrids -Eq $null)
|
If ($vNextPrids -Eq $null)
|
||||||
{
|
{
|
||||||
Write-Host "No registry keys found."
|
Write-Host "No registry keys found."
|
||||||
@ -457,15 +456,20 @@ function PrintLicensesInformation
|
|||||||
$license = (Get-Content -Encoding Unicode $_.FullName | ConvertFrom-Json).License
|
$license = (Get-Content -Encoding Unicode $_.FullName | ConvertFrom-Json).License
|
||||||
$decodedLicense = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($license)) | ConvertFrom-Json
|
$decodedLicense = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($license)) | ConvertFrom-Json
|
||||||
$licenseType = $decodedLicense.LicenseType
|
$licenseType = $decodedLicense.LicenseType
|
||||||
$userId = $decodedLicense.Metadata.UserId
|
If ($null -Ne $decodedLicense.ExpiresOn)
|
||||||
$identitiesRegkey = Get-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Office\16.0\Common\Identity\Identities\${userId}*" -ErrorAction Ignore
|
{
|
||||||
|
$expiry = [DateTime]::Parse($decodedLicense.ExpiresOn, $null, 48)
|
||||||
|
}
|
||||||
|
Else
|
||||||
|
{
|
||||||
|
$expiry = New-Object DateTime
|
||||||
|
}
|
||||||
$licenseState = $null
|
$licenseState = $null
|
||||||
If ((Get-Date) -Gt (Get-Date $decodedLicense.MetaData.NotAfter))
|
If ((Get-Date) -Gt (Get-Date $decodedLicense.MetaData.NotAfter))
|
||||||
{
|
{
|
||||||
$licenseState = "RFM"
|
$licenseState = "RFM"
|
||||||
}
|
}
|
||||||
ElseIf (($decodedLicense.ExpiresOn -Eq $null) -Or
|
ElseIf ((Get-Date) -Lt (Get-Date $expiry))
|
||||||
((Get-Date) -Lt (Get-Date $decodedLicense.ExpiresOn)))
|
|
||||||
{
|
{
|
||||||
$licenseState = "Licensed"
|
$licenseState = "Licensed"
|
||||||
}
|
}
|
||||||
@ -483,11 +487,11 @@ function PrintLicensesInformation
|
|||||||
Acid = $decodedLicense.Acid;
|
Acid = $decodedLicense.Acid;
|
||||||
LicenseState = $licenseState;
|
LicenseState = $licenseState;
|
||||||
EntitlementStatus = $decodedLicense.Status;
|
EntitlementStatus = $decodedLicense.Status;
|
||||||
|
EntitlementExpiration = $decodedLicense.ExpiresOn;
|
||||||
ReasonCode = $decodedLicense.ReasonCode;
|
ReasonCode = $decodedLicense.ReasonCode;
|
||||||
NotBefore = $decodedLicense.Metadata.NotBefore;
|
NotBefore = $decodedLicense.Metadata.NotBefore;
|
||||||
NotAfter = $decodedLicense.Metadata.NotAfter;
|
NotAfter = $decodedLicense.Metadata.NotAfter;
|
||||||
NextRenewal = $decodedLicense.Metadata.RenewAfter;
|
NextRenewal = $decodedLicense.Metadata.RenewAfter;
|
||||||
Expiration = $decodedLicense.ExpiresOn;
|
|
||||||
TenantId = $decodedLicense.Metadata.TenantId;
|
TenantId = $decodedLicense.Metadata.TenantId;
|
||||||
} | ConvertTo-Json
|
} | ConvertTo-Json
|
||||||
}
|
}
|
||||||
@ -502,11 +506,11 @@ function PrintLicensesInformation
|
|||||||
DeviceId = $decodedLicense.Metadata.DeviceId;
|
DeviceId = $decodedLicense.Metadata.DeviceId;
|
||||||
LicenseState = $licenseState;
|
LicenseState = $licenseState;
|
||||||
EntitlementStatus = $decodedLicense.Status;
|
EntitlementStatus = $decodedLicense.Status;
|
||||||
|
EntitlementExpiration = $decodedLicense.ExpiresOn;
|
||||||
ReasonCode = $decodedLicense.ReasonCode;
|
ReasonCode = $decodedLicense.ReasonCode;
|
||||||
NotBefore = $decodedLicense.Metadata.NotBefore;
|
NotBefore = $decodedLicense.Metadata.NotBefore;
|
||||||
NotAfter = $decodedLicense.Metadata.NotAfter;
|
NotAfter = $decodedLicense.Metadata.NotAfter;
|
||||||
NextRenewal = $decodedLicense.Metadata.RenewAfter;
|
NextRenewal = $decodedLicense.Metadata.RenewAfter;
|
||||||
Expiration = $decodedLicense.ExpiresOn;
|
|
||||||
TenantId = $decodedLicense.Metadata.TenantId;
|
TenantId = $decodedLicense.Metadata.TenantId;
|
||||||
} | ConvertTo-Json
|
} | ConvertTo-Json
|
||||||
}
|
}
|
||||||
|
@ -55,8 +55,7 @@ if not %errorlevel%==0 (
|
|||||||
echo:
|
echo:
|
||||||
echo Error: This is not a correct file. It has LF line ending issue.
|
echo Error: This is not a correct file. It has LF line ending issue.
|
||||||
echo:
|
echo:
|
||||||
echo Press any key to exit...
|
ping 127.0.0.1 -n 6 > nul
|
||||||
pause >nul
|
|
||||||
popd
|
popd
|
||||||
exit /b
|
exit /b
|
||||||
)
|
)
|
||||||
@ -114,22 +113,12 @@ goto done2
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:: Check desktop location
|
:: Fix for the special characters limitation in path name
|
||||||
|
|
||||||
set desktop=
|
set desktop=
|
||||||
for /f "skip=2 tokens=2*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop') do call set "desktop=%%b"
|
for /f "skip=2 tokens=2*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop') do call set "desktop=%%b"
|
||||||
if not defined desktop for /f "delims=" %%a in ('%psc% "& {write-host $([Environment]::GetFolderPath('Desktop'))}"') do call set "desktop=%%a"
|
if not defined desktop for /f "delims=" %%a in ('%psc% "& {write-host $([Environment]::GetFolderPath('Desktop'))}"') do call set "desktop=%%a"
|
||||||
|
|
||||||
if not defined desktop (
|
|
||||||
%eline%
|
|
||||||
echo Desktop location was not detected, aborting...
|
|
||||||
goto done2
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Fix for the special characters limitation in path name
|
|
||||||
|
|
||||||
set "_work=%~dp0"
|
set "_work=%~dp0"
|
||||||
if "%_work:~-1%"=="\" set "_work=%_work:~0,-1%"
|
if "%_work:~-1%"=="\" set "_work=%_work:~0,-1%"
|
||||||
|
|
||||||
@ -137,6 +126,7 @@ set "_batf=%~f0"
|
|||||||
set "_batp=%_batf:'=''%"
|
set "_batp=%_batf:'=''%"
|
||||||
set "_pdesk=%desktop:'=''%"
|
set "_pdesk=%desktop:'=''%"
|
||||||
|
|
||||||
|
set _PSarg="""%~f0""" -el %_args%
|
||||||
set "_ttemp=%temp%"
|
set "_ttemp=%temp%"
|
||||||
|
|
||||||
set "_dir=%desktop%\$OEM$\$$\Setup\Scripts"
|
set "_dir=%desktop%\$OEM$\$$\Setup\Scripts"
|
||||||
@ -145,14 +135,6 @@ setlocal EnableDelayedExpansion
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
if not exist "!desktop!\" (
|
|
||||||
%eline%
|
|
||||||
echo Desktop location was not detected, aborting...
|
|
||||||
goto done2
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
echo "!_batf!" | find /i "!_ttemp!" 1>nul && (
|
echo "!_batf!" | find /i "!_ttemp!" 1>nul && (
|
||||||
if /i not "!_work!"=="!_ttemp!" (
|
if /i not "!_work!"=="!_ttemp!" (
|
||||||
%eline%
|
%eline%
|
||||||
@ -166,6 +148,26 @@ goto done2
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
:: Elevate script as admin and pass arguments and preventing loop
|
||||||
|
|
||||||
|
>nul fltmc || (
|
||||||
|
if not defined _elev %nul% %psc% "start cmd.exe -arg '/c \"!_PSarg:'=''!\"' -verb runas" && exit /b
|
||||||
|
%eline%
|
||||||
|
echo This script require administrator privileges.
|
||||||
|
echo To do so, right click on this script and select 'Run as administrator'.
|
||||||
|
goto done2
|
||||||
|
)
|
||||||
|
|
||||||
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
if not exist "!desktop!\" (
|
||||||
|
%eline%
|
||||||
|
echo Desktop location was not detected, aborting...
|
||||||
|
goto done2
|
||||||
|
)
|
||||||
|
|
||||||
|
::========================================================================================================================================
|
||||||
|
|
||||||
mode 66, 26
|
mode 66, 26
|
||||||
|
|
||||||
if exist "!desktop!\$OEM$\" (
|
if exist "!desktop!\$OEM$\" (
|
||||||
@ -178,8 +180,6 @@ goto done2
|
|||||||
|
|
||||||
set HWID_Activation.cmd=HWID-KMS38_Activation\HWID_Activation.cmd
|
set HWID_Activation.cmd=HWID-KMS38_Activation\HWID_Activation.cmd
|
||||||
set KMS38_Activation.cmd=HWID-KMS38_Activation\KMS38_Activation.cmd
|
set KMS38_Activation.cmd=HWID-KMS38_Activation\KMS38_Activation.cmd
|
||||||
set ClipUp.exe=HWID-KMS38_Activation\BIN\ClipUp.exe
|
|
||||||
set gatherosstate.exe=HWID-KMS38_Activation\BIN\gatherosstate.exe
|
|
||||||
|
|
||||||
set Activate.cmd=Online_KMS_Activation\Activate.cmd
|
set Activate.cmd=Online_KMS_Activation\Activate.cmd
|
||||||
set cleanosppx64.exe=Online_KMS_Activation\BIN\cleanosppx64.exe
|
set cleanosppx64.exe=Online_KMS_Activation\BIN\cleanosppx64.exe
|
||||||
@ -191,8 +191,6 @@ set _nofile=
|
|||||||
for %%# in (
|
for %%# in (
|
||||||
%HWID_Activation.cmd%
|
%HWID_Activation.cmd%
|
||||||
%KMS38_Activation.cmd%
|
%KMS38_Activation.cmd%
|
||||||
%ClipUp.exe%
|
|
||||||
%gatherosstate.exe%
|
|
||||||
%Activate.cmd%
|
%Activate.cmd%
|
||||||
%cleanosppx64.exe%
|
%cleanosppx64.exe%
|
||||||
%cleanosppx86.exe%
|
%cleanosppx86.exe%
|
||||||
@ -229,11 +227,11 @@ echo:
|
|||||||
echo: [4] HWID ^(Windows^) ^+ Online KMS ^(Office^)
|
echo: [4] HWID ^(Windows^) ^+ Online KMS ^(Office^)
|
||||||
echo: [5] KMS38 ^(Windows^) ^+ Online KMS ^(Office^)
|
echo: [5] KMS38 ^(Windows^) ^+ Online KMS ^(Office^)
|
||||||
echo:
|
echo:
|
||||||
echo: [6] Exit
|
echo: [0] Exit
|
||||||
echo: ________________________________________________________
|
echo: ________________________________________________________
|
||||||
echo:
|
echo:
|
||||||
call :ex_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard [1,2,3,4,5,6]"
|
call :ex_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard [1,2,3,4,5,0]"
|
||||||
choice /C:123456 /N
|
choice /C:123450 /N
|
||||||
set _erl=%errorlevel%
|
set _erl=%errorlevel%
|
||||||
|
|
||||||
if %_erl%==6 exit /b
|
if %_erl%==6 exit /b
|
||||||
@ -249,14 +247,18 @@ goto :Menu
|
|||||||
:hwid
|
:hwid
|
||||||
|
|
||||||
cls
|
cls
|
||||||
call :prep
|
md "!desktop!\$OEM$\$$\Setup\Scripts"
|
||||||
call :hwidprep
|
pushd "!_work!"
|
||||||
call :pop_d
|
copy /y /b "%HWID_Activation.cmd%" "!_dir!\HWID_Activation.cmd" %nul%
|
||||||
|
popd
|
||||||
call :export hwid_setup
|
call :export hwid_setup
|
||||||
call :hwidprep2
|
|
||||||
|
|
||||||
|
set _error=
|
||||||
|
if not exist "!_dir!\HWID_Activation.cmd" set _error=1
|
||||||
|
if not exist "!_dir!\SetupComplete.cmd" set _error=1
|
||||||
if defined _error goto errorfound
|
if defined _error goto errorfound
|
||||||
set "_oem=HWID"
|
|
||||||
|
set oem=HWID
|
||||||
goto done
|
goto done
|
||||||
|
|
||||||
:hwid_setup:
|
:hwid_setup:
|
||||||
@ -264,7 +266,7 @@ goto done
|
|||||||
|
|
||||||
fltmc >nul || exit /b
|
fltmc >nul || exit /b
|
||||||
|
|
||||||
start /b /wait cmd /c "%~dp0HWID_Activation.cmd" /a
|
start /b /wait cmd /c "%~dp0HWID_Activation.cmd" /HWID
|
||||||
|
|
||||||
cd \
|
cd \
|
||||||
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
||||||
@ -275,14 +277,18 @@ cd \
|
|||||||
:kms38
|
:kms38
|
||||||
|
|
||||||
cls
|
cls
|
||||||
call :prep
|
md "!desktop!\$OEM$\$$\Setup\Scripts"
|
||||||
call :kms38prep
|
pushd "!_work!"
|
||||||
call :pop_d
|
copy /y /b "%KMS38_Activation.cmd%" "!_dir!\KMS38_Activation.cmd" %nul%
|
||||||
|
popd
|
||||||
call :export kms38_setup
|
call :export kms38_setup
|
||||||
call :kms38prep2
|
|
||||||
|
|
||||||
|
set _error=
|
||||||
|
if not exist "!_dir!\KMS38_Activation.cmd" set _error=1
|
||||||
|
if not exist "!_dir!\SetupComplete.cmd" set _error=1
|
||||||
if defined _error goto errorfound
|
if defined _error goto errorfound
|
||||||
set "_oem=KMS38"
|
|
||||||
|
set oem=KMS38
|
||||||
goto done
|
goto done
|
||||||
|
|
||||||
:kms38_setup:
|
:kms38_setup:
|
||||||
@ -290,7 +296,7 @@ goto done
|
|||||||
|
|
||||||
fltmc >nul || exit /b
|
fltmc >nul || exit /b
|
||||||
|
|
||||||
start /b /wait cmd /c "%~dp0KMS38_Activation.cmd" /a
|
start /b /wait cmd /c "%~dp0KMS38_Activation.cmd" /KMS38
|
||||||
|
|
||||||
cd \
|
cd \
|
||||||
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
||||||
@ -301,14 +307,22 @@ cd \
|
|||||||
:kms
|
:kms
|
||||||
|
|
||||||
cls
|
cls
|
||||||
call :prep
|
md "!desktop!\$OEM$\$$\Setup\Scripts\BIN"
|
||||||
call :kmsprep
|
pushd "!_work!"
|
||||||
call :pop_d
|
copy /y /b "%Activate.cmd%" "!_dir!\Activate.cmd" %nul%
|
||||||
|
copy /y /b "%cleanosppx64.exe%" "!_dir!\BIN\cleanosppx64.exe" %nul%
|
||||||
|
copy /y /b "%cleanosppx86.exe%" "!_dir!\BIN\cleanosppx86.exe" %nul%
|
||||||
|
popd
|
||||||
call :export kms_setup
|
call :export kms_setup
|
||||||
call :kmsprep2
|
|
||||||
|
|
||||||
if defined _kerror goto errorfound
|
set _error=
|
||||||
set "_oem=Online KMS"
|
if not exist "!_dir!\Activate.cmd" set _error=1
|
||||||
|
if not exist "!_dir!\SetupComplete.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 defined _error goto errorfound
|
||||||
|
|
||||||
|
set oem=Online KMS
|
||||||
goto done
|
goto done
|
||||||
|
|
||||||
:kms_setup:
|
:kms_setup:
|
||||||
@ -316,8 +330,7 @@ goto done
|
|||||||
|
|
||||||
fltmc >nul || exit /b
|
fltmc >nul || exit /b
|
||||||
|
|
||||||
start /b /wait cmd /c "%~dp0Activate.cmd" /rat
|
start /b /wait cmd /c "%~dp0Activate.cmd" /KMS-ActAndRenewalTask /KMS-WindowsOffice
|
||||||
start /b /wait cmd /c "%~dp0Activate.cmd" /wo
|
|
||||||
|
|
||||||
cd \
|
cd \
|
||||||
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
||||||
@ -328,17 +341,24 @@ cd \
|
|||||||
:hwid_kms
|
:hwid_kms
|
||||||
|
|
||||||
cls
|
cls
|
||||||
call :prep
|
md "!desktop!\$OEM$\$$\Setup\Scripts\BIN"
|
||||||
call :hwidprep
|
pushd "!_work!"
|
||||||
call :kmsprep
|
copy /y /b "%HWID_Activation.cmd%" "!_dir!\HWID_Activation.cmd" %nul%
|
||||||
call :pop_d
|
copy /y /b "%Activate.cmd%" "!_dir!\Activate.cmd" %nul%
|
||||||
|
copy /y /b "%cleanosppx64.exe%" "!_dir!\BIN\cleanosppx64.exe" %nul%
|
||||||
|
copy /y /b "%cleanosppx86.exe%" "!_dir!\BIN\cleanosppx86.exe" %nul%
|
||||||
|
popd
|
||||||
call :export hwid_kms_setup
|
call :export hwid_kms_setup
|
||||||
call :hwidprep2
|
|
||||||
call :kmsprep2
|
|
||||||
|
|
||||||
|
set _error=
|
||||||
|
if not exist "!_dir!\HWID_Activation.cmd" set _error=1
|
||||||
|
if not exist "!_dir!\Activate.cmd" set _error=1
|
||||||
|
if not exist "!_dir!\SetupComplete.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 defined _error goto errorfound
|
if defined _error goto errorfound
|
||||||
if defined _kerror goto errorfound
|
|
||||||
set "_oem=HWID [Windows] + Online KMS [Office]"
|
set oem=HWID [Windows] + Online KMS [Office]
|
||||||
goto done
|
goto done
|
||||||
|
|
||||||
:hwid_kms_setup:
|
:hwid_kms_setup:
|
||||||
@ -346,10 +366,9 @@ goto done
|
|||||||
|
|
||||||
fltmc >nul || exit /b
|
fltmc >nul || exit /b
|
||||||
|
|
||||||
start /b /wait cmd /c "%~dp0HWID_Activation.cmd" /a
|
start /b /wait cmd /c "%~dp0HWID_Activation.cmd" /HWID
|
||||||
|
|
||||||
start /b /wait cmd /c "%~dp0Activate.cmd" /rat
|
start /b /wait cmd /c "%~dp0Activate.cmd" /KMS-ActAndRenewalTask /KMS-Office
|
||||||
start /b /wait cmd /c "%~dp0Activate.cmd" /o
|
|
||||||
|
|
||||||
cd \
|
cd \
|
||||||
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
||||||
@ -360,17 +379,24 @@ cd \
|
|||||||
:kms38_kms
|
:kms38_kms
|
||||||
|
|
||||||
cls
|
cls
|
||||||
call :prep
|
md "!desktop!\$OEM$\$$\Setup\Scripts\BIN"
|
||||||
call :kms38prep
|
pushd "!_work!"
|
||||||
call :kmsprep
|
copy /y /b "%KMS38_Activation.cmd%" "!_dir!\KMS38_Activation.cmd" %nul%
|
||||||
call :pop_d
|
copy /y /b "%Activate.cmd%" "!_dir!\Activate.cmd" %nul%
|
||||||
|
copy /y /b "%cleanosppx64.exe%" "!_dir!\BIN\cleanosppx64.exe" %nul%
|
||||||
|
copy /y /b "%cleanosppx86.exe%" "!_dir!\BIN\cleanosppx86.exe" %nul%
|
||||||
|
popd
|
||||||
call :export kms38_kms_setup
|
call :export kms38_kms_setup
|
||||||
call :kms38prep2
|
|
||||||
call :kmsprep2
|
|
||||||
|
|
||||||
|
set _error=
|
||||||
|
if not exist "!_dir!\KMS38_Activation.cmd" set _error=1
|
||||||
|
if not exist "!_dir!\Activate.cmd" set _error=1
|
||||||
|
if not exist "!_dir!\SetupComplete.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 defined _error goto errorfound
|
if defined _error goto errorfound
|
||||||
if defined _kerror goto errorfound
|
|
||||||
set "_oem=KMS38 [Windows] + Online KMS [Office]"
|
set oem=KMS38 [Windows] + Online KMS [Office]
|
||||||
goto done
|
goto done
|
||||||
|
|
||||||
:kms38_kms_setup:
|
:kms38_kms_setup:
|
||||||
@ -378,10 +404,9 @@ goto done
|
|||||||
|
|
||||||
fltmc >nul || exit /b
|
fltmc >nul || exit /b
|
||||||
|
|
||||||
start /b /wait cmd /c "%~dp0KMS38_Activation.cmd" /a
|
start /b /wait cmd /c "%~dp0KMS38_Activation.cmd" /KMS38
|
||||||
|
|
||||||
start /b /wait cmd /c "%~dp0Activate.cmd" /rat
|
start /b /wait cmd /c "%~dp0Activate.cmd" /KMS-ActAndRenewalTask /KMS-Office
|
||||||
start /b /wait cmd /c "%~dp0Activate.cmd" /o
|
|
||||||
|
|
||||||
cd \
|
cd \
|
||||||
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
||||||
@ -397,11 +422,16 @@ goto :done2
|
|||||||
|
|
||||||
:done
|
:done
|
||||||
|
|
||||||
echo _______________________________________________________
|
echo ______________________________________________________________
|
||||||
echo:
|
echo:
|
||||||
call :ex_color %Magenta% "%_oem%"
|
call :ex_color %Magenta% "%oem%"
|
||||||
call :ex_color %Green% "$OEM$ folder is successfully created on the Desktop."
|
call :ex_color %Green% "$OEM$ folder is successfully created on the Desktop."
|
||||||
echo _______________________________________________________
|
echo "%oem%" | find /i "38" %nul% && (
|
||||||
|
echo:
|
||||||
|
echo To KMS38 activate Server Cor/Acor editions ^(No GUI Versions^),
|
||||||
|
echo Check this page https://massgrave.dev/oem-folder
|
||||||
|
)
|
||||||
|
echo ______________________________________________________________
|
||||||
|
|
||||||
:done2
|
:done2
|
||||||
|
|
||||||
@ -412,88 +442,6 @@ exit /b
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:prep
|
|
||||||
|
|
||||||
pushd "!desktop!"
|
|
||||||
md "!desktop!\$OEM$\$$\Setup\Scripts\BIN"
|
|
||||||
pushd "!_work!"
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
:hwidprep
|
|
||||||
|
|
||||||
copy /y /b "%HWID_Activation.cmd%" "!_dir!\HWID_Activation.cmd" %nul%
|
|
||||||
copy /y /b "%gatherosstate.exe%" "!_dir!\BIN\gatherosstate.exe" %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%
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
:kmsprep
|
|
||||||
|
|
||||||
copy /y /b "%Activate.cmd%" "!_dir!\Activate.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
|
|
||||||
|
|
||||||
set _error=
|
|
||||||
pushd "!_dir!\"
|
|
||||||
|
|
||||||
for %%# in (
|
|
||||||
HWID_Activation.cmd
|
|
||||||
BIN\gatherosstate.exe
|
|
||||||
SetupComplete.cmd
|
|
||||||
) do (
|
|
||||||
if not exist "%%#" set _error=1
|
|
||||||
)
|
|
||||||
popd
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
:kms38prep2
|
|
||||||
|
|
||||||
set _error=
|
|
||||||
pushd "!_dir!\"
|
|
||||||
|
|
||||||
for %%# in (
|
|
||||||
KMS38_Activation.cmd
|
|
||||||
BIN\ClipUp.exe
|
|
||||||
BIN\gatherosstate.exe
|
|
||||||
SetupComplete.cmd
|
|
||||||
) do (
|
|
||||||
if not exist "%%#" set _error=1
|
|
||||||
)
|
|
||||||
popd
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
:kmsprep2
|
|
||||||
|
|
||||||
set _kerror=
|
|
||||||
pushd "!_dir!\"
|
|
||||||
|
|
||||||
for %%# in (
|
|
||||||
Activate.cmd
|
|
||||||
BIN\cleanosppx64.exe
|
|
||||||
BIN\cleanosppx86.exe
|
|
||||||
SetupComplete.cmd
|
|
||||||
) do (
|
|
||||||
if not exist "%%#" set _kerror=1
|
|
||||||
)
|
|
||||||
popd
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
:pop_d
|
|
||||||
|
|
||||||
popd
|
|
||||||
popd
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Extract the text from batch script without character and file encoding issue
|
:: Extract the text from batch script without character and file encoding issue
|
||||||
|
|
||||||
:export
|
:export
|
||||||
|
Binary file not shown.
@ -1,22 +0,0 @@
|
|||||||
=================================================================================
|
|
||||||
File Details:
|
|
||||||
=================================================================================
|
|
||||||
|
|
||||||
- ClipUp.exe (x64)
|
|
||||||
SHA-1: 48D928B1BEC25A56FE896C430C2C034B7866AA7A
|
|
||||||
|
|
||||||
Taken from Windows server 2016 x64 ISO
|
|
||||||
https://www.microsoft.com/en-us/evalcenter/
|
|
||||||
|
|
||||||
- gatherosstate.exe (x86)
|
|
||||||
SHA-1: FABB5A0FC1E6A372219711152291339AF36ED0B5
|
|
||||||
|
|
||||||
Taken from Windows 10 Version 1607 ADK (Section: User State Migration Tool)
|
|
||||||
https://go.microsoft.com/fwlink/p/?LinkId=526740
|
|
||||||
|
|
||||||
_________________________________________________________________________________
|
|
||||||
|
|
||||||
- All files are original Microsoft's files.
|
|
||||||
- ClipUp.exe is required for KMS38 activation of Server Cor/Acor editions.
|
|
||||||
|
|
||||||
=================================================================================
|
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
:: For unattended mode, run the script with /u parameter.
|
:: For unattended mode, run the script with "/Insert-HWID-Key" parameter
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -58,8 +58,7 @@ if not %errorlevel%==0 (
|
|||||||
echo:
|
echo:
|
||||||
echo Error: This is not a correct file. It has LF line ending issue.
|
echo Error: This is not a correct file. It has LF line ending issue.
|
||||||
echo:
|
echo:
|
||||||
echo Press any key to exit...
|
ping 127.0.0.1 -n 6 > nul
|
||||||
pause >nul
|
|
||||||
popd
|
popd
|
||||||
exit /b
|
exit /b
|
||||||
)
|
)
|
||||||
@ -69,7 +68,7 @@ popd
|
|||||||
|
|
||||||
cls
|
cls
|
||||||
color 07
|
color 07
|
||||||
title Install Windows Retail/OEM/MAK Key
|
title Install Windows HWID Key
|
||||||
|
|
||||||
set _args=
|
set _args=
|
||||||
set _elev=
|
set _elev=
|
||||||
@ -80,7 +79,7 @@ if defined _args set _args=%_args:"=%
|
|||||||
if defined _args (
|
if defined _args (
|
||||||
for %%A in (%_args%) do (
|
for %%A in (%_args%) do (
|
||||||
if /i "%%A"=="-el" set _elev=1
|
if /i "%%A"=="-el" set _elev=1
|
||||||
if /i "%%A"=="/u" set _unattended=1
|
if /i "%%A"=="/Insert-HWID-Key" set _unattended=1
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -111,6 +110,7 @@ set "_Yellow="Black" "Yellow""
|
|||||||
set "nceline=echo: &echo ==== ERROR ==== &echo:"
|
set "nceline=echo: &echo ==== ERROR ==== &echo:"
|
||||||
set "eline=echo: &call :dk_color %Red% "==== ERROR ====" &echo:"
|
set "eline=echo: &call :dk_color %Red% "==== ERROR ====" &echo:"
|
||||||
set "line=echo ___________________________________________________________________________________________"
|
set "line=echo ___________________________________________________________________________________________"
|
||||||
|
if %~z0 GEQ 200000 (set "_exitmsg=Go back") else (set "_exitmsg=Exit")
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
@ -121,6 +121,12 @@ echo Project is supported for Windows 10/11.
|
|||||||
goto ins_done
|
goto ins_done
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" (
|
||||||
|
%eline%
|
||||||
|
echo HWID Activation is not supported for Windows Server.
|
||||||
|
goto ins_done
|
||||||
|
)
|
||||||
|
|
||||||
for %%# in (powershell.exe) do @if "%%~$PATH:#"=="" (
|
for %%# in (powershell.exe) do @if "%%~$PATH:#"=="" (
|
||||||
%nceline%
|
%nceline%
|
||||||
echo Unable to find powershell.exe in the system.
|
echo Unable to find powershell.exe in the system.
|
||||||
@ -160,7 +166,7 @@ goto ins_done
|
|||||||
|
|
||||||
:: Elevate script as admin and pass arguments and preventing loop
|
:: Elevate script as admin and pass arguments and preventing loop
|
||||||
|
|
||||||
%nul% reg query HKU\S-1-5-19 || (
|
>nul fltmc || (
|
||||||
if not defined _elev %nul% %psc% "start cmd.exe -arg '/c \"!_PSarg:'=''!\"' -verb runas" && exit /b
|
if not defined _elev %nul% %psc% "start cmd.exe -arg '/c \"!_PSarg:'=''!\"' -verb runas" && exit /b
|
||||||
%eline%
|
%eline%
|
||||||
echo This script require administrator privileges.
|
echo This script require administrator privileges.
|
||||||
@ -172,13 +178,11 @@ goto ins_done
|
|||||||
|
|
||||||
cls
|
cls
|
||||||
mode 98, 30
|
mode 98, 30
|
||||||
|
echo:
|
||||||
call :dk_initial
|
echo Initializing...
|
||||||
|
|
||||||
:: Check product name
|
|
||||||
|
|
||||||
cls
|
|
||||||
call :dk_product
|
call :dk_product
|
||||||
|
call :dk_ckeckwmic
|
||||||
|
call :dk_actids
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
@ -206,34 +210,23 @@ goto ins_done
|
|||||||
:: Detect key
|
:: Detect key
|
||||||
|
|
||||||
set key=
|
set key=
|
||||||
set pkey=
|
set channel=
|
||||||
set _chan=
|
set actidnotfound=
|
||||||
|
|
||||||
if defined applist call :hwiddata attempt1
|
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v BuildBranch 2^>nul') do set "branch=%%b"
|
||||||
if not defined key call :hwiddata attempt2
|
|
||||||
|
|
||||||
set pkey=
|
if defined applist call :hwidkey key attempt1
|
||||||
if not defined key call :dk_hwidkey %nul%
|
if not defined key call :hwidkey key attempt2
|
||||||
|
|
||||||
if not defined key (
|
if not defined key (
|
||||||
%eline%
|
%eline%
|
||||||
%psc% $ExecutionContext.SessionState.LanguageMode 2>nul | find /i "Full" 1>nul || (
|
echo [%winos% ^| %winbuild% ^| SKU:%osSKU%]
|
||||||
echo PowerShell is not responding properly.
|
echo Unable to find this product in the HWID supported product list.
|
||||||
echo:
|
echo Make sure you are using updated version of the script.
|
||||||
)
|
echo https://massgrave.dev
|
||||||
echo Unable to find HWID key for [%winos% ^| SKU:%osSKU% ^| %winbuild%]
|
|
||||||
echo Make sure you are using updated version of the script
|
|
||||||
echo:
|
|
||||||
if not "%regSKU%"=="%wmiSKU%" (
|
|
||||||
echo Difference Found In SKU Value- WMI:%wmiSKU% Reg:%regSKU%
|
|
||||||
echo Restart the system and try again.
|
|
||||||
)
|
|
||||||
goto ins_done
|
goto ins_done
|
||||||
)
|
)
|
||||||
|
|
||||||
if defined key call :dk_pkeychannel %key%
|
|
||||||
if defined pkeychannel set _chan=%pkeychannel% Key
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
if %_unattended%==1 goto insertkey
|
if %_unattended%==1 goto insertkey
|
||||||
@ -241,7 +234,7 @@ if %_unattended%==1 goto insertkey
|
|||||||
cls
|
cls
|
||||||
%line%
|
%line%
|
||||||
echo:
|
echo:
|
||||||
echo Install [%winos% ^| SKU:%osSKU% ^| %winbuild%] %_chan%
|
echo Install [%winos% ^| SKU:%osSKU% ^| %winbuild%] %channel% Key
|
||||||
echo [%key%]
|
echo [%key%]
|
||||||
%line%
|
%line%
|
||||||
echo:
|
echo:
|
||||||
@ -250,10 +243,9 @@ echo Note: Difference Found In SKU Value- WMI:%wmiSKU% Reg:%regSKU%
|
|||||||
echo Restart the system to resolve it
|
echo Restart the system to resolve it
|
||||||
echo:
|
echo:
|
||||||
)
|
)
|
||||||
call :dk_color %_Green% "Press [1] to Continue or [2] to Exit"
|
call :dk_color %_Green% "Press [1] to Continue or [0] to %_exitmsg%"
|
||||||
choice /C:21 /N
|
choice /C:01 /N
|
||||||
if %errorlevel%==1 exit /b
|
if %errorlevel%==1 exit /b
|
||||||
cls
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
@ -270,20 +262,17 @@ set error_code=%errorlevel%
|
|||||||
cmd /c exit /b %error_code%
|
cmd /c exit /b %error_code%
|
||||||
if %error_code% NEQ 0 set "error_code=[0x%=ExitCode%]"
|
if %error_code% NEQ 0 set "error_code=[0x%=ExitCode%]"
|
||||||
|
|
||||||
|
echo:
|
||||||
|
echo [%winos% ^| SKU:%osSKU% ^| %winbuild%]
|
||||||
|
echo Installing %channel% [%key%]
|
||||||
|
echo:
|
||||||
|
|
||||||
if %error_code% EQU 0 (
|
if %error_code% EQU 0 (
|
||||||
call :dk_refresh
|
call :dk_refresh
|
||||||
echo:
|
|
||||||
echo [%winos% ^| SKU:%osSKU% ^| %winbuild%]
|
|
||||||
echo Installing %_chan% [%key%]
|
|
||||||
echo:
|
|
||||||
call :dk_color %Green% "[Successful]"
|
call :dk_color %Green% "[Successful]"
|
||||||
) else (
|
) else (
|
||||||
%eline%
|
|
||||||
echo [%winos% ^| SKU:%osSKU% ^| %winbuild%]
|
|
||||||
echo Installing %_chan% [%key%]
|
|
||||||
echo:
|
|
||||||
call :dk_color %Red% "[Unsuccessful] %error_code%"
|
call :dk_color %Red% "[Unsuccessful] %error_code%"
|
||||||
if not defined applist echo Not Respoding: %e_wmispp%
|
if defined actidnotfound call :dk_color %Red% "Activation ID not found for this key."
|
||||||
)
|
)
|
||||||
%line%
|
%line%
|
||||||
|
|
||||||
@ -293,7 +282,7 @@ if not defined applist echo Not Respoding: %e_wmispp%
|
|||||||
|
|
||||||
echo:
|
echo:
|
||||||
if %_unattended%==1 timeout /t 2 & exit /b
|
if %_unattended%==1 timeout /t 2 & exit /b
|
||||||
call :dk_color %_Yellow% "Press any key to exit..."
|
call :dk_color %_Yellow% "Press any key to %_exitmsg%..."
|
||||||
pause >nul
|
pause >nul
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
@ -343,93 +332,6 @@ wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i "com
|
|||||||
)
|
)
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
:dk_initial
|
|
||||||
|
|
||||||
echo:
|
|
||||||
echo Initializing...
|
|
||||||
|
|
||||||
:: Check and enable WinMgmt, sppsvc services if required
|
|
||||||
|
|
||||||
for %%# in (WinMgmt sppsvc) do (
|
|
||||||
for /f "skip=2 tokens=2*" %%a in ('reg query HKLM\SYSTEM\CurrentControlSet\Services\%%# /v Start 2^>nul') do if /i %%b NEQ 0x2 (
|
|
||||||
echo:
|
|
||||||
echo Enabling %%# service...
|
|
||||||
if /i %%#==sppsvc sc config %%# start= delayed-auto %nul% || echo Failed
|
|
||||||
if /i %%#==WinMgmt sc config %%# start= auto %nul% || echo Failed
|
|
||||||
)
|
|
||||||
sc start %%# %nul%
|
|
||||||
if !errorlevel! NEQ 1056 if !errorlevel! NEQ 0 (
|
|
||||||
echo:
|
|
||||||
echo Starting %%# service...
|
|
||||||
sc start %%#
|
|
||||||
echo:
|
|
||||||
call :dk_color %Red% "Failed to start [%%#] service, rest of the process may take a long time..."
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
:: Check WMI and SPP Errors
|
|
||||||
|
|
||||||
call :dk_ckeckwmic
|
|
||||||
|
|
||||||
set e_wmi=
|
|
||||||
set e_wmispp=
|
|
||||||
call :dk_actids
|
|
||||||
|
|
||||||
if not defined applist (
|
|
||||||
net stop sppsvc /y %nul%
|
|
||||||
cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul%
|
|
||||||
if !errorlevel! NEQ 0 cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul%
|
|
||||||
call :dk_refresh
|
|
||||||
|
|
||||||
if %_wmic% EQU 1 wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i "computersystem" 1>nul
|
|
||||||
if %_wmic% EQU 0 %psc% "Get-CIMInstance -Class Win32_ComputerSystem | Select-Object -Property CreationClassName" 2>nul | find /i "computersystem" 1>nul
|
|
||||||
if !errorlevel! NEQ 0 set e_wmi=1
|
|
||||||
|
|
||||||
if defined e_wmi (set e_wmispp=WMI, SPP) else (set e_wmispp=SPP)
|
|
||||||
call :dk_actids
|
|
||||||
)
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Get Product Key from pkeyhelper.dll for future new editions
|
|
||||||
:: It works on Windows 10 1803 (17134) and later builds. (Partially on 1803 & 1809, fully on 1903 and later)
|
|
||||||
|
|
||||||
:dk_pkey
|
|
||||||
|
|
||||||
set pkey=
|
|
||||||
set d1=[DllImport(\"pkeyhelper.dll\",CharSet=CharSet.Unicode)]public static extern int SkuGetProductKeyForEdition(int e, string c, out string k, out string p);
|
|
||||||
set d2=$AP=Add-Type -Member '%d1%' -Name D1 -PassThru; $k=''; $null=$AP::SkuGetProductKeyForEdition(%1, %2, [ref]$k, [ref]$null); $k
|
|
||||||
for /f %%a in ('%psc% "%d2%"') do if not errorlevel 1 (set pkey=%%a)
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
:: Get channel name for the key which was extracted from pkeyhelper.dll
|
|
||||||
|
|
||||||
:dk_pkeychannel
|
|
||||||
|
|
||||||
set k=%1
|
|
||||||
set pkeychannel=
|
|
||||||
set p=%SystemRoot%\System32\spp\tokens\pkeyconfig\pkeyconfig.xrm-ms
|
|
||||||
set m=[System.Runtime.InteropServices.Marshal]
|
|
||||||
set d1=[DllImport(\"PidGenX.dll\",CharSet=CharSet.Unicode)]public static extern int PidGenX(string k,string p,string m,int u,IntPtr i,IntPtr d,IntPtr f);
|
|
||||||
set d2=$AP=Add-Type -Member '%d1%' -Name D1 -PassThru; $k='%k%'; $p='%p%'; $r=[byte[]]::new(0x04F8); $r[0]=0xF8; $r[1]=0x04; $f=%m%::AllocHGlobal(1272); %m%::Copy($r,0,$f,1272);
|
|
||||||
set d3=%d2% [void]$AP::PidGenX($k,$p,\"00000\",0,0,0,$f); %m%::Copy($f,$r,0,1272); %m%::FreeHGlobal($f); [System.Text.Encoding]::Unicode.GetString($r, 1016, 128).Replace('0','')
|
|
||||||
for /f %%a in ('%psc% "%d3%"') do if not errorlevel 1 (set pkeychannel=%%a)
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
:dk_hwidkey
|
|
||||||
|
|
||||||
for %%# in (pkeyhelper.dll) do @if "%%~$PATH:#"=="" exit /b
|
|
||||||
for %%# in (Retail OEM:NONSLP OEM:DM Volume:MAK) do (
|
|
||||||
call :dk_pkey %osSKU% '%%#'
|
|
||||||
if defined pkey call :dk_pkeychannel !pkey!
|
|
||||||
if /i [!pkeychannel!]==[%%#] (
|
|
||||||
set key=!pkey!
|
|
||||||
exit /b
|
|
||||||
)
|
|
||||||
)
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:dk_color
|
:dk_color
|
||||||
@ -446,76 +348,77 @@ exit /b
|
|||||||
:: 1st column = Activation ID
|
:: 1st column = Activation ID
|
||||||
:: 2nd column = Generic Retail/OEM/MAK Key
|
:: 2nd column = Generic Retail/OEM/MAK Key
|
||||||
:: 3rd column = SKU ID
|
:: 3rd column = SKU ID
|
||||||
:: 4th column = 1 = activation is not working (at the time of writing this), 0 = activation is working
|
:: 4th column = Key Type
|
||||||
:: 5th column = Key Type
|
:: 5th column = WMI Edition ID
|
||||||
:: 6th column = WMI Edition ID
|
:: 6th column = Version name incase same Edition ID is used in different OS versions with different key
|
||||||
:: 7th column = Version name incase same Edition ID is used in different OS versions with different key
|
|
||||||
:: Separator = _
|
:: Separator = _
|
||||||
|
|
||||||
:: Key preference is in the following order. Retail > OEM:NONSLP > OEM:DM > Volume:MAK
|
|
||||||
|
|
||||||
|
:hwidkey
|
||||||
:hwiddata
|
|
||||||
|
|
||||||
for %%# in (
|
for %%# in (
|
||||||
8b351c9c-f398-4515-9900-09df49427262_XGVPP-NMH47-7TTHJ-W3FW7-8HV2C___4_0_OEM:NONSLP_Enterprise
|
8b351c9c-f398-4515-9900-09df49427262_XGVPP-NMH47-7TTHJ-W3FW7-8HV2C___4_OEM:NONSLP_Enterprise
|
||||||
23505d51-32d6-41f0-8ca7-e78ad0f16e71_D6RD9-D4N8T-RT9QX-YW6YT-FCWWJ__11_1_____Retail_Starter
|
c83cef07-6b72-4bbc-a28f-a00386872839_3V6Q6-NQXCX-V8YXR-9QCYV-QPFCT__27_Volume:MAK_EnterpriseN
|
||||||
c83cef07-6b72-4bbc-a28f-a00386872839_3V6Q6-NQXCX-V8YXR-9QCYV-QPFCT__27_0_Volume:MAK_EnterpriseN
|
4de7cb65-cdf1-4de9-8ae8-e3cce27b9f2c_VK7JG-NPHTM-C97JM-9MPGT-3V66T__48_____Retail_Professional
|
||||||
211b80cc-7f64-482c-89e9-4ba21ff827ad_3NFXW-2T27M-2BDW6-4GHRV-68XRX__47_1_____Retail_StarterN
|
9fbaf5d6-4d83-4422-870d-fdda6e5858aa_2B87N-8KFHP-DKV6R-Y2C8J-PKCKT__49_____Retail_ProfessionalN
|
||||||
4de7cb65-cdf1-4de9-8ae8-e3cce27b9f2c_VK7JG-NPHTM-C97JM-9MPGT-3V66T__48_0_____Retail_Professional
|
f742e4ff-909d-4fe9-aacb-3231d24a0c58_4CPRK-NM3K3-X6XXQ-RXX86-WXCHW__98_____Retail_CoreN
|
||||||
9fbaf5d6-4d83-4422-870d-fdda6e5858aa_2B87N-8KFHP-DKV6R-Y2C8J-PKCKT__49_0_____Retail_ProfessionalN
|
1d1bac85-7365-4fea-949a-96978ec91ae0_N2434-X9D7W-8PF6X-8DV9T-8TYMD__99_____Retail_CoreCountrySpecific
|
||||||
f742e4ff-909d-4fe9-aacb-3231d24a0c58_4CPRK-NM3K3-X6XXQ-RXX86-WXCHW__98_0_____Retail_CoreN
|
3ae2cc14-ab2d-41f4-972f-5e20142771dc_BT79Q-G7N6G-PGBYW-4YWX6-6F4BT_100_____Retail_CoreSingleLanguage
|
||||||
1d1bac85-7365-4fea-949a-96978ec91ae0_N2434-X9D7W-8PF6X-8DV9T-8TYMD__99_0_____Retail_CoreCountrySpecific
|
2b1f36bb-c1cd-4306-bf5c-a0367c2d97d8_YTMG3-N6DKC-DKB77-7M9GH-8HVX7_101_____Retail_Core
|
||||||
3ae2cc14-ab2d-41f4-972f-5e20142771dc_BT79Q-G7N6G-PGBYW-4YWX6-6F4BT_100_0_____Retail_CoreSingleLanguage
|
2a6137f3-75c0-4f26-8e3e-d83d802865a4_XKCNC-J26Q9-KFHD2-FKTHY-KD72Y_119_OEM:NONSLP_PPIPro
|
||||||
2b1f36bb-c1cd-4306-bf5c-a0367c2d97d8_YTMG3-N6DKC-DKB77-7M9GH-8HVX7_101_0_____Retail_Core
|
e558417a-5123-4f6f-91e7-385c1c7ca9d4_YNMGQ-8RYV3-4PGQ3-C8XTP-7CFBY_121_____Retail_Education
|
||||||
2a6137f3-75c0-4f26-8e3e-d83d802865a4_XKCNC-J26Q9-KFHD2-FKTHY-KD72Y_119_0_OEM:NONSLP_PPIPro
|
c5198a66-e435-4432-89cf-ec777c9d0352_84NGF-MHBT6-FXBX8-QWJK7-DRR8H_122_____Retail_EducationN
|
||||||
e558417a-5123-4f6f-91e7-385c1c7ca9d4_YNMGQ-8RYV3-4PGQ3-C8XTP-7CFBY_121_0_____Retail_Education
|
cce9d2de-98ee-4ce2-8113-222620c64a27_KCNVH-YKWX8-GJJB9-H9FDT-6F7W2_125_Volume:MAK_EnterpriseS_VB
|
||||||
c5198a66-e435-4432-89cf-ec777c9d0352_84NGF-MHBT6-FXBX8-QWJK7-DRR8H_122_0_____Retail_EducationN
|
d06934ee-5448-4fd1-964a-cd077618aa06_43TBQ-NH92J-XKTM7-KT3KK-P39PB_125_OEM:NONSLP_EnterpriseS_RS5
|
||||||
cce9d2de-98ee-4ce2-8113-222620c64a27_KCNVH-YKWX8-GJJB9-H9FDT-6F7W2_125_1_Volume:MAK_EnterpriseS_2021
|
706e0cfd-23f4-43bb-a9af-1a492b9f1302_NK96Y-D9CD8-W44CQ-R8YTK-DYJWX_125_OEM:NONSLP_EnterpriseS_RS1
|
||||||
d06934ee-5448-4fd1-964a-cd077618aa06_43TBQ-NH92J-XKTM7-KT3KK-P39PB_125_0_OEM:NONSLP_EnterpriseS_2019
|
faa57748-75c8-40a2-b851-71ce92aa8b45_FWN7H-PF93Q-4GGP8-M8RF3-MDWWW_125_OEM:NONSLP_EnterpriseS_TH
|
||||||
706e0cfd-23f4-43bb-a9af-1a492b9f1302_NK96Y-D9CD8-W44CQ-R8YTK-DYJWX_125_0_OEM:NONSLP_EnterpriseS_2016
|
2c060131-0e43-4e01-adc1-cf5ad1100da8_RQFNW-9TPM3-JQ73T-QV4VQ-DV9PT_126_Volume:MAK_EnterpriseSN_VB
|
||||||
faa57748-75c8-40a2-b851-71ce92aa8b45_FWN7H-PF93Q-4GGP8-M8RF3-MDWWW_125_0_OEM:NONSLP_EnterpriseS_2015
|
e8f74caa-03fb-4839-8bcc-2e442b317e53_M33WV-NHY3C-R7FPM-BQGPT-239PG_126_Volume:MAK_EnterpriseSN_RS5
|
||||||
2c060131-0e43-4e01-adc1-cf5ad1100da8_RQFNW-9TPM3-JQ73T-QV4VQ-DV9PT_126_1_Volume:MAK_EnterpriseSN_2021
|
3d1022d8-969f-4222-b54b-327f5a5af4c9_2DBW3-N2PJG-MVHW3-G7TDK-9HKR4_126_Volume:MAK_EnterpriseSN_RS1
|
||||||
e8f74caa-03fb-4839-8bcc-2e442b317e53_M33WV-NHY3C-R7FPM-BQGPT-239PG_126_1_Volume:MAK_EnterpriseSN_2019
|
60c243e1-f90b-4a1b-ba89-387294948fb6_NTX6B-BRYC2-K6786-F6MVQ-M7V2X_126_Volume:MAK_EnterpriseSN_TH
|
||||||
3d1022d8-969f-4222-b54b-327f5a5af4c9_2DBW3-N2PJG-MVHW3-G7TDK-9HKR4_126_0_Volume:MAK_EnterpriseSN_2016
|
eb6d346f-1c60-4643-b960-40ec31596c45_DXG7C-N36C4-C4HTG-X4T3X-2YV77_161_____Retail_ProfessionalWorkstation
|
||||||
60c243e1-f90b-4a1b-ba89-387294948fb6_NTX6B-BRYC2-K6786-F6MVQ-M7V2X_126_0_Volume:MAK_EnterpriseSN_2015
|
89e87510-ba92-45f6-8329-3afa905e3e83_WYPNQ-8C467-V2W6J-TX4WX-WT2RQ_162_____Retail_ProfessionalWorkstationN
|
||||||
a48938aa-62fa-4966-9d44-9f04da3f72f2_G3KNM-CHG6T-R36X3-9QDG6-8M8K9_138_1_____Retail_ProfessionalSingleLanguage
|
62f0c100-9c53-4e02-b886-a3528ddfe7f6_8PTT6-RNW4C-6V7J2-C2D3X-MHBPB_164_____Retail_ProfessionalEducation
|
||||||
f7af7d09-40e4-419c-a49b-eae366689ebd_HNGCC-Y38KG-QVK8D-WMWRK-X86VK_139_1_____Retail_ProfessionalCountrySpecific
|
13a38698-4a49-4b9e-8e83-98fe51110953_GJTYN-HDMQY-FRR76-HVGC7-QPF8P_165_____Retail_ProfessionalEducationN
|
||||||
eb6d346f-1c60-4643-b960-40ec31596c45_DXG7C-N36C4-C4HTG-X4T3X-2YV77_161_0_____Retail_ProfessionalWorkstation
|
df96023b-dcd9-4be2-afa0-c6c871159ebe_NJCF7-PW8QT-3324D-688JX-2YV66_175_____Retail_ServerRdsh
|
||||||
89e87510-ba92-45f6-8329-3afa905e3e83_WYPNQ-8C467-V2W6J-TX4WX-WT2RQ_162_0_____Retail_ProfessionalWorkstationN
|
d4ef7282-3d2c-4cf0-9976-8854e64a8d1e_V3WVW-N2PV2-CGWC3-34QGF-VMJ2C_178_____Retail_Cloud
|
||||||
62f0c100-9c53-4e02-b886-a3528ddfe7f6_8PTT6-RNW4C-6V7J2-C2D3X-MHBPB_164_0_____Retail_ProfessionalEducation
|
af5c9381-9240-417d-8d35-eb40cd03e484_NH9J3-68WK7-6FB93-4K3DF-DJ4F6_179_____Retail_CloudN
|
||||||
13a38698-4a49-4b9e-8e83-98fe51110953_GJTYN-HDMQY-FRR76-HVGC7-QPF8P_165_0_____Retail_ProfessionalEducationN
|
8ab9bdd1-1f67-4997-82d9-8878520837d9_XQQYW-NFFMW-XJPBH-K8732-CKFFD_188_____OEM:DM_IoTEnterprise
|
||||||
1ca0bfa8-d96b-4815-a732-7756f30c29e2_FV469-WGNG4-YQP66-2B2HY-KD8YX_171_1_OEM:NONSLP_EnterpriseG
|
ed655016-a9e8-4434-95d9-4345352c2552_QPM6N-7J2WJ-P88HH-P3YRH-YY74H_191_OEM:NONSLP_IoTEnterpriseS_VB
|
||||||
8d6f6ffe-0c30-40ec-9db2-aad7b23bb6e3_FW7NV-4T673-HF4VX-9X4MM-B4H4T_172_1_OEM:NONSLP_EnterpriseGN
|
d4bdc678-0a4b-4a32-a5b3-aaa24c3b0f24_K9VKN-3BGWV-Y624W-MCRMQ-BHDCD_202_____Retail_CloudEditionN
|
||||||
df96023b-dcd9-4be2-afa0-c6c871159ebe_NJCF7-PW8QT-3324D-688JX-2YV66_175_0_____Retail_ServerRdsh
|
92fb8726-92a8-4ffc-94ce-f82e07444653_KY7PN-VR6RX-83W6Y-6DDYQ-T6R4W_203_____Retail_CloudEdition
|
||||||
d4ef7282-3d2c-4cf0-9976-8854e64a8d1e_V3WVW-N2PV2-CGWC3-34QGF-VMJ2C_178_0_____Retail_Cloud
|
d4f9b41f-205c-405e-8e08-3d16e88e02be_J7NJW-V6KBM-CC8RW-Y29Y4-HQ2MJ_205_OEM:NONSLP_IoTEnterpriseSK
|
||||||
af5c9381-9240-417d-8d35-eb40cd03e484_NH9J3-68WK7-6FB93-4K3DF-DJ4F6_179_0_____Retail_CloudN
|
|
||||||
c7051f63-3a76-4992-bce5-731ec0b1e825_2HN6V-HGTM8-6C97C-RK67V-JQPFD_183_1_____Retail_CloudE
|
|
||||||
8ab9bdd1-1f67-4997-82d9-8878520837d9_XQQYW-NFFMW-XJPBH-K8732-CKFFD_188_0_____OEM:DM_IoTEnterprise
|
|
||||||
ed655016-a9e8-4434-95d9-4345352c2552_QPM6N-7J2WJ-P88HH-P3YRH-YY74H_191_0_OEM:NONSLP_IoTEnterpriseS
|
|
||||||
d4bdc678-0a4b-4a32-a5b3-aaa24c3b0f24_K9VKN-3BGWV-Y624W-MCRMQ-BHDCD_202_0_____Retail_CloudEditionN
|
|
||||||
92fb8726-92a8-4ffc-94ce-f82e07444653_KY7PN-VR6RX-83W6Y-6DDYQ-T6R4W_203_0_____Retail_CloudEdition
|
|
||||||
) do (
|
) do (
|
||||||
for /f "tokens=1-8 delims=_" %%A in ("%%#") do if %osSKU%==%%C (
|
for /f "tokens=1-6 delims=_" %%A in ("%%#") do (
|
||||||
|
|
||||||
if %1==attempt1 if not defined key (
|
if %1==key if %osSKU%==%%C (
|
||||||
|
|
||||||
|
REM Detect key attempt 1
|
||||||
|
|
||||||
|
if "%2"=="attempt1" if not defined key (
|
||||||
echo "!applist!" | find /i "%%A" 1>nul && (
|
echo "!applist!" | find /i "%%A" 1>nul && (
|
||||||
set key=%%B
|
set key=%%B
|
||||||
|
set channel=%%D
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
if %1==attempt2 if not defined key (
|
REM Detect key attempt 2
|
||||||
set 7th=%%G
|
|
||||||
if not defined 7th (
|
if "%2"=="attempt2" if not defined key (
|
||||||
if %winbuild% GTR 19044 call :dk_hwidkey %nul%
|
set actidnotfound=1
|
||||||
if not defined key set key=%%B
|
set 6th=%%F
|
||||||
|
if not defined 6th (
|
||||||
|
set key=%%B
|
||||||
|
set channel=%%D
|
||||||
) else (
|
) else (
|
||||||
echo "%winos%" | find /i "%%G" 1>nul && (
|
echo "%branch%" | find /i "%%F" 1>nul && (
|
||||||
if %winbuild% GTR 19044 call :dk_hwidkey %nul%
|
set key=%%B
|
||||||
if not defined key set key=%%B
|
set channel=%%D
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
)
|
||||||
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
exit /b
|
exit /b
|
||||||
|
@ -61,8 +61,7 @@ if not %errorlevel%==0 (
|
|||||||
echo:
|
echo:
|
||||||
echo Error: This is not a correct file. It has LF line ending issue.
|
echo Error: This is not a correct file. It has LF line ending issue.
|
||||||
echo:
|
echo:
|
||||||
echo Press any key to exit...
|
ping 127.0.0.1 -n 6 > nul
|
||||||
pause >nul
|
|
||||||
popd
|
popd
|
||||||
exit /b
|
exit /b
|
||||||
)
|
)
|
||||||
@ -74,13 +73,15 @@ cls
|
|||||||
color 07
|
color 07
|
||||||
title Online KMS Activation
|
title Online KMS Activation
|
||||||
|
|
||||||
|
:: You are not supposed to edit anything below this.
|
||||||
|
|
||||||
set WMI_VBS=0
|
set WMI_VBS=0
|
||||||
set _Debug=0
|
set _Debug=0
|
||||||
set Silent=0
|
set Silent=0
|
||||||
set Logger=0
|
set Logger=0
|
||||||
set AutoR2V=1
|
set AutoR2V=1
|
||||||
set SkipKMS38=1
|
set SkipKMS38=1
|
||||||
|
set vNextOverride=1
|
||||||
set ActWindows=1
|
set ActWindows=1
|
||||||
set ActOffice=1
|
set ActOffice=1
|
||||||
|
|
||||||
@ -90,6 +91,7 @@ set _elev=
|
|||||||
set _renetask=
|
set _renetask=
|
||||||
set _renacttask=
|
set _renacttask=
|
||||||
set _unattended=
|
set _unattended=
|
||||||
|
set _unattendedact=
|
||||||
|
|
||||||
set _args=%*
|
set _args=%*
|
||||||
if defined _args set _args=%_args:"=%
|
if defined _args set _args=%_args:"=%
|
||||||
@ -99,14 +101,15 @@ if "%_args%"=="-el" set _unattended=
|
|||||||
|
|
||||||
for %%A in (%_args%) do (
|
for %%A in (%_args%) do (
|
||||||
if /i "%%A"=="-el" (set _elev=1
|
if /i "%%A"=="-el" (set _elev=1
|
||||||
) else if /i "%%A"=="/rt" (set _renetask=1
|
) else if /i "%%A"=="/KMS-RenewalTask" (set _renetask=1
|
||||||
) else if /i "%%A"=="/rat" (set _renacttask=1
|
) else if /i "%%A"=="/KMS-ActAndRenewalTask" (set _renacttask=1
|
||||||
) else if /i "%%A"=="/uni" (set _uni=1
|
) else if /i "%%A"=="/KMS-Uninstall" (set _uni=1
|
||||||
) else if /i "%%A"=="/w" (set ActWindows=1&set ActOffice=0
|
) else if /i "%%A"=="/KMS-Windows" (set ActWindows=1&set ActOffice=0&set _unattendedact=1
|
||||||
) else if /i "%%A"=="/o" (set ActWindows=0&set ActOffice=1
|
) else if /i "%%A"=="/KMS-Office" (set ActWindows=0&set ActOffice=1&set _unattendedact=1
|
||||||
) else if /i "%%A"=="/wo" (set ActWindows=1&set ActOffice=1
|
) else if /i "%%A"=="/KMS-WindowsOffice" (set ActWindows=1&set ActOffice=1&set _unattendedact=1
|
||||||
) else if /i "%%A"=="/d" (set _Debug=1
|
) else if /i "%%A"=="/KMS-KeepvNext" (set vNextOverride=0
|
||||||
) else if /i "%%A"=="/l" (set Logger=1&set Silent=1
|
) else if /i "%%A"=="/KMS-Debug" (set _Debug=1
|
||||||
|
) else if /i "%%A"=="/KMS-Logger" (set Logger=1&set Silent=1
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -157,6 +160,7 @@ set "_batp=%_batf:'=''%"
|
|||||||
set _PSarg="""%~f0""" -el %_args%
|
set _PSarg="""%~f0""" -el %_args%
|
||||||
|
|
||||||
set "_ttemp=%temp%"
|
set "_ttemp=%temp%"
|
||||||
|
set "_Local=%LocalAppData%"
|
||||||
|
|
||||||
setlocal EnableDelayedExpansion
|
setlocal EnableDelayedExpansion
|
||||||
|
|
||||||
@ -177,7 +181,7 @@ goto Done
|
|||||||
|
|
||||||
:: Elevate script as admin and pass arguments and preventing loop
|
:: Elevate script as admin and pass arguments and preventing loop
|
||||||
|
|
||||||
%nul% reg query HKU\S-1-5-19 || (
|
>nul fltmc || (
|
||||||
if not defined _elev %nul% %psc% "start cmd.exe -arg '/c \"!_PSarg:'=''!\"' -verb runas" && exit /b
|
if not defined _elev %nul% %psc% "start cmd.exe -arg '/c \"!_PSarg:'=''!\"' -verb runas" && exit /b
|
||||||
%nceline%
|
%nceline%
|
||||||
echo This script require administrator privileges.
|
echo This script require administrator privileges.
|
||||||
@ -187,6 +191,16 @@ goto Done
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
if %~z0 GEQ 300000 (set "_exitmsg=Go back") else (set "_exitmsg=Exit")
|
||||||
|
|
||||||
|
:: Check not x86 Windows
|
||||||
|
|
||||||
|
set notx86=
|
||||||
|
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE') do set arch=%%b
|
||||||
|
if /i not "%arch%"=="x86" set notx86=1
|
||||||
|
|
||||||
|
::========================================================================================================================================
|
||||||
|
|
||||||
for %%# in (wmic.exe) do @if "%%~$PATH:#"=="" (
|
for %%# in (wmic.exe) do @if "%%~$PATH:#"=="" (
|
||||||
%nceline%
|
%nceline%
|
||||||
echo Unable to find wmic.exe in the system.
|
echo Unable to find wmic.exe in the system.
|
||||||
@ -197,6 +211,7 @@ goto Done
|
|||||||
wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i "ComputerSystem" 1>nul || (
|
wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i "ComputerSystem" 1>nul || (
|
||||||
%nceline%
|
%nceline%
|
||||||
echo wmic.exe is not responding in the system.
|
echo wmic.exe is not responding in the system.
|
||||||
|
echo Check this page for help https://massgrave.dev/troubleshoot
|
||||||
echo Aborting...
|
echo Aborting...
|
||||||
goto Done
|
goto Done
|
||||||
)
|
)
|
||||||
@ -206,29 +221,20 @@ reg query "HKCU\SOFTWARE\Microsoft\Windows Script Host\Settings" /v Enabled 2>nu
|
|||||||
reg query "HKLM\SOFTWARE\Microsoft\Windows Script Host\Settings" /v Enabled 2>nul | find /i "0x0" 1>nul && (set _WSH=0)
|
reg query "HKLM\SOFTWARE\Microsoft\Windows Script Host\Settings" /v Enabled 2>nul | find /i "0x0" 1>nul && (set _WSH=0)
|
||||||
|
|
||||||
if %_WSH% EQU 0 (
|
if %_WSH% EQU 0 (
|
||||||
%nceline%
|
reg add "HKLM\Software\Microsoft\Windows Script Host\Settings" /v Enabled /t REG_DWORD /d 1 /f %nul%
|
||||||
echo Windows Script Host is disabled.
|
reg add "HKCU\Software\Microsoft\Windows Script Host\Settings" /v Enabled /t REG_DWORD /d 1 /f %nul%
|
||||||
echo It is required for this script to work.
|
if defined notx86 reg add "HKLM\Software\Microsoft\Windows Script Host\Settings" /v Enabled /t REG_DWORD /d 1 /f /reg:32 %nul%
|
||||||
echo Aborting...
|
|
||||||
goto Done
|
|
||||||
)
|
)
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
if %~z0 GEQ 500000 (set "_exitmsg=Go back") else (set "_exitmsg=Exit")
|
|
||||||
|
|
||||||
:: Check not x86 Windows
|
|
||||||
|
|
||||||
set notx86=
|
|
||||||
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE') do set arch=%%b
|
|
||||||
if /i not "%arch%"=="x86" set notx86=1
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
if defined _uni goto _Complete_Uninstall
|
if defined _uni goto _Complete_Uninstall
|
||||||
|
|
||||||
if defined _renacttask set ActTask=1&goto:RenTask
|
if defined _renetask set ActTask=&call:RenTask&timeout /t 2
|
||||||
if defined _renetask set ActTask=&goto:RenTask
|
cls
|
||||||
|
if defined _renacttask set ActTask=1&call:RenTask&timeout /t 2
|
||||||
|
cls
|
||||||
|
if defined _unattended if not defined _unattendedact goto Done
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
@ -237,6 +243,16 @@ set _gui=
|
|||||||
|
|
||||||
:_KMS_Menu
|
:_KMS_Menu
|
||||||
|
|
||||||
|
set sub_next=0
|
||||||
|
set sub_o365=0
|
||||||
|
set sub_proj=0
|
||||||
|
set sub_vsio=0
|
||||||
|
set _Identity=0
|
||||||
|
set kNext=HKCU\SOFTWARE\Microsoft\Office\16.0\Common\Licensing\LicensingNext
|
||||||
|
dir /b /s /a:-d "!_Local!\Microsoft\Office\Licenses\*1*" %nul% && set _Identity=1
|
||||||
|
dir /b /s /a:-d "!ProgramData!\Microsoft\Office\Licenses\*1*" %nul% && set _Identity=1
|
||||||
|
if %_Identity% EQU 1 reg query %kNext% /v MigrationToV5Done 2>nul | find /i "0x1" %nul% && call :officeSub %nul%
|
||||||
|
|
||||||
set _tskinstalled=
|
set _tskinstalled=
|
||||||
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\taskcache\tasks" /f Path /s | find /i "\Activation-Renewal" >nul && (
|
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\taskcache\tasks" /f Path /s | find /i "\Activation-Renewal" >nul && (
|
||||||
set _tskinstalled=1
|
set _tskinstalled=1
|
||||||
@ -251,6 +267,7 @@ set _oldtsk=1
|
|||||||
|
|
||||||
if defined _unattended (
|
if defined _unattended (
|
||||||
call :Activation_Start
|
call :Activation_Start
|
||||||
|
timeout /t 2
|
||||||
goto Done
|
goto Done
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -265,15 +282,9 @@ echo.
|
|||||||
echo.
|
echo.
|
||||||
echo. ______________________________________________________________
|
echo. ______________________________________________________________
|
||||||
echo.
|
echo.
|
||||||
if %_Debug%==0 (
|
|
||||||
echo. [1] Activate - Windows
|
echo. [1] Activate - Windows
|
||||||
echo. [2] Activate - Office
|
echo. [2] Activate - Office
|
||||||
echo. [3] Activate - All
|
echo. [3] Activate - All
|
||||||
) else (
|
|
||||||
call :_color2 %_White% " [1] Activate - Windows " %_Red% "[Debug Mode]"
|
|
||||||
call :_color2 %_White% " [2] Activate - Office " %_Red% "[Debug Mode]"
|
|
||||||
call :_color2 %_White% " [3] Activate - All " %_Red% "[Debug Mode]"
|
|
||||||
)
|
|
||||||
echo.
|
echo.
|
||||||
if defined _tskinstalled call :_color2 %_White% " [4] Install Auto-Renewal " %_Green% "[Installed]"
|
if defined _tskinstalled call :_color2 %_White% " [4] Install Auto-Renewal " %_Green% "[Installed]"
|
||||||
if defined _oldtsk call :_color2 %_White% " [4] Install Auto-Renewal " %_Red% "[Old Installed]"
|
if defined _oldtsk call :_color2 %_White% " [4] Install Auto-Renewal " %_Red% "[Old Installed]"
|
||||||
@ -281,17 +292,35 @@ if not defined _tskinstalled if not defined _oldtsk echo. [4] Insta
|
|||||||
echo. [5] Uninstall
|
echo. [5] Uninstall
|
||||||
echo. _______________________________________________
|
echo. _______________________________________________
|
||||||
echo.
|
echo.
|
||||||
echo. [6] Enable Debug Mode
|
if %_Debug%==0 (
|
||||||
|
echo. [6] Enable Debug Mode [No]
|
||||||
|
) else (
|
||||||
|
call :_color2 %_White% " [6] Enable Debug Mode " %_Red% "[Yes]"
|
||||||
|
)
|
||||||
|
if %vNextOverride% EQU 1 (
|
||||||
|
if %sub_next% EQU 1 (
|
||||||
|
call :_color2 %_White% " [7] Override Office vNext " %_Red% "[Yes]"
|
||||||
|
) else (
|
||||||
|
echo [7] Override Office vNext [Yes]
|
||||||
|
)
|
||||||
|
) else (
|
||||||
|
if %sub_next% EQU 1 (
|
||||||
|
call :_color2 %_White% " [7] Override Office vNext " %_Yellow% "[No]"
|
||||||
|
) else (
|
||||||
|
echo [7] Override Office vNext [No]
|
||||||
|
)
|
||||||
|
)
|
||||||
echo. _______________________________________________
|
echo. _______________________________________________
|
||||||
echo.
|
echo.
|
||||||
echo. [7] %_exitmsg%
|
echo. [0] %_exitmsg%
|
||||||
echo. ______________________________________________________________
|
echo. ______________________________________________________________
|
||||||
echo.
|
echo.
|
||||||
call :_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard [1,2,3,4,5,6,7]"
|
call :_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard [1,2,3,4,5,6,7,0]"
|
||||||
choice /C:1234567 /N
|
choice /C:12345670 /N
|
||||||
set _el=%errorlevel%
|
set _el=%errorlevel%
|
||||||
|
|
||||||
if %_el%==7 exit /b
|
if %_el%==8 exit /b
|
||||||
|
if %_el%==7 (if %vNextOverride% EQU 0 (set vNextOverride=1) else (set vNextOverride=0))&goto _KMS_Menu
|
||||||
if %_el%==6 (if %_Debug%==0 (set _Debug=1) else (set _Debug=0)) &goto _KMS_Menu
|
if %_el%==6 (if %_Debug%==0 (set _Debug=1) else (set _Debug=0)) &goto _KMS_Menu
|
||||||
if %_el%==5 call:_Complete_Uninstall&cls&goto _KMS_Menu
|
if %_el%==5 call:_Complete_Uninstall&cls&goto _KMS_Menu
|
||||||
if %_el%==4 set ActTask=&call:RenTask&goto _KMS_Menu
|
if %_el%==4 set ActTask=&call:RenTask&goto _KMS_Menu
|
||||||
@ -322,6 +351,8 @@ for %%# in (SppE%nil%xtComObj.exe,sppsvc.exe,osppsvc.exe) do (
|
|||||||
reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ima%nil%ge File Execu%nil%tion Options\%%#" /f %nul%)
|
reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ima%nil%ge File Execu%nil%tion Options\%%#" /f %nul%)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
call :Clear-KMS-Cache %nul%
|
||||||
|
|
||||||
set "_Null=1>nul 2>nul"
|
set "_Null=1>nul 2>nul"
|
||||||
set KMS_Port=1688
|
set KMS_Port=1688
|
||||||
if %_Debug% EQU 1 set _unattended=1
|
if %_Debug% EQU 1 set _unattended=1
|
||||||
@ -364,11 +395,11 @@ set "_mO21c=Detected Office 2021 C2R Retail could not be converted to Volume"
|
|||||||
set "_mO19c=Detected Office 2019 C2R Retail could not be converted to Volume"
|
set "_mO19c=Detected Office 2019 C2R Retail could not be converted to Volume"
|
||||||
set "_mO16c=Detected Office 2016 C2R Retail could not be converted to Volume"
|
set "_mO16c=Detected Office 2016 C2R Retail could not be converted to Volume"
|
||||||
set "_mO15c=Detected Office 2013 C2R Retail could not be converted to Volume"
|
set "_mO15c=Detected Office 2013 C2R Retail could not be converted to Volume"
|
||||||
set "_mO14c=Detected Office 2010 C2R Retail is not supported by KMS_VL_ALL"
|
set "_mO14c=Detected Office 2010 C2R Retail is not supported by this script"
|
||||||
set "_mO14m=Detected Office 2010 MSI Retail is not supported by KMS_VL_ALL"
|
set "_mO14m=Detected Office 2010 MSI Retail is not supported by this script"
|
||||||
set "_mO15m=Detected Office 2013 MSI Retail is not supported by KMS_VL_ALL"
|
set "_mO15m=Detected Office 2013 MSI Retail is not supported by this script"
|
||||||
set "_mO16m=Detected Office 2016 MSI Retail is not supported by KMS_VL_ALL"
|
set "_mO16m=Detected Office 2016 MSI Retail is not supported by this script"
|
||||||
set "_mOuwp=Detected Office 365/2016 UWP is not supported by KMS_VL_ALL"
|
set "_mOuwp=Detected Office 365/2016 UWP is not supported by this script"
|
||||||
set DO16Ids=ProPlus,Standard,Access,SkypeforBusiness,Excel,Outlook,PowerPoint,Publisher,Word
|
set DO16Ids=ProPlus,Standard,Access,SkypeforBusiness,Excel,Outlook,PowerPoint,Publisher,Word
|
||||||
set LV16Ids=Mondo,ProPlus,ProjectPro,VisioPro,Standard,ProjectStd,VisioStd,Access,SkypeforBusiness,OneNote,Excel,Outlook,PowerPoint,Publisher,Word
|
set LV16Ids=Mondo,ProPlus,ProjectPro,VisioPro,Standard,ProjectStd,VisioStd,Access,SkypeforBusiness,OneNote,Excel,Outlook,PowerPoint,Publisher,Word
|
||||||
set LR16Ids=%LV16Ids%,Professional,HomeBusiness,HomeStudent,O365Business,O365SmallBusPrem,O365HomePrem,O365EduCloud
|
set LR16Ids=%LV16Ids%,Professional,HomeBusiness,HomeStudent,O365Business,O365SmallBusPrem,O365HomePrem,O365EduCloud
|
||||||
@ -647,7 +678,7 @@ if %ActWindows% EQU 0 (
|
|||||||
echo.&echo %_winos% %nKMS%
|
echo.&echo %_winos% %nKMS%
|
||||||
if defined _eval echo %nEval%
|
if defined _eval echo %nEval%
|
||||||
) else (
|
) else (
|
||||||
echo.&echo Failed checking KMS Activation ID^(s^) for Windows.&echo Check Troubleshooting in MAS extras section.&call :CheckWS
|
echo.&echo Failed checking KMS Activation ID^(s^) for Windows.&echo Check this page for help https://massgrave.dev/troubleshoot &call :CheckWS
|
||||||
exit /b
|
exit /b
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -707,9 +738,12 @@ if %winbuild% GEQ 9200 (
|
|||||||
)
|
)
|
||||||
if %winbuild% LSS 9200 (if %loc_off14% EQU 0 (echo.&echo No Installed Office %aword% Product Detected...&exit /b))
|
if %winbuild% LSS 9200 (if %loc_off14% EQU 0 (echo.&echo No Installed Office %aword% Product Detected...&exit /b))
|
||||||
)
|
)
|
||||||
set sub_O365=0
|
if %vNextOverride% EQU 1 if %AutoR2V% EQU 1 (
|
||||||
|
set sub_o365=0
|
||||||
set sub_proj=0
|
set sub_proj=0
|
||||||
set sub_vis=0
|
set sub_vsio=0
|
||||||
|
if %sub_next% EQU 1 reg delete HKCU\SOFTWARE\Microsoft\Office\16.0\Common\Licensing /f %_Nul3%
|
||||||
|
)
|
||||||
set Off1ce=1
|
set Off1ce=1
|
||||||
set _sC2R=sppoff
|
set _sC2R=sppoff
|
||||||
set _fC2R=ReturnSPP
|
set _fC2R=ReturnSPP
|
||||||
@ -758,7 +792,7 @@ if %sub_proj% EQU 0 for %%a in (ProjectPro,ProjectStd) do find /i "Office21%%a20
|
|||||||
call set /a prr_off21+=1
|
call set /a prr_off21+=1
|
||||||
find /i "Office21%%a2021VL" "!_temp!\sppchk.txt" %_Nul1% && call set /a prv_off21+=1
|
find /i "Office21%%a2021VL" "!_temp!\sppchk.txt" %_Nul1% && call set /a prv_off21+=1
|
||||||
)
|
)
|
||||||
if %sub_vis% EQU 0 for %%a in (VisioPro,VisioStd) do find /i "Office21%%a2021R" "!_temp!\sppchk.txt" %_Nul1% && (
|
if %sub_vsio% EQU 0 for %%a in (VisioPro,VisioStd) do find /i "Office21%%a2021R" "!_temp!\sppchk.txt" %_Nul1% && (
|
||||||
call set /a prr_off21+=1
|
call set /a prr_off21+=1
|
||||||
find /i "Office21%%a2021VL" "!_temp!\sppchk.txt" %_Nul1% && call set /a prv_off21+=1
|
find /i "Office21%%a2021VL" "!_temp!\sppchk.txt" %_Nul1% && call set /a prv_off21+=1
|
||||||
)
|
)
|
||||||
@ -783,7 +817,7 @@ if %sub_proj% EQU 0 for %%a in (ProjectPro,ProjectStd) do find /i "Office19%%a20
|
|||||||
call set /a prr_off19+=1
|
call set /a prr_off19+=1
|
||||||
find /i "Office19%%a2019VL" "!_temp!\sppchk.txt" %_Nul1% && call set /a prv_off19+=1
|
find /i "Office19%%a2019VL" "!_temp!\sppchk.txt" %_Nul1% && call set /a prv_off19+=1
|
||||||
)
|
)
|
||||||
if %sub_vis% EQU 0 for %%a in (VisioPro,VisioStd) do find /i "Office19%%a2019R" "!_temp!\sppchk.txt" %_Nul1% && (
|
if %sub_vsio% EQU 0 for %%a in (VisioPro,VisioStd) do find /i "Office19%%a2019R" "!_temp!\sppchk.txt" %_Nul1% && (
|
||||||
call set /a prr_off19+=1
|
call set /a prr_off19+=1
|
||||||
find /i "Office19%%a2019VL" "!_temp!\sppchk.txt" %_Nul1% && call set /a prv_off19+=1
|
find /i "Office19%%a2019VL" "!_temp!\sppchk.txt" %_Nul1% && call set /a prv_off19+=1
|
||||||
)
|
)
|
||||||
@ -815,7 +849,7 @@ if %sub_proj% EQU 0 for %%a in (ProjectPro,ProjectStd) do find /i "Office16%%aR"
|
|||||||
if %vol_off16% EQU 0 if %vol_off21% EQU 1 find /i "Office21%%a2021VL" "!_temp!\sppchk.txt" %_Nul1% && call set /a prv_off16+=1
|
if %vol_off16% EQU 0 if %vol_off21% EQU 1 find /i "Office21%%a2021VL" "!_temp!\sppchk.txt" %_Nul1% && call set /a prv_off16+=1
|
||||||
if %vol_off16% EQU 0 if %vol_off19% EQU 1 find /i "Office19%%a2019VL" "!_temp!\sppchk.txt" %_Nul1% && call set /a prv_off16+=1
|
if %vol_off16% EQU 0 if %vol_off19% EQU 1 find /i "Office19%%a2019VL" "!_temp!\sppchk.txt" %_Nul1% && call set /a prv_off16+=1
|
||||||
)
|
)
|
||||||
if %sub_vis% EQU 0 for %%a in (VisioPro,VisioStd) do find /i "Office16%%aR" "!_temp!\sppchk.txt" %_Nul1% && (
|
if %sub_vsio% EQU 0 for %%a in (VisioPro,VisioStd) do find /i "Office16%%aR" "!_temp!\sppchk.txt" %_Nul1% && (
|
||||||
call set /a prr_off16+=1
|
call set /a prr_off16+=1
|
||||||
if %vol_off16% EQU 1 if %vol_off21% EQU 0 if %vol_off19% EQU 0 find /i "Office16%%aVL" "!_temp!\sppchk.txt" %_Nul1% && call set /a prv_off16+=1
|
if %vol_off16% EQU 1 if %vol_off21% EQU 0 if %vol_off19% EQU 0 find /i "Office16%%aVL" "!_temp!\sppchk.txt" %_Nul1% && call set /a prv_off16+=1
|
||||||
if %vol_off16% EQU 0 if %vol_off21% EQU 1 find /i "Office21%%a2021VL" "!_temp!\sppchk.txt" %_Nul1% && call set /a prv_off16+=1
|
if %vol_off16% EQU 0 if %vol_off21% EQU 1 find /i "Office21%%a2021VL" "!_temp!\sppchk.txt" %_Nul1% && call set /a prv_off16+=1
|
||||||
@ -824,7 +858,7 @@ if %sub_vis% EQU 0 for %%a in (VisioPro,VisioStd) do find /i "Office16%%aR" "!_t
|
|||||||
)
|
)
|
||||||
if %loc_off16% EQU 1 if %ret_off16% EQU 1 if %_O16MSI% EQU 0 if defined _C16R if %prv_off16% LSS %prr_off16% (set vol_off16=0&set run_off16=1)
|
if %loc_off16% EQU 1 if %ret_off16% EQU 1 if %_O16MSI% EQU 0 if defined _C16R if %prv_off16% LSS %prr_off16% (set vol_off16=0&set run_off16=1)
|
||||||
set "_qr=%_zz1% %spp% %_zz2% %_zz5%ApplicationID='%_oApp%' AND LicenseFamily like 'Office16O365%%' %_zz6% %_zz3% LicenseFamily %_zz4%"
|
set "_qr=%_zz1% %spp% %_zz2% %_zz5%ApplicationID='%_oApp%' AND LicenseFamily like 'Office16O365%%' %_zz6% %_zz3% LicenseFamily %_zz4%"
|
||||||
if %loc_off16% EQU 1 if %run_off16% EQU 0 if %sub_O365% EQU 0 if defined _C16R %_qr% %_Nul2% | find /i "O365" %_Nul1% && (
|
if %loc_off16% EQU 1 if %run_off16% EQU 0 if %sub_o365% EQU 0 if defined _C16R %_qr% %_Nul2% | find /i "O365" %_Nul1% && (
|
||||||
find /i "Office16MondoVL" "!_temp!\sppchk.txt" %_Nul1% || set run_off16=1
|
find /i "Office16MondoVL" "!_temp!\sppchk.txt" %_Nul1% || set run_off16=1
|
||||||
)
|
)
|
||||||
set run_off15=0
|
set run_off15=0
|
||||||
@ -862,7 +896,7 @@ if %loc_off19% EQU 1 if %vol_off19% EQU 0 (
|
|||||||
if %aC2R19% EQU 1 (echo.&echo %_mO19a%) else (echo.&echo %_mO19c%)
|
if %aC2R19% EQU 1 (echo.&echo %_mO19a%) else (echo.&echo %_mO19c%)
|
||||||
)
|
)
|
||||||
if %loc_off16% EQU 1 if %vol_off16% EQU 0 (
|
if %loc_off16% EQU 1 if %vol_off16% EQU 0 (
|
||||||
if defined _C16R (if %aC2R16% EQU 1 (echo.&echo %_mO16a%) else (if %sub_O365% EQU 0 echo.&echo %_mO16c%)) else if %_O16MSI% EQU 1 (if %ret_off16% EQU 1 echo.&echo %_mO16m%)
|
if defined _C16R (if %aC2R16% EQU 1 (echo.&echo %_mO16a%) else (if %sub_o365% EQU 0 echo.&echo %_mO16c%)) else if %_O16MSI% EQU 1 (if %ret_off16% EQU 1 echo.&echo %_mO16m%)
|
||||||
)
|
)
|
||||||
if %loc_off15% EQU 1 if %vol_off15% EQU 0 (
|
if %loc_off15% EQU 1 if %vol_off15% EQU 0 (
|
||||||
if defined _C15R (if %aC2R15% EQU 1 (echo.&echo %_mO15a%) else (echo.&echo %_mO15c%)) else if %_O15MSI% EQU 1 (if %ret_off15% EQU 1 echo.&echo %_mO15m%)
|
if defined _C15R (if %aC2R15% EQU 1 (echo.&echo %_mO15a%) else (echo.&echo %_mO15c%)) else if %_O15MSI% EQU 1 (if %ret_off15% EQU 1 echo.&echo %_mO15m%)
|
||||||
@ -1292,6 +1326,20 @@ if not %xOS%==x86 if exist "%ProgramW6432%\Microsoft Office\Office%1\OSPP.VBS" s
|
|||||||
if not %xOS%==x86 if exist "%ProgramFiles(x86)%\Microsoft Office\Office%1\OSPP.VBS" set loc_off%1=1
|
if not %xOS%==x86 if exist "%ProgramFiles(x86)%\Microsoft Office\Office%1\OSPP.VBS" set loc_off%1=1
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
|
:officeSub
|
||||||
|
reg query %kNext% | findstr /i /r ".*retail" %_Nul2% | findstr /i /v "project visio" %_Nul2% | find /i "0x2" %_Nul1% && (set sub_o365=1)
|
||||||
|
reg query %kNext% | findstr /i /r ".*retail" %_Nul2% | findstr /i /v "project visio" %_Nul2% | find /i "0x3" %_Nul1% && (set sub_o365=1)
|
||||||
|
reg query %kNext% | findstr /i /r ".*volume" %_Nul2% | findstr /i /v "project visio" %_Nul2% | find /i "0x2" %_Nul1% && (set sub_o365=1)
|
||||||
|
reg query %kNext% | findstr /i /r ".*volume" %_Nul2% | findstr /i /v "project visio" %_Nul2% | find /i "0x3" %_Nul1% && (set sub_o365=1)
|
||||||
|
reg query %kNext% | findstr /i /r "project.*" %_Nul2% | find /i "0x2" %_Nul1% && set sub_proj=1
|
||||||
|
reg query %kNext% | findstr /i /r "project.*" %_Nul2% | find /i "0x3" %_Nul1% && set sub_proj=1
|
||||||
|
reg query %kNext% | findstr /i /r "visio.*" %_Nul2% | find /i "0x2" %_Nul1% && set sub_vsio=1
|
||||||
|
reg query %kNext% | findstr /i /r "visio.*" %_Nul2% | find /i "0x3" %_Nul1% && set sub_vsio=1
|
||||||
|
if %sub_o365% EQU 1 set sub_next=1
|
||||||
|
if %sub_proj% EQU 1 set sub_next=1
|
||||||
|
if %sub_vsio% EQU 1 set sub_next=1
|
||||||
|
exit /b
|
||||||
|
|
||||||
:insKey
|
:insKey
|
||||||
set S_OK=1
|
set S_OK=1
|
||||||
echo.
|
echo.
|
||||||
@ -1609,22 +1657,6 @@ echo Error: %_sps% WMI version is not detected
|
|||||||
call :CheckWS
|
call :CheckWS
|
||||||
goto :%_fC2R%
|
goto :%_fC2R%
|
||||||
)
|
)
|
||||||
set _Identity=0
|
|
||||||
set _vNext=0
|
|
||||||
dir /b /s /a:-d "!_Local!\Microsoft\Office\Licenses\*1*" %_Nul3% && set _Identity=1
|
|
||||||
dir /b /s /a:-d "!ProgramData!\Microsoft\Office\Licenses\*1*" %_Nul3% && set _Identity=1
|
|
||||||
set kNext=HKCU\SOFTWARE\Microsoft\Office\16.0\Common\Licensing\LicensingNext
|
|
||||||
if %_Identity% EQU 1 reg query %kNext% /v MigrationToV5Done %_Nul2% | find /i "0x1" %_Nul1% && set _vNext=1
|
|
||||||
if %_vNext% EQU 1 (
|
|
||||||
reg query %kNext% | findstr /i /r ".*retail" %_Nul2% | findstr /i /v "project visio" %_Nul2% | find /i "0x2" %_Nul1% && (set sub_O365=1)
|
|
||||||
reg query %kNext% | findstr /i /r ".*retail" %_Nul2% | findstr /i /v "project visio" %_Nul2% | find /i "0x3" %_Nul1% && (set sub_O365=1)
|
|
||||||
reg query %kNext% | findstr /i /r ".*volume" %_Nul2% | findstr /i /v "project visio" %_Nul2% | find /i "0x2" %_Nul1% && (set sub_O365=1)
|
|
||||||
reg query %kNext% | findstr /i /r ".*volume" %_Nul2% | findstr /i /v "project visio" %_Nul2% | find /i "0x3" %_Nul1% && (set sub_O365=1)
|
|
||||||
reg query %kNext% | findstr /i /r "project.*" %_Nul2% | find /i "0x2" %_Nul1% && set sub_proj=1
|
|
||||||
reg query %kNext% | findstr /i /r "project.*" %_Nul2% | find /i "0x3" %_Nul1% && set sub_proj=1
|
|
||||||
reg query %kNext% | findstr /i /r "visio.*" %_Nul2% | find /i "0x2" %_Nul1% && set sub_vis=1
|
|
||||||
reg query %kNext% | findstr /i /r "visio.*" %_Nul2% | find /i "0x3" %_Nul1% && set sub_vis=1
|
|
||||||
)
|
|
||||||
set _Retail=0
|
set _Retail=0
|
||||||
set "_ocq=ApplicationID='%_oApp%' AND LicenseStatus='1' AND PartialProductKey is not NULL"
|
set "_ocq=ApplicationID='%_oApp%' AND LicenseStatus='1' AND PartialProductKey is not NULL"
|
||||||
if %WMI_VBS% EQU 0 wmic path %_spp% where (%_ocq%) get Description %_Nul2% |findstr /V /R "^$" >"!_temp!\crvRetail.txt"
|
if %WMI_VBS% EQU 0 wmic path %_spp% where (%_ocq%) get Description %_Nul2% |findstr /V /R "^$" >"!_temp!\crvRetail.txt"
|
||||||
@ -1759,20 +1791,20 @@ find /i "Office16MondoVL_KMS_Client" "!_temp!\crvVolume.txt" %_Nul1% && (
|
|||||||
for %%a in (O365ProPlus,O365Business,O365SmallBusPrem,O365HomePrem,O365EduCloud) do set _%%a=0
|
for %%a in (O365ProPlus,O365Business,O365SmallBusPrem,O365HomePrem,O365EduCloud) do set _%%a=0
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
if %sub_O365% EQU 1 (
|
if %sub_o365% EQU 1 (
|
||||||
for %%a in (%_Suites%) do set _%%a=0
|
for %%a in (%_Suites%) do set _%%a=0
|
||||||
echo.
|
echo.
|
||||||
echo Microsoft Office is activated with a subscription.
|
echo Microsoft Office is activated with a vNext license.
|
||||||
)
|
)
|
||||||
if %sub_proj% EQU 1 (
|
if %sub_proj% EQU 1 (
|
||||||
for %%a in (%_PrjSKU%) do set _%%a=0
|
for %%a in (%_PrjSKU%) do set _%%a=0
|
||||||
echo.
|
echo.
|
||||||
echo Microsoft Project is activated with a subscription.
|
echo Microsoft Project is activated with a vNext license.
|
||||||
)
|
)
|
||||||
if %sub_vis% EQU 1 (
|
if %sub_vsio% EQU 1 (
|
||||||
for %%a in (%_VisSKU%) do set _%%a=0
|
for %%a in (%_VisSKU%) do set _%%a=0
|
||||||
echo.
|
echo.
|
||||||
echo Microsoft Visio is activated with a subscription.
|
echo Microsoft Visio is activated with a vNext license.
|
||||||
)
|
)
|
||||||
|
|
||||||
for %%a in (%_RetIds%,ProPlus) do if !_%%a! EQU 1 (
|
for %%a in (%_RetIds%,ProPlus) do if !_%%a! EQU 1 (
|
||||||
@ -2980,25 +3012,45 @@ exit /b
|
|||||||
|
|
||||||
:_errorinfo
|
:_errorinfo
|
||||||
|
|
||||||
(set msg1=echo Try again and if the issue still persist then either use a^
|
|
||||||
&echo different Internet connection or use this offline KMS activator^
|
|
||||||
&echo KMS_VL_ALL by @abbodi1406 pastebin.com/raw/cpdmr6HZ
|
|
||||||
)
|
|
||||||
|
|
||||||
call :CheckFR
|
call :CheckFR
|
||||||
|
|
||||||
if !server_num! GTR %max_servers% (
|
set _intcon=
|
||||||
ping -n 1 one.one.one.one 1>nul || ping -n 1 resolver1.opendns.com 1>nul || (
|
for %%a in (dns.msftncsi.com licensing.mp.microsoft.com) do (
|
||||||
call :_color %_Red% "Unable to test KMS servers due to restricted or no Internet."
|
for /f "delims=[] tokens=2" %%# in ('ping -n 1 %%a') do (if not [%%#]==[] set _intcon=1)
|
||||||
echo.
|
)
|
||||||
%msg1%
|
|
||||||
exit /b
|
if not defined _intcon (
|
||||||
)
|
call :_color %_Red% "Internet is not connected."
|
||||||
|
exit /b
|
||||||
|
)
|
||||||
|
|
||||||
|
set _portcon=
|
||||||
|
for %%a in (%srvlist%) do if not defined _portcon (
|
||||||
|
%psc% "$t = New-Object Net.Sockets.TcpClient;try{$t.Connect("""%%a""", 1688)}catch{};$t.Connected" | findstr /i true 1>nul && set _portcon=1
|
||||||
|
)
|
||||||
|
|
||||||
|
if not defined _portcon (
|
||||||
|
echo Internet is found but failed to connect KMS servers on Port 1688.
|
||||||
|
echo.
|
||||||
|
echo Make sure restricted Internet [Office/College] is not connected,
|
||||||
|
echo or Port 1688 is not blocked in the firewall.
|
||||||
|
echo.
|
||||||
|
echo Either use another Internet connection or use offline KMS activator
|
||||||
|
echo https://github.com/abbodi1406/KMS_VL_ALL_AIO
|
||||||
|
exit /b
|
||||||
|
)
|
||||||
|
|
||||||
|
if [%ERRORCODE%]==[-1073418124] (
|
||||||
|
echo KMS server port 1688 test is passed.
|
||||||
|
echo Make sure system files are not blocked in firewall.
|
||||||
|
echo.
|
||||||
|
echo If the issue persist, try offline KMS activator,
|
||||||
|
echo https://github.com/abbodi1406/KMS_VL_ALL_AIO
|
||||||
|
echo.
|
||||||
)
|
)
|
||||||
|
|
||||||
echo Restart the system and try again.
|
|
||||||
echo KMS server is not an issue in this case.
|
echo KMS server is not an issue in this case.
|
||||||
echo Check Troubleshooting steps in the ReadMe.
|
call :_color2 %Magenta% "Check this page for help" %_Yellow% " https://massgrave.dev/troubleshoot"
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
@ -3078,7 +3130,7 @@ if %winbuild% GEQ 9600 (
|
|||||||
%nul% reg query "HKLM\%SPPk%\%_wApp%" && (
|
%nul% reg query "HKLM\%SPPk%\%_wApp%" && (
|
||||||
set error_=9
|
set error_=9
|
||||||
echo Failed to completely clear KMS Cache.
|
echo Failed to completely clear KMS Cache.
|
||||||
reg query "HKLM\%SPPk%\%_wApp%" /s 2>nul | findstr /i "127.0.0.2" >nul && echo Most likely, the KMS38 activation is locked.
|
reg query "HKLM\%SPPk%\%_wApp%" /s 2>nul | findstr /i "127.0.0.2" >nul && echo KMS38 activation is locked.
|
||||||
) || (
|
) || (
|
||||||
echo Cleared KMS Cache successfully.
|
echo Cleared KMS Cache successfully.
|
||||||
)
|
)
|
||||||
@ -3158,7 +3210,7 @@ call :_color %Green% "Online KMS Complete Uninstall was done successfully."
|
|||||||
echo __________________________________________________________________________________________
|
echo __________________________________________________________________________________________
|
||||||
)
|
)
|
||||||
|
|
||||||
if defined _unattended exit /b
|
if defined _unattended timeout /t 2 & exit /b
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
call :_color %_Yellow% "Press any key to go back..."
|
call :_color %_Yellow% "Press any key to go back..."
|
||||||
@ -3942,7 +3994,7 @@ if not [%KMS_IP%]==[!KMS_IP!] exit /b
|
|||||||
goto :_taskgetserv
|
goto :_taskgetserv
|
||||||
)
|
)
|
||||||
|
|
||||||
:: Ver:1.6
|
:: Ver:1.7
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
:_extracttask:
|
:_extracttask:
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user