aboutsummaryrefslogtreecommitdiff
path: root/MAS/Separate-Files-Version
diff options
context:
space:
mode:
authorWindowsAddict <windowsaddict@protonmail.com>2023-11-16 02:33:20 +0530
committerWindowsAddict <windowsaddict@protonmail.com>2023-11-16 02:33:20 +0530
commit066b135cfdd8716add8a159ce183011def0f888f (patch)
tree23daec2cbcca6eb1946ef59d8e8e61127a06f6f2 /MAS/Separate-Files-Version
parent64e006703cdb21608150a4dce173294d69fb6036 (diff)
2.52.5
Diffstat (limited to 'MAS/Separate-Files-Version')
-rw-r--r--MAS/Separate-Files-Version/Activators/HWID_Activation.cmd347
-rw-r--r--MAS/Separate-Files-Version/Activators/KMS38_Activation.cmd350
-rw-r--r--MAS/Separate-Files-Version/Activators/Ohook_Activation_AIO.cmd292
-rw-r--r--MAS/Separate-Files-Version/Activators/Online_KMS_Activation.cmd6
-rw-r--r--MAS/Separate-Files-Version/Change_Edition.cmd57
-rw-r--r--MAS/Separate-Files-Version/Check-Activation-Status-vbs.cmd2
-rw-r--r--MAS/Separate-Files-Version/Check-Activation-Status-wmi.cmd1
-rw-r--r--MAS/Separate-Files-Version/Extract_OEM_Folder.cmd6
-rw-r--r--MAS/Separate-Files-Version/Troubleshoot.cmd138
9 files changed, 793 insertions, 406 deletions
diff --git a/MAS/Separate-Files-Version/Activators/HWID_Activation.cmd b/MAS/Separate-Files-Version/Activators/HWID_Activation.cmd
index 5b95f58..98a2c17 100644
--- a/MAS/Separate-Files-Version/Activators/HWID_Activation.cmd
+++ b/MAS/Separate-Files-Version/Activators/HWID_Activation.cmd
@@ -1,9 +1,9 @@
1@set masver=2.4 1@set masver=2.5
2@setlocal DisableDelayedExpansion 2@setlocal DisableDelayedExpansion
3@echo off 3@echo off
4 4
5 5
6:: 6
7::============================================================================ 7::============================================================================
8:: 8::
9:: This script is a part of 'Microsoft_Activation_Scripts' (MAS) project. 9:: This script is a part of 'Microsoft_Activation_Scripts' (MAS) project.
@@ -257,7 +257,7 @@ echo You are running outdated version MAS %masver%
257echo ________________________________________________ 257echo ________________________________________________
258echo: 258echo:
259if not %_unattended%==1 ( 259if not %_unattended%==1 (
260echo [1] Download Latest MAS 260echo [1] Get Latest MAS
261echo [0] Continue Anyway 261echo [0] Continue Anyway
262echo: 262echo:
263call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" 263call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :"
@@ -270,15 +270,28 @@ if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%v
270::======================================================================================================================================== 270::========================================================================================================================================
271 271
272cls 272cls
273mode 108, 34 273mode 110, 34
274if exist "%Systemdrive%\Windows\System32\spp\store_test\" mode 134, 34
274title HWID Activation %masver% 275title HWID Activation %masver%
275 276
276:: Start Windows update service at the beginning and in later checks as well, because in some normal conditions one kick is not enough 277echo:
278echo Initializing...
277 279
278sc start wuauserv %nul% 280:: Check PowerShell
279 281
282%psc% $ExecutionContext.SessionState.LanguageMode %nul2% | find /i "Full" %nul1% || (
283%eline%
284%psc% $ExecutionContext.SessionState.LanguageMode
280echo: 285echo:
281echo Initializing... 286echo PowerShell is not working. Aborting...
287echo If you have applied restrictions on Powershell then undo those changes.
288echo:
289echo Check this page for help. %mas%troubleshoot
290goto dk_done
291)
292
293::========================================================================================================================================
294
282call :dk_product 295call :dk_product
283call :dk_ckeckwmic 296call :dk_ckeckwmic
284 297
@@ -331,27 +344,7 @@ goto dk_done
331 344
332::======================================================================================================================================== 345::========================================================================================================================================
333 346
334:: Check SKU value / Check in multiple places to find Edition change corruption 347call :dk_checksku
335
336set osSKU=
337set slcSKU=
338set wmiSKU=
339set regSKU=
340
341if %winbuild% GEQ 14393 (set info=Kernel-BrandingInfo) else (set info=Kernel-ProductInfo)
342set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('SLGetWindowsInformationDWORD', 'slc.dll', 'Public, Static', 1, [int], @([String], [int].MakeByRefType()), 1, 3);
343set d1=%d1% $Sku = 0; [void]$TypeBuilder.CreateType()::SLGetWindowsInformationDWORD('%info%', [ref]$Sku); $Sku
344for /f "delims=" %%s in ('"%psc% %d1%"') do if not errorlevel 1 (set slcSKU=%%s)
345if "%slcSKU%"=="0" set slcSKU=
346if 1%slcSKU% NEQ +1%slcSKU% set slcSKU=
347
348for /f "tokens=3 delims=." %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions" /v OSProductPfn %nul6%') do set "regSKU=%%a"
349if %_wmic% EQU 1 for /f "tokens=2 delims==" %%a in ('"wmic Path Win32_OperatingSystem Get OperatingSystemSKU /format:LIST" %nul6%') do if not errorlevel 1 set "wmiSKU=%%a"
350if %_wmic% EQU 0 for /f "tokens=1" %%a in ('%psc% "([WMI]'Win32_OperatingSystem=@').OperatingSystemSKU" %nul6%') do if not errorlevel 1 set "wmiSKU=%%a"
351
352set osSKU=%slcSKU%
353if not defined osSKU set osSKU=%wmiSKU%
354if not defined osSKU set osSKU=%regSKU%
355 348
356if not defined osSKU ( 349if not defined osSKU (
357%eline% 350%eline%
@@ -378,11 +371,11 @@ for /f "delims=[] tokens=2" %%# in ('ping -n 1 %%a') do (if not [%%#]==[] set _i
378 371
379if not defined _int ( 372if not defined _int (
380%psc% "If([Activator]::CreateInstance([Type]::GetTypeFromCLSID([Guid]'{DCB00C01-570F-4A9B-8D69-199FDBA5723B}')).IsConnectedToInternet){Exit 0}Else{Exit 1}" 373%psc% "If([Activator]::CreateInstance([Type]::GetTypeFromCLSID([Guid]'{DCB00C01-570F-4A9B-8D69-199FDBA5723B}')).IsConnectedToInternet){Exit 0}Else{Exit 1}"
381if !errorlevel!==0 set _int=1 374if !errorlevel!==0 (set _int=1&set ping_f= But Ping Failed)
382) 375)
383 376
384if defined _int ( 377if defined _int (
385echo Checking Internet Connection [Connected] 378echo Checking Internet Connection [Connected%ping_f%]
386) else ( 379) else (
387set error=1 380set error=1
388call :dk_color %Red% "Checking Internet Connection [Not Connected]" 381call :dk_color %Red% "Checking Internet Connection [Not Connected]"
@@ -407,7 +400,8 @@ echo Enabling Windows Script Host [Successful]
407 400
408echo Initiating Diagnostic Tests... 401echo Initiating Diagnostic Tests...
409 402
410set "_serv=ClipSVC wlidsvc sppsvc KeyIso LicenseManager Winmgmt wuauserv" 403set "_serv=ClipSVC wlidsvc sppsvc KeyIso LicenseManager Winmgmt DoSvc UsoSvc CryptSvc BITS TrustedInstaller wuauserv"
404if %winbuild% GEQ 17134 set "_serv=%_serv% WaaSMedicSvc"
411 405
412:: Client License Service (ClipSVC) 406:: Client License Service (ClipSVC)
413:: Microsoft Account Sign-in Assistant 407:: Microsoft Account Sign-in Assistant
@@ -415,37 +409,32 @@ set "_serv=ClipSVC wlidsvc sppsvc KeyIso LicenseManager Winmgmt wuauserv"
415:: CNG Key Isolation 409:: CNG Key Isolation
416:: Windows License Manager Service 410:: Windows License Manager Service
417:: Windows Management Instrumentation 411:: Windows Management Instrumentation
412:: Delivery Optimization
413:: Update Orchestrator Service
414:: Cryptographic Services
415:: Background Intelligent Transfer Service
416:: Windows Modules Installer
418:: Windows Update 417:: Windows Update
418:: Windows Update Medic Service
419 419
420call :dk_errorcheck 420call :dk_errorcheck
421 421
422:: Check Windows updates and store app blockers 422:: Check Windows updates and store app blockers
423 423
424set updatesblock= 424set updatesblock=
425echo: %serv_cor% %serv_ste% | findstr /i "wuauserv" %nul% && set updatesblock=1
426
427sc start UsoSvc %nul%
428if %errorlevel% NEQ 1056 if %errorlevel% NEQ 0 set updatesblock=1
429
430if %winbuild% GEQ 17134 (
431sc start WaaSMedicSvc %nul%
432if !errorlevel! NEQ 1056 if !errorlevel! NEQ 0 set updatesblock=1
433)
434
435reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer /v SettingsPageVisibility %nul2% | find /i "windowsupdate" %nul% && set updatesblock=1 425reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer /v SettingsPageVisibility %nul2% | find /i "windowsupdate" %nul% && set updatesblock=1
436reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdateSysprepInProgress %nul% && set updatesblock=1 426reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdateSysprepInProgress %nul% && set updatesblock=1
437reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate /s %nul2% | findstr /i "NoAutoUpdate DisableWindowsUpdateAccess" %nul% && set updatesblock=1 427reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate /s %nul2% | findstr /i "NoAutoUpdate DisableWindowsUpdateAccess" %nul% && set updatesblock=1
438 428
439if defined updatesblock ( 429if defined updatesblock call :dk_color %Gray% "Checking Update Blocker In Registry [Found]"
440call :dk_color %Gray% "Checking Windows Update Blockers [Found]" 430
441if defined applist echo: %serv_e% | find /i "wuauserv" %nul% && ( 431if defined applist echo: %serv_e% | find /i "wuauserv" %nul% && (
442call :dk_color %Blue% "Windows Update is not working. Enable it incase if you have disabled it." 432call :dk_color %Blue% "Windows Update is not working. Enable it incase if you have disabled it."
443reg query HKLM\SYSTEM\CurrentControlSet\Services\wuauserv /v WubLock %nul% && call :dk_color %Blue% "Sordum Windows Update Blocker tool has been used to block updates." 433reg query HKLM\SYSTEM\CurrentControlSet\Services\wuauserv /v WubLock %nul% && call :dk_color %Blue% "Sordum Windows Update Blocker tool has been used to block updates."
444) 434)
445)
446 435
447reg query "HKLM\SOFTWARE\Policies\Microsoft\WindowsStore" /v DisableStoreApps %nul2% | find /i "0x1" %nul% && ( 436reg query "HKLM\SOFTWARE\Policies\Microsoft\WindowsStore" /v DisableStoreApps %nul2% | find /i "0x1" %nul% && (
448call :dk_color %Gray% "Checking Store App Blocker [Found]" 437call :dk_color %Gray% "Checking Store Blocker In Registry [Found]"
449) 438)
450 439
451::======================================================================================================================================== 440::========================================================================================================================================
@@ -454,6 +443,7 @@ call :dk_color %Gray% "Checking Store App Blocker [Found]"
454 443
455set key= 444set key=
456set altkey= 445set altkey=
446set skufound=
457set changekey= 447set changekey=
458set altapplist= 448set altapplist=
459set altedition= 449set altedition=
@@ -477,7 +467,11 @@ call :dk_color %Red% "Checking Alternate Edition For HWID [%altedition% Acti
477if not defined key ( 467if not defined key (
478%eline% 468%eline%
479echo [%winos% ^| %winbuild% ^| SKU:%osSKU%] 469echo [%winos% ^| %winbuild% ^| SKU:%osSKU%]
470if not defined skufound (
480echo Unable to find this product in the supported product list. 471echo Unable to find this product in the supported product list.
472) else (
473echo Required License files not found in %SystemRoot%\System32\spp\tokens\skus\
474)
481echo Make sure you are using updated version of the script. 475echo Make sure you are using updated version of the script.
482echo %mas% 476echo %mas%
483echo: 477echo:
@@ -569,8 +563,7 @@ echo Generating GenuineTicket.xml [Successful]
569set "_xmlexist=if exist "%tdir%\GenuineTicket.xml"" 563set "_xmlexist=if exist "%tdir%\GenuineTicket.xml""
570 564
571%_xmlexist% ( 565%_xmlexist% (
572net stop ClipSVC /y %nul% 566%psc% Restart-Service ClipSVC %nul%
573net start ClipSVC /y %nul%
574%_xmlexist% timeout /t 2 %nul% 567%_xmlexist% timeout /t 2 %nul%
575%_xmlexist% timeout /t 2 %nul% 568%_xmlexist% timeout /t 2 %nul%
576 569
@@ -675,7 +668,7 @@ echo Deleting a Registry [Successful] [!_ident!]
675 668
676REM Refresh some services and license status 669REM Refresh some services and license status
677 670
678for %%# in (wlidsvc LicenseManager sppsvc) do (net stop %%# /y %nul% & net start %%# /y %nul%) 671for %%# in (wlidsvc LicenseManager sppsvc) do (%psc% Restart-Service %%# %nul%)
679call :dk_refresh 672call :dk_refresh
680call :dk_act 673call :dk_act
681call :dk_checkperm 674call :dk_checkperm
@@ -684,7 +677,7 @@ call :dk_checkperm
684REM Check Internet related error codes 677REM Check Internet related error codes
685 678
686if not defined error if not defined _perm ( 679if not defined error if not defined _perm (
687echo "%error_code%" | findstr /i "0x80072e 0x80072f" %nul% && ( 680echo "%error_code%" | findstr /i "0x80072e 0x80072f 0x800704cf" %nul% && (
688set error=1 681set error=1
689echo: 682echo:
690call :dk_color %Red% "Checking Internet Issues [Found] %error_code%" 683call :dk_color %Red% "Checking Internet Issues [Found] %error_code%"
@@ -729,6 +722,31 @@ goto :dk_done
729 722
730::======================================================================================================================================== 723::========================================================================================================================================
731 724
725:: Check SKU value
726
727:dk_checksku
728
729set osSKU=
730set slcSKU=
731set wmiSKU=
732set regSKU=
733
734if %winbuild% GEQ 14393 (set info=Kernel-BrandingInfo) else (set info=Kernel-ProductInfo)
735set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('SLGetWindowsInformationDWORD', 'slc.dll', 'Public, Static', 1, [int], @([String], [int].MakeByRefType()), 1, 3);
736set d1=%d1% $Sku = 0; [void]$TypeBuilder.CreateType()::SLGetWindowsInformationDWORD('%info%', [ref]$Sku); $Sku
737for /f "delims=" %%s in ('"%psc% %d1%"') do if not errorlevel 1 (set slcSKU=%%s)
738if "%slcSKU%"=="0" set slcSKU=
739if 1%slcSKU% NEQ +1%slcSKU% set slcSKU=
740
741for /f "tokens=3 delims=." %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions" /v OSProductPfn %nul6%') do set "regSKU=%%a"
742if %_wmic% EQU 1 for /f "tokens=2 delims==" %%a in ('"wmic Path Win32_OperatingSystem Get OperatingSystemSKU /format:LIST" %nul6%') do if not errorlevel 1 set "wmiSKU=%%a"
743if %_wmic% EQU 0 for /f "tokens=1" %%a in ('%psc% "([WMI]'Win32_OperatingSystem=@').OperatingSystemSKU" %nul6%') do if not errorlevel 1 set "wmiSKU=%%a"
744
745set osSKU=%slcSKU%
746if not defined osSKU set osSKU=%wmiSKU%
747if not defined osSKU set osSKU=%regSKU%
748exit /b
749
732:: Get Windows permanent activation status 750:: Get Windows permanent activation status
733 751
734:dk_checkperm 752:dk_checkperm
@@ -838,7 +856,11 @@ set _corrupt=
838sc start %%# %nul% 856sc start %%# %nul%
839if !errorlevel! EQU 1060 set _corrupt=1 857if !errorlevel! EQU 1060 set _corrupt=1
840sc query %%# %nul% || set _corrupt=1 858sc query %%# %nul% || set _corrupt=1
841for %%G in (DependOnService Description DisplayName ErrorControl ImagePath ObjectName Start Type) do if not defined _corrupt (reg query HKLM\SYSTEM\CurrentControlSet\Services\%%# /v %%G %nul% || set _corrupt=1) 859for %%G in (DependOnService Description DisplayName ErrorControl ImagePath ObjectName Start Type) do if not defined _corrupt (
860reg query HKLM\SYSTEM\CurrentControlSet\Services\%%# /v %%G %nul% || set _corrupt=1
861if /i %%#==TrustedInstaller if /i %%G==DependOnService set _corrupt=
862)
863
842if defined _corrupt (if defined serv_cor (set "serv_cor=!serv_cor! %%#") else (set "serv_cor=%%#")) 864if defined _corrupt (if defined serv_cor (set "serv_cor=!serv_cor! %%#") else (set "serv_cor=%%#"))
843) 865)
844 866
@@ -864,13 +886,18 @@ set serv_cste=
864 886
865if defined serv_ste ( 887if defined serv_ste (
866for %%# in (%serv_ste%) do ( 888for %%# in (%serv_ste%) do (
867if /i %%#==ClipSVC (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "3" /f %nul% & sc config %%# start= demand %nul%) 889if /i %%#==ClipSVC (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "3" /f %nul% & sc config %%# start= demand %nul%)
868if /i %%#==wlidsvc sc config %%# start= demand %nul% 890if /i %%#==wlidsvc sc config %%# start= demand %nul%
869if /i %%#==sppsvc (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "2" /f %nul% & sc config %%# start= delayed-auto %nul%) 891if /i %%#==sppsvc (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "2" /f %nul% & sc config %%# start= delayed-auto %nul%)
870if /i %%#==KeyIso sc config %%# start= demand %nul% 892if /i %%#==KeyIso sc config %%# start= demand %nul%
871if /i %%#==LicenseManager sc config %%# start= demand %nul% 893if /i %%#==LicenseManager sc config %%# start= demand %nul%
872if /i %%#==Winmgmt sc config %%# start= auto %nul% 894if /i %%#==Winmgmt sc config %%# start= auto %nul%
873if /i %%#==wuauserv sc config %%# start= demand %nul% 895if /i %%#==DoSvc sc config %%# start= delayed-auto %nul%
896if /i %%#==UsoSvc sc config %%# start= delayed-auto %nul%
897if /i %%#==CryptSvc sc config %%# start= auto %nul%
898if /i %%#==BITS sc config %%# start= delayed-auto %nul%
899if /i %%#==wuauserv sc config %%# start= demand %nul%
900if /i %%#==WaaSMedicSvc sc config %%# start= demand %nul%
874if !errorlevel!==0 ( 901if !errorlevel!==0 (
875if defined serv_csts (set "serv_csts=!serv_csts! %%#") else (set "serv_csts=%%#") 902if defined serv_csts (set "serv_csts=!serv_csts! %%#") else (set "serv_csts=%%#")
876) else ( 903) else (
@@ -895,9 +922,12 @@ set serv_e=
895for %%# in (%_serv%) do ( 922for %%# in (%_serv%) do (
896set errorcode= 923set errorcode=
897set checkerror= 924set checkerror=
898net start %%# /y %nul% 925
926sc query %%# | find /i "RUNNING" %nul% || (
927%psc% Start-Service %%# %nul%
899set errorcode=!errorlevel! 928set errorcode=!errorlevel!
900sc query %%# | find /i "RUNNING" %nul% || set checkerror=1 929sc query %%# | find /i "RUNNING" %nul% || set checkerror=1
930)
901 931
902sc start %%# %nul% 932sc start %%# %nul%
903if !errorlevel! NEQ 1056 if !errorlevel! NEQ 0 (set errorcode=!errorlevel!&set checkerror=1) 933if !errorlevel! NEQ 1056 if !errorlevel! NEQ 0 (set errorcode=!errorlevel!&set checkerror=1)
@@ -908,7 +938,7 @@ if defined serv_e (
908set error=1 938set error=1
909call :dk_color %Red% "Starting Services [Failed] [%serv_e%]" 939call :dk_color %Red% "Starting Services [Failed] [%serv_e%]"
910echo %serv_e% | findstr /i "ClipSVC-1058 sppsvc-1058" %nul% && ( 940echo %serv_e% | findstr /i "ClipSVC-1058 sppsvc-1058" %nul% && (
911call :dk_color %Blue% "Restart the system to fix disabled service error 1058." 941call :dk_color %Blue% "Restart the system to fix this error."
912set showfix=1 942set showfix=1
913) 943)
914) 944)
@@ -920,14 +950,18 @@ set showfix=1
920if defined safeboot_option ( 950if defined safeboot_option (
921set error=1 951set error=1
922set showfix=1 952set showfix=1
923call :dk_color2 %Red% "Checking Boot Mode " %Blue% "[Safe mode found. Run in normal mode.]" 953call :dk_color2 %Red% "Checking Boot Mode [%safeboot_option%] " %Blue% "[Safe mode found. Run in normal mode.]"
924) 954)
925 955
926 956
927reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State" %nul2% | find /i "IMAGE_STATE_COMPLETE" %nul1% || ( 957for /f "skip=2 tokens=2*" %%A in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State" /v ImageState') do (set imagestate=%%B)
958if /i not "%imagestate%"=="IMAGE_STATE_COMPLETE" (
928set error=1 959set error=1
960call :dk_color %Red% "Checking Windows Setup State [%imagestate%]"
961echo "%imagestate%" | find /i "RESEAL" %nul% && (
929set showfix=1 962set showfix=1
930call :dk_color2 %Red% "Checking Audit Mode " %Blue% "[IMAGE_STATE_COMPLETE status not found. Run in normal mode.]" 963call :dk_color %Blue% "You need to run it in normal mode in case you are running it in Audit Mode."
964)
931) 965)
932 966
933 967
@@ -938,30 +972,58 @@ call :dk_color2 %Red% "Checking WinPE " %Blue% "[WinPE
938) 972)
939 973
940 974
941%psc% $ExecutionContext.SessionState.LanguageMode %nul2% | find /i "Full" %nul1% || ( 975set wpainfo=
976set wpaerror=
977for /f "delims=" %%a in ('%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':wpatest\:.*';iex ($f[1]);" %nul6%') do (set wpainfo=%%a)
978echo "%wpainfo%" | find /i "Error Found" %nul% && (
942set error=1 979set error=1
943call :dk_color %Red% "Checking Powershell [Not Responding]" 980set wpaerror=1
981call :dk_color %Red% "Checking WPA Registry Error [%wpainfo%]"
982) || (
983echo Checking WPA Registry Count [%wpainfo%]
944) 984)
945 985
946 986
947DISM /English /Online /Get-CurrentEdition %nul% 987DISM /English /Online /Get-CurrentEdition %nul%
948set dism_error=%errorlevel% 988set dism_error=%errorlevel%
949cmd /c exit /b %dism_error% 989cmd /c exit /b %dism_error%
950if %dism_error% NEQ 0 set "dism_error=[0x%=ExitCode%]" 990if %dism_error% NEQ 0 set "dism_error=0x%=ExitCode%"
951if %dism_error% NEQ 0 ( 991if %dism_error% NEQ 0 (
952call :dk_color %Red% "Checking DISM [Not Responding] %dism_error%" 992call :dk_color %Red% "Checking DISM [Not Responding] [%dism_error%]"
953) 993)
954 994
955 995
956if not defined officeact if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" ( 996if not defined officeact if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" (
957set error=1 997set error=1
998set showfix=1
958call :dk_color %Red% "Checking Eval Packages [Non-Eval Licenses are installed in Eval Windows]" 999call :dk_color %Red% "Checking Eval Packages [Non-Eval Licenses are installed in Eval Windows]"
959if /i %dism_error%==[0x800F0805] (
960for %%# in (4 125 126 188 191 205) do if "%osSKU%"=="%%#" (
961call :dk_color %Blue% "Evaluation Windows can not be activated and different License install may lead to errors." 1000call :dk_color %Blue% "Evaluation Windows can not be activated and different License install may lead to errors."
962call :dk_color %Blue% "It is recommended to install full version of %winos%." 1001call :dk_color %Blue% "It is recommended to install full version of %winos%."
963call :dk_color %Blue% "You can download it from %mas%genuine-installation-media.html" 1002call :dk_color %Blue% "You can download it from %mas%genuine-installation-media.html"
964set showfix=1 1003)
1004
1005
1006set osedition=
1007for /f "skip=2 tokens=3" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul6%') do set "osedition=%%a"
1008
1009:: Workaround for an issue in builds between 1607 and 1709 where ProfessionalEducation is shown as Professional
1010
1011if "%osSKU%"=="164" set osedition=ProfessionalEducation
1012if "%osSKU%"=="165" set osedition=ProfessionalEducationN
1013
1014if not defined officeact (
1015if not defined osedition (
1016call :dk_color %Red% "Checking Edition Name [Not Found In Registry]"
1017) else (
1018
1019if not exist "%SystemRoot%\System32\spp\tokens\skus\%osedition%\%osedition%*.xrm-ms" (
1020set error=1
1021call :dk_color %Red% "Checking License Files [Not Found] [%osedition%]"
1022)
1023
1024if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*-%osedition%-*.mum" (
1025set error=1
1026call :dk_color %Red% "Checking Package File [Not Found] [%osedition%]"
965) 1027)
966) 1028)
967) 1029)
@@ -1020,8 +1082,7 @@ call :dk_color2 %Red% "Checking ClipSVC " %Blue% "[System
1020for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "SkipRearm" %nul6%') do if /i %%b NEQ 0x0 ( 1082for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "SkipRearm" %nul6%') do if /i %%b NEQ 0x0 (
1021reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "SkipRearm" /t REG_DWORD /d "0" /f %nul% 1083reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "SkipRearm" /t REG_DWORD /d "0" /f %nul%
1022call :dk_color %Red% "Checking SkipRearm [Default 0 Value Not Found. Changing To 0]" 1084call :dk_color %Red% "Checking SkipRearm [Default 0 Value Not Found. Changing To 0]"
1023net stop sppsvc /y %nul% 1085%psc% Restart-Service sppsvc %nul%
1024net start sppsvc /y %nul%
1025set error=1 1086set error=1
1026) 1087)
1027 1088
@@ -1051,7 +1112,7 @@ call :dk_color %Gray% "Checking SPP Token Folder [Not Found. Creat
1051 1112
1052call :dk_actids 1113call :dk_actids
1053if not defined applist ( 1114if not defined applist (
1054net stop sppsvc /y %nul% 1115%psc% Stop-Service sppsvc %nul%
1055cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% 1116cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul%
1056if !errorlevel! NEQ 0 cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% 1117if !errorlevel! NEQ 0 cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul%
1057call :dk_refresh 1118call :dk_refresh
@@ -1076,25 +1137,9 @@ call :dk_color %Red% "Checking sppsvc.exe File [Not Found]"
1076) 1137)
1077 1138
1078 1139
1079:: Below checks are performed if required services are not disabled or corrupted + if there is any error + slmgr /dlv errorlevel is not Zero + no fix was shown before 1140:: This code checks if NT SERVICE\sppsvc has permission access to tokens folder and required registry keys. It's often caused by gaming spoofers.
1080 1141
1081set wpaerror=
1082set permerror= 1142set permerror=
1083if not defined serv_cor if not defined serv_cste if defined error if /i not %error_code%==0 if not defined showfix (
1084
1085REM This code checks for invalid registry keys in HKLM\SYSTEM\WPA. This issue may appear even on healthy systems.
1086
1087if %winbuild% GEQ 14393 (
1088set /a count=0
1089for /f %%a in ('reg query "HKLM\SYSTEM\WPA" %nul6%') do set /a count+=1
1090for /L %%# in (1,1,!count!) do (
1091reg query "HKLM\SYSTEM\WPA\8DEC0AF1-0341-4b93-85CD-72606C2DF94C-7P-%%#" /ve /t REG_BINARY %nul% || set wpaerror=1
1092)
1093if defined wpaerror call :dk_color %Red% "Checking WPA Registry Keys [Error Found] [Registry Count - !count!]"
1094)
1095
1096REM This code checks if NT SERVICE\sppsvc has permission access to tokens folder and required registry keys. It's often caused by gaming spoofers.
1097
1098if not exist "%tokenstore%\" set permerror=1 1143if not exist "%tokenstore%\" set permerror=1
1099 1144
1100for %%# in ( 1145for %%# in (
@@ -1105,15 +1150,65 @@ for %%# in (
1105%psc% "$acl = Get-Acl '%%#'; if ($acl.Access.Where{ $_.IdentityReference -eq 'NT SERVICE\sppsvc' -and $_.AccessControlType -eq 'Deny' -or $acl.Access.IdentityReference -notcontains 'NT SERVICE\sppsvc'}) {Exit 2}" %nul% 1150%psc% "$acl = Get-Acl '%%#'; if ($acl.Access.Where{ $_.IdentityReference -eq 'NT SERVICE\sppsvc' -and $_.AccessControlType -eq 'Deny' -or $acl.Access.IdentityReference -notcontains 'NT SERVICE\sppsvc'}) {Exit 2}" %nul%
1106if !errorlevel!==2 set permerror=1 1151if !errorlevel!==2 set permerror=1
1107) 1152)
1108if defined permerror call :dk_color %Red% "Checking SPP Permissions [Error Found]" 1153if defined permerror (
1154set error=1
1155set showfix=1
1156call :dk_color %Red% "Checking SPP Permissions [Error Found]"
1157call :dk_color %Blue% "%_fixmsg%"
1158)
1159
1109 1160
1161:: If required services are not disabled or corrupted + if there is any error + slmgr /dlv errorlevel is not Zero + no fix was shown before
1162
1163if not defined serv_cor if not defined serv_cste if defined error if /i not %error_code%==0 if not defined showfix (
1110set showfix=1 1164set showfix=1
1111call :dk_color %Blue% "%_fixmsg%" 1165call :dk_color %Blue% "%_fixmsg%"
1112if not defined permerror call :dk_color %Blue% "If activation still fails then run Fix WPA Registry option." 1166if not defined permerror call :dk_color %Blue% "If activation still fails then run Fix WPA Registry option."
1113) 1167)
1114 1168
1169if not defined showfix if defined wpaerror (
1170set showfix=1
1171call :dk_color %Blue% "If activation fails then go back to Main Menu, select Troubleshoot and run Fix WPA Registry option."
1172)
1173
1115exit /b 1174exit /b
1116 1175
1176:: This code checks for invalid registry keys in HKLM\SYSTEM\WPA. This issue may appear even on healthy systems
1177
1178:wpatest:
1179$wpaKey = [Microsoft.Win32.RegistryKey]::OpenBaseKey('LocalMachine', 'Registry64').OpenSubKey("SYSTEM\\WPA")
1180$count = $wpaKey.SubKeyCount
1181
1182$osVersion = [System.Environment]::OSVersion.Version
1183$minBuildNumber = 14393
1184
1185if ($osVersion.Build -ge $minBuildNumber) {
1186 $subkeyHashTable = @{}
1187 foreach ($subkeyName in $wpaKey.GetSubKeyNames()) {
1188 $keyNumber = $subkeyName -replace '.*-', ''
1189 $subkeyHashTable[$keyNumber] = $true
1190 }
1191 for ($i=1; $i -le $count; $i++) {
1192 if (-not $subkeyHashTable.ContainsKey("$i")) {
1193 Write-Host "Total Keys $count. Error Found- $i key does not exist"
1194 $wpaKey.Close()
1195 exit
1196 }
1197 }
1198}
1199$wpaKey.GetSubKeyNames() | ForEach-Object {
1200 $subkey = $wpaKey.OpenSubKey($_)
1201 $p = $subkey.GetValueNames()
1202 if (($p | Where-Object { $subkey.GetValueKind($_) -eq [Microsoft.Win32.RegistryValueKind]::Binary }).Count -eq 0) {
1203 Write-Host "Total Keys $count. Error Found- Binary Data is corrupt"
1204 $wpaKey.Close()
1205 exit
1206 }
1207}
1208$count
1209$wpaKey.Close()
1210:wpatest:
1211
1117::======================================================================================================================================== 1212::========================================================================================================================================
1118 1213
1119:dk_color 1214:dk_color
@@ -1162,47 +1257,49 @@ exit /b
1162 1257
1163set f= 1258set f=
1164for %%# in ( 1259for %%# in (
11658b351c9c-f398-4515-9900-09df49427262_XGV%f%PP-NM%f%H47-7TT%f%HJ-W3%f%FW7-8H%f%V2C___4_X19-99683_HGNKjkKcKQHO6n8srMUrDh/MElffBZarLqCMD9rWtgFKf3YzYOLDPEMGhuO/auNMKCeiU7ebFbQALS/MyZ7TvidMQ2dvzXeXXKzPBjfwQx549WJUU7qAQ9Txg9cR9SAT8b12Pry2iBk+nZWD9VtHK3kOnEYkvp5WTCTsrSi6Re4_0_OEM:NONSLP_Enterprise 12608b351c9c-f398-4515-9900-09df49427262_XG%f%VPP-NMH%f%47-7T%f%THJ-W3F%f%W7-8H%f%V2C___4_X19-99683_HGNKjkKcKQHO6n8srMUrDh/MElffBZarLqCMD9rWtgFKf3YzYOLDPEMGhuO/auNMKCeiU7ebFbQALS/MyZ7TvidMQ2dvzXeXXKzPBjfwQx549WJUU7qAQ9Txg9cR9SAT8b12Pry2iBk+nZWD9VtHK3kOnEYkvp5WTCTsrSi6Re4_0_OEM:NONSLP_Enterprise
1166c83cef07-6b72-4bbc-a28f-a00386872839_3V6%f%Q6-NQ%f%XCX-V8Y%f%XR-9Q%f%CYV-QP%f%FCT__27_X19-98746_NHn2n0N1UfVf00CfaI5LCDMDsKdVAWpD/HAfUrcTAKsw9d2Sks4h5MhyH/WUx+B6dFi8ol7D3AHorR8y9dqVS1Bd2FdZNJl/tTR1PGwYn6KL88NS19aHmFNdX8s4438vaa+Ty8Qk8EDcwm/wscC8lQmi3/RgUKYdyGFvpbGSVlk_0_Volume:MAK_EnterpriseN 1261c83cef07-6b72-4bbc-a28f-a00386872839_3V%f%6Q6-NQX%f%CX-V8%f%YXR-9QC%f%YV-QP%f%FCT__27_X19-98746_NHn2n0N1UfVf00CfaI5LCDMDsKdVAWpD/HAfUrcTAKsw9d2Sks4h5MhyH/WUx+B6dFi8ol7D3AHorR8y9dqVS1Bd2FdZNJl/tTR1PGwYn6KL88NS19aHmFNdX8s4438vaa+Ty8Qk8EDcwm/wscC8lQmi3/RgUKYdyGFvpbGSVlk_0_Volume:MAK_EnterpriseN
11674de7cb65-cdf1-4de9-8ae8-e3cce27b9f2c_VK7%f%JG-NP%f%HTM-C97%f%JM-9M%f%PGT-3V%f%66T__48_X19-98841_Yl/jNfxJ1SnaIZCIZ4m6Pf3ySNoQXifNeqfltNaNctx+onwiivOx7qcSn8dFtURzgMzSOFnsRQzb5IrvuqHoxWWl1S3JIQn56FvKsvSx7aFXIX3+2Q98G1amPV/WEQ0uHA5d7Ya6An+g0Z0zRP7evGoomTs4YuweaWiZQjQzSpA_0_____Retail_Professional 12624de7cb65-cdf1-4de9-8ae8-e3cce27b9f2c_VK%f%7JG-NPH%f%TM-C9%f%7JM-9MP%f%GT-3V%f%66T__48_X19-98841_Yl/jNfxJ1SnaIZCIZ4m6Pf3ySNoQXifNeqfltNaNctx+onwiivOx7qcSn8dFtURzgMzSOFnsRQzb5IrvuqHoxWWl1S3JIQn56FvKsvSx7aFXIX3+2Q98G1amPV/WEQ0uHA5d7Ya6An+g0Z0zRP7evGoomTs4YuweaWiZQjQzSpA_0_____Retail_Professional
11689fbaf5d6-4d83-4422-870d-fdda6e5858aa_2B8%f%7N-8K%f%FHP-DKV%f%6R-Y2%f%C8J-PK%f%CKT__49_X19-98859_Ge0mRQbW8ALk7T09V+1k1yg66qoS0lhkgPIROOIOgxKmWPAvsiLAYPKDqM4+neFCA/qf1dHFmdh0VUrwFBPYsK251UeWuElj4bZFVISL6gUt1eZwbGfv5eurQ0i+qZiFv+CcQOEFsd5DD4Up6xPLLQS3nAXODL5rSrn2sHRoCVY_0_____Retail_ProfessionalN 12639fbaf5d6-4d83-4422-870d-fdda6e5858aa_2B%f%87N-8KF%f%HP-DK%f%V6R-Y2C%f%8J-PK%f%CKT__49_X19-98859_Ge0mRQbW8ALk7T09V+1k1yg66qoS0lhkgPIROOIOgxKmWPAvsiLAYPKDqM4+neFCA/qf1dHFmdh0VUrwFBPYsK251UeWuElj4bZFVISL6gUt1eZwbGfv5eurQ0i+qZiFv+CcQOEFsd5DD4Up6xPLLQS3nAXODL5rSrn2sHRoCVY_0_____Retail_ProfessionalN
1169f742e4ff-909d-4fe9-aacb-3231d24a0c58_4CP%f%RK-NM%f%3K3-X6X%f%XQ-RX%f%X86-WX%f%CHW__98_X19-98877_vel4ytVtnE8FhvN87Cflz9sbh5QwHD1YGOeej9QP7hF3vlBR4EX2/S/09gRneeXVbQnjDOCd2KFMKRUWHLM7ZhFBk8AtlG+kvUawPZ+CIrwrD3mhi7NMv8UX/xkLK3HnBupMEuEwsMJgCUD8Pn6om1mEiQebHBAqu4cT7GN9Y0g_0_____Retail_CoreN 1264f742e4ff-909d-4fe9-aacb-3231d24a0c58_4C%f%PRK-NM3%f%K3-X6%f%XXQ-RXX%f%86-WX%f%CHW__98_X19-98877_vel4ytVtnE8FhvN87Cflz9sbh5QwHD1YGOeej9QP7hF3vlBR4EX2/S/09gRneeXVbQnjDOCd2KFMKRUWHLM7ZhFBk8AtlG+kvUawPZ+CIrwrD3mhi7NMv8UX/xkLK3HnBupMEuEwsMJgCUD8Pn6om1mEiQebHBAqu4cT7GN9Y0g_0_____Retail_CoreN
11701d1bac85-7365-4fea-949a-96978ec91ae0_N24%f%34-X9%f%D7W-8PF%f%6X-8D%f%V9T-8T%f%YMD__99_X19-99652_Nv17eUTrr1TmUX6frlI7V69VR6yWb7alppCFJPcdjfI+xX4/Cf2np3zm7jmC+zxFb9nELUs477/ydw2KCCXFfM53bKpBQZKHE5+MdGJGxebOCcOtJ3hrkDJtwlVxTQmUgk5xnlmpk8PHg82M2uM5B7UsGLxGKK4d3hi0voSyKeI_0_____Retail_CoreCountrySpecific 12651d1bac85-7365-4fea-949a-96978ec91ae0_N2%f%434-X9D%f%7W-8P%f%F6X-8DV%f%9T-8T%f%YMD__99_X19-99652_Nv17eUTrr1TmUX6frlI7V69VR6yWb7alppCFJPcdjfI+xX4/Cf2np3zm7jmC+zxFb9nELUs477/ydw2KCCXFfM53bKpBQZKHE5+MdGJGxebOCcOtJ3hrkDJtwlVxTQmUgk5xnlmpk8PHg82M2uM5B7UsGLxGKK4d3hi0voSyKeI_0_____Retail_CoreCountrySpecific
11713ae2cc14-ab2d-41f4-972f-5e20142771dc_BT7%f%9Q-G7%f%N6G-PGB%f%YW-4Y%f%WX6-6F%f%4BT_100_X19-99661_FV2Eao/R5v8sGrfQeOjQ4daokVlNOlqRCDZXuaC45bQd5PsNU3t1b4AwWeYM8TAwbHauzr4tPG0UlsUqUikCZHy0poROx35bBBMBym6Zbm9wDBVyi7nCzBtwS86eOonQ3cU6WfZxhZRze0POdR33G3QTNPrnVIM2gf6nZJYqDOA_0_____Retail_CoreSingleLanguage 12663ae2cc14-ab2d-41f4-972f-5e20142771dc_BT%f%79Q-G7N%f%6G-PG%f%BYW-4YW%f%X6-6F%f%4BT_100_X19-99661_FV2Eao/R5v8sGrfQeOjQ4daokVlNOlqRCDZXuaC45bQd5PsNU3t1b4AwWeYM8TAwbHauzr4tPG0UlsUqUikCZHy0poROx35bBBMBym6Zbm9wDBVyi7nCzBtwS86eOonQ3cU6WfZxhZRze0POdR33G3QTNPrnVIM2gf6nZJYqDOA_0_____Retail_CoreSingleLanguage
11722b1f36bb-c1cd-4306-bf5c-a0367c2d97d8_YTM%f%G3-N6%f%DKC-DKB%f%77-7M%f%9GH-8H%f%VX7_101_X19-98868_GH/jwFxIcdQhNxJIlFka8c1H48PF0y7TgJwaryAUzqSKXynONLw7MVciDJFVXTkCjbXSdxLSWpPIC50/xyy1rAf8aC7WuN/9cRNAvtFPC1IVAJaMeq1vf4mCqRrrxJQP6ZEcuAeHFzLe/LLovGWCd8rrs6BbBwJXCvAqXImvycQ_0_____Retail_Core 12672b1f36bb-c1cd-4306-bf5c-a0367c2d97d8_YT%f%MG3-N6D%f%KC-DK%f%B77-7M9%f%GH-8H%f%VX7_101_X19-98868_GH/jwFxIcdQhNxJIlFka8c1H48PF0y7TgJwaryAUzqSKXynONLw7MVciDJFVXTkCjbXSdxLSWpPIC50/xyy1rAf8aC7WuN/9cRNAvtFPC1IVAJaMeq1vf4mCqRrrxJQP6ZEcuAeHFzLe/LLovGWCd8rrs6BbBwJXCvAqXImvycQ_0_____Retail_Core
11732a6137f3-75c0-4f26-8e3e-d83d802865a4_XKC%f%NC-J2%f%6Q9-KFH%f%D2-FK%f%THY-KD%f%72Y_119_X19-99606_hci78IRWDLBtdbnAIKLDgV9whYgtHc1uYyp9y6FszE9wZBD5Nc8CUD2pI2s2RRd3M04C4O7M3tisB3Ov/XVjpAbxlX3MWfUR5w4MH0AphbuQX0p5MuHEDYyfqlRgBBRzOKePF06qfYvPQMuEfDpKCKFwNojQxBV8O0Arf5zmrIw_0_OEM:NONSLP_PPIPro 12682a6137f3-75c0-4f26-8e3e-d83d802865a4_XK%f%CNC-J26%f%Q9-KF%f%HD2-FKT%f%HY-KD%f%72Y_119_X19-99606_hci78IRWDLBtdbnAIKLDgV9whYgtHc1uYyp9y6FszE9wZBD5Nc8CUD2pI2s2RRd3M04C4O7M3tisB3Ov/XVjpAbxlX3MWfUR5w4MH0AphbuQX0p5MuHEDYyfqlRgBBRzOKePF06qfYvPQMuEfDpKCKFwNojQxBV8O0Arf5zmrIw_0_OEM:NONSLP_PPIPro
1174e558417a-5123-4f6f-91e7-385c1c7ca9d4_YNM%f%GQ-8R%f%YV3-4PG%f%Q3-C8%f%XTP-7C%f%FBY_121_X19-98886_x9tPFDZmjZMf29zFeHV5SHbXj8Wd8YAcCn/0hbpLcId4D7OWqkQKXxXHIegRlwcWjtII0sZ6WYB0HQV2KH3LvYRnWKpJ5SxeOgdzBIJ6fhegYGGyiXsBv9sEb3/zidPU6ZK9LugVGAcRZ6HQOiXyOw+Yf5H35iM+2oDZXSpjvJw_0_____Retail_Education 1269e558417a-5123-4f6f-91e7-385c1c7ca9d4_YN%f%MGQ-8RY%f%V3-4P%f%GQ3-C8X%f%TP-7C%f%FBY_121_X19-98886_x9tPFDZmjZMf29zFeHV5SHbXj8Wd8YAcCn/0hbpLcId4D7OWqkQKXxXHIegRlwcWjtII0sZ6WYB0HQV2KH3LvYRnWKpJ5SxeOgdzBIJ6fhegYGGyiXsBv9sEb3/zidPU6ZK9LugVGAcRZ6HQOiXyOw+Yf5H35iM+2oDZXSpjvJw_0_____Retail_Education
1175c5198a66-e435-4432-89cf-ec777c9d0352_84N%f%GF-MH%f%BT6-FXB%f%X8-QW%f%JK7-DR%f%R8H_122_X19-98892_jkL4YZkmBCJtvL1fT30ZPBcjmzshBSxjwrE0Q00AZ1hYnhrH+npzo1MPCT6ZRHw19ZLTz7wzyBb0qqcBVbtEjZW0Xs2MYLxgriyoONkhnPE6KSUJBw7C0enFVLHEqnVu/nkaOFfockN3bc+Eouw6W2lmHjklPHc9c6Clo04jul0_0_____Retail_EducationN 1270c5198a66-e435-4432-89cf-ec777c9d0352_84%f%NGF-MHB%f%T6-FX%f%BX8-QWJ%f%K7-DR%f%R8H_122_X19-98892_jkL4YZkmBCJtvL1fT30ZPBcjmzshBSxjwrE0Q00AZ1hYnhrH+npzo1MPCT6ZRHw19ZLTz7wzyBb0qqcBVbtEjZW0Xs2MYLxgriyoONkhnPE6KSUJBw7C0enFVLHEqnVu/nkaOFfockN3bc+Eouw6W2lmHjklPHc9c6Clo04jul0_0_____Retail_EducationN
1176f6e29426-a256-4316-88bf-cc5b0f95ec0c_PJB%f%47-8P%f%N2T-MCG%f%DY-JT%f%Y3D-CB%f%CPV_125_X23-50331_OPGhsyx+Ctw7w/KLMRNrY+fNBmKPjUG0R9RqkWk4e8ez+ExSJxSLLex5WhO5QSNgXLmEra+cCsN6C638aLjIdH2/L7D+8z/C6EDgRvbHMmidHg1lX3/O8lv0JudHkGtHJYewjorn/xXGY++vOCTQdZNk6qzEgmYSvPehKfdg8js_1_Volume:MAK_EnterpriseS_Ge 1271f6e29426-a256-4316-88bf-cc5b0f95ec0c_PJ%f%B47-8PN%f%2T-MC%f%GDY-JTY%f%3D-CB%f%CPV_125_X23-50331_OPGhsyx+Ctw7w/KLMRNrY+fNBmKPjUG0R9RqkWk4e8ez+ExSJxSLLex5WhO5QSNgXLmEra+cCsN6C638aLjIdH2/L7D+8z/C6EDgRvbHMmidHg1lX3/O8lv0JudHkGtHJYewjorn/xXGY++vOCTQdZNk6qzEgmYSvPehKfdg8js_1_Volume:MAK_EnterpriseS_Ge
1177cce9d2de-98ee-4ce2-8113-222620c64a27_KCN%f%VH-YK%f%WX8-GJJ%f%B9-H9%f%FDT-6F%f%7W2_125_X22-66075_GCqWmJOsTVun9z4QkE9n2XqBvt3ZWSPl9QmIh9Q2mXMG/QVt2IE7S+ES/NWlyTSNjLVySr1D2sGjxgEzy9kLwn7VENQVJ736h1iOdMj/3rdqLMSpTa813+nPSQgKpqJ3uMuvIvRP0FdB7Y4qt8qf9kNKK25A1QknioD/6YubL/4_1_Volume:MAK_EnterpriseS_VB 1272cce9d2de-98ee-4ce2-8113-222620c64a27_KC%f%NVH-YKW%f%X8-GJ%f%JB9-H9F%f%DT-6F%f%7W2_125_X22-66075_GCqWmJOsTVun9z4QkE9n2XqBvt3ZWSPl9QmIh9Q2mXMG/QVt2IE7S+ES/NWlyTSNjLVySr1D2sGjxgEzy9kLwn7VENQVJ736h1iOdMj/3rdqLMSpTa813+nPSQgKpqJ3uMuvIvRP0FdB7Y4qt8qf9kNKK25A1QknioD/6YubL/4_1_Volume:MAK_EnterpriseS_VB
1178d06934ee-5448-4fd1-964a-cd077618aa06_43T%f%BQ-NH%f%92J-XKT%f%M7-KT%f%3KK-P3%f%9PB_125_X21-83233_EpB6qOCo8pRgO5kL4vxEHck2J1vxyd9OqvxUenDnYO9AkcGWat/D74ZcFg5SFlIya1U8l5zv+tsvZ4wAvQ1IaFW1PwOKJLOaGgejqZ41TIMdFGGw+G+s1RHsEnrWr3UOakTodby1aIMUMoqf3NdaM5aWFo8fOmqWC5/LnCoighs_0_OEM:NONSLP_EnterpriseS_RS5 1273d06934ee-5448-4fd1-964a-cd077618aa06_43%f%TBQ-NH9%f%2J-XK%f%TM7-KT3%f%KK-P3%f%9PB_125_X21-83233_EpB6qOCo8pRgO5kL4vxEHck2J1vxyd9OqvxUenDnYO9AkcGWat/D74ZcFg5SFlIya1U8l5zv+tsvZ4wAvQ1IaFW1PwOKJLOaGgejqZ41TIMdFGGw+G+s1RHsEnrWr3UOakTodby1aIMUMoqf3NdaM5aWFo8fOmqWC5/LnCoighs_0_OEM:NONSLP_EnterpriseS_RS5
1179706e0cfd-23f4-43bb-a9af-1a492b9f1302_NK9%f%6Y-D9%f%CD8-W44%f%CQ-R8%f%YTK-DY%f%JWX_125_X21-05035_ntcKmazIvLpZOryft28gWBHu1nHSbR+Gp143f/BiVe+BD2UjHBZfSR1q405xmQZsygz6VRK6+zm8FPR++71pkmArgCLhodCQJ5I4m7rAJNw/YX99pILphi1yCRcvHsOTGa825GUVXgf530tHT6hr0HQ1lGeGgG1hPekpqqBbTlg_0_OEM:NONSLP_EnterpriseS_RS1 1274706e0cfd-23f4-43bb-a9af-1a492b9f1302_NK%f%96Y-D9C%f%D8-W4%f%4CQ-R8Y%f%TK-DY%f%JWX_125_X21-05035_ntcKmazIvLpZOryft28gWBHu1nHSbR+Gp143f/BiVe+BD2UjHBZfSR1q405xmQZsygz6VRK6+zm8FPR++71pkmArgCLhodCQJ5I4m7rAJNw/YX99pILphi1yCRcvHsOTGa825GUVXgf530tHT6hr0HQ1lGeGgG1hPekpqqBbTlg_0_OEM:NONSLP_EnterpriseS_RS1
1180faa57748-75c8-40a2-b851-71ce92aa8b45_FWN%f%7H-PF%f%93Q-4GG%f%P8-M8%f%RF3-MD%f%WWW_125_X19-99617_Fe9CDClilrAmwwT7Yhfx67GafWRQEpwyj8R+a4eaTqbpPcAt7d1hv1rx8Sa9AzopEGxIrb7IhiPoDZs0XaT1HN0/olJJ/MnD73CfBP4sdQdLTsSJE3dKMWYTQHpnjqRaS/pNBYRr8l9Mv8yfcP8uS2MjIQ1cRTqRmC7WMpShyCg_0_OEM:NONSLP_EnterpriseS_TH 1275faa57748-75c8-40a2-b851-71ce92aa8b45_FW%f%N7H-PF9%f%3Q-4G%f%GP8-M8R%f%F3-MD%f%WWW_125_X19-99617_Fe9CDClilrAmwwT7Yhfx67GafWRQEpwyj8R+a4eaTqbpPcAt7d1hv1rx8Sa9AzopEGxIrb7IhiPoDZs0XaT1HN0/olJJ/MnD73CfBP4sdQdLTsSJE3dKMWYTQHpnjqRaS/pNBYRr8l9Mv8yfcP8uS2MjIQ1cRTqRmC7WMpShyCg_0_OEM:NONSLP_EnterpriseS_TH
1181837766ff-61c5-427d-87c3-a2acbd44767a_XFC%f%77-XN%f%RXM-2Q3%f%6W-FC%f%M9T-YH%f%DJ9_126_X23-50304_h6V6Q4DL/hlvcD3GyVxrVfP1BEL4a5TdyNCMlbq/OZnky/HowuRAcHMpN59fwqLS98+7WEDooWCrxriXcATwo0fwOGs/fEfP/Pa5SKP+Xnng1eoPm1PkjuZaqA8p2dPQv32wJ0u3QW7VMQM9BzzpyqtNAsqNS/wl7vfN7tyLbDo_1_Volume:MAK_EnterpriseSN_Ge 1276837766ff-61c5-427d-87c3-a2acbd44767a_XF%f%C77-XNR%f%XM-2Q%f%36W-FCM%f%9T-YH%f%DJ9_126_X23-50304_h6V6Q4DL/hlvcD3GyVxrVfP1BEL4a5TdyNCMlbq/OZnky/HowuRAcHMpN59fwqLS98+7WEDooWCrxriXcATwo0fwOGs/fEfP/Pa5SKP+Xnng1eoPm1PkjuZaqA8p2dPQv32wJ0u3QW7VMQM9BzzpyqtNAsqNS/wl7vfN7tyLbDo_1_Volume:MAK_EnterpriseSN_Ge
11822c060131-0e43-4e01-adc1-cf5ad1100da8_RQF%f%NW-9T%f%PM3-JQ7%f%3T-QV%f%4VQ-DV%f%9PT_126_X22-66108_w/HFPDNCz4EogszDYZ8xUJh8aylfpgh6gzm9k8JSteprY5UumLc5n6KUwiSE3/5NaiI9gZ3xmTJq+g1OSPsdGwhuA+8LA2pQhA+wU8VO/ZaYxe1T4WF6oip/c0n6xA1sx/mWYNwd/WBDJpslTw5NRNLc5wWh0FV5RtxCaXE07lM_1_Volume:MAK_EnterpriseSN_VB 12772c060131-0e43-4e01-adc1-cf5ad1100da8_RQ%f%FNW-9TP%f%M3-JQ%f%73T-QV4%f%VQ-DV%f%9PT_126_X22-66108_w/HFPDNCz4EogszDYZ8xUJh8aylfpgh6gzm9k8JSteprY5UumLc5n6KUwiSE3/5NaiI9gZ3xmTJq+g1OSPsdGwhuA+8LA2pQhA+wU8VO/ZaYxe1T4WF6oip/c0n6xA1sx/mWYNwd/WBDJpslTw5NRNLc5wWh0FV5RtxCaXE07lM_1_Volume:MAK_EnterpriseSN_VB
1183e8f74caa-03fb-4839-8bcc-2e442b317e53_M33%f%WV-NH%f%Y3C-R7F%f%PM-BQ%f%GPT-23%f%9PG_126_X21-83264_Fl7tjifybEI9hArxMVFKqIqmI6mrCZy4EtJyVjpo2eSfeMTBli55+E0i2AaPfE2FJknUig7HuiNC1Pu2IWZcj5ShVFQEKPY6K//RucX8oPQfh0zK5r1aNJNvV4gMlqvOyGD8sXttLBZv8wg1w/++cNk/z38DE2shiDf7LYnK4w0_1_Volume:MAK_EnterpriseSN_RS5 1278e8f74caa-03fb-4839-8bcc-2e442b317e53_M3%f%3WV-NHY%f%3C-R7%f%FPM-BQG%f%PT-23%f%9PG_126_X21-83264_Fl7tjifybEI9hArxMVFKqIqmI6mrCZy4EtJyVjpo2eSfeMTBli55+E0i2AaPfE2FJknUig7HuiNC1Pu2IWZcj5ShVFQEKPY6K//RucX8oPQfh0zK5r1aNJNvV4gMlqvOyGD8sXttLBZv8wg1w/++cNk/z38DE2shiDf7LYnK4w0_1_Volume:MAK_EnterpriseSN_RS5
11843d1022d8-969f-4222-b54b-327f5a5af4c9_2DB%f%W3-N2%f%PJG-MVH%f%W3-G7%f%TDK-9H%f%KR4_126_X21-04921_zLPNvcl1iqOefy0VLg+WZgNtRNhuGpn8+BFKjMqjaNOSKiuDcR6GNDS5FF1Aqk6/e6shJ+ohKzuwrnmYq3iNQ3I2MBlYjM5kuNfKs8Vl9dCjSpQr//GBGps6HtF2xrG/2g/yhtYC7FbtGDIE16uOeNKFcVg+XMb0qHE/5Etyfd8_0_Volume:MAK_EnterpriseSN_RS1 12793d1022d8-969f-4222-b54b-327f5a5af4c9_2D%f%BW3-N2P%f%JG-MV%f%HW3-G7T%f%DK-9H%f%KR4_126_X21-04921_zLPNvcl1iqOefy0VLg+WZgNtRNhuGpn8+BFKjMqjaNOSKiuDcR6GNDS5FF1Aqk6/e6shJ+ohKzuwrnmYq3iNQ3I2MBlYjM5kuNfKs8Vl9dCjSpQr//GBGps6HtF2xrG/2g/yhtYC7FbtGDIE16uOeNKFcVg+XMb0qHE/5Etyfd8_0_Volume:MAK_EnterpriseSN_RS1
118560c243e1-f90b-4a1b-ba89-387294948fb6_NTX%f%6B-BR%f%YC2-K67%f%86-F6%f%MVQ-M7%f%V2X_126_X19-98770_kbXfe0z9Vi1S0yfxMWzI5+UtWsJKzxs7wLGUDLjrckFDn1bDQb4MvvuCK1w+Qrq33lemiGpNDspa+ehXiYEeSPFcCvUBpoMlGBFfzurNCHWiv3o1k3jBoawJr/VoDoVZfxhkps0fVoubf9oy6C6AgrkZ7PjCaS58edMcaUWvYYg_0_Volume:MAK_EnterpriseSN_TH 128060c243e1-f90b-4a1b-ba89-387294948fb6_NT%f%X6B-BRY%f%C2-K6%f%786-F6M%f%VQ-M7%f%V2X_126_X19-98770_kbXfe0z9Vi1S0yfxMWzI5+UtWsJKzxs7wLGUDLjrckFDn1bDQb4MvvuCK1w+Qrq33lemiGpNDspa+ehXiYEeSPFcCvUBpoMlGBFfzurNCHWiv3o1k3jBoawJr/VoDoVZfxhkps0fVoubf9oy6C6AgrkZ7PjCaS58edMcaUWvYYg_0_Volume:MAK_EnterpriseSN_TH
118601eb852c-424d-4060-94b8-c10d799d7364_3XP%f%6D-CR%f%ND4-DRY%f%M2-GM%f%84D-4G%f%G8Y_139_X23-37869_PVW0XnRJnsWYjTqxb6StCi2tge/uUwegjdiFaFUiZpwdJ620RK+MIAsSq5S+egXXzIWNntoy2fB6BO8F1wBFmxP/mm/3rn5C33jtF5QrbNqY7X9HMbqSiC7zhs4v4u2Xa4oZQx8JQkwr8Q2c/NgHrOJKKRASsSckhunxZ+WVEuM_1_____Retail_ProfessionalCountrySpecific_Zn 128101eb852c-424d-4060-94b8-c10d799d7364_3X%f%P6D-CRN%f%D4-DR%f%YM2-GM8%f%4D-4G%f%G8Y_139_X23-37869_PVW0XnRJnsWYjTqxb6StCi2tge/uUwegjdiFaFUiZpwdJ620RK+MIAsSq5S+egXXzIWNntoy2fB6BO8F1wBFmxP/mm/3rn5C33jtF5QrbNqY7X9HMbqSiC7zhs4v4u2Xa4oZQx8JQkwr8Q2c/NgHrOJKKRASsSckhunxZ+WVEuM_1_____Retail_ProfessionalCountrySpecific_Zn
1187eb6d346f-1c60-4643-b960-40ec31596c45_DXG%f%7C-N3%f%6C4-C4H%f%TG-X4%f%T3X-2Y%f%V77_161_X21-43626_MaVqTkRrGnOqYizl15whCOKWzx01+BZTVAalvEuHXM+WV55jnIfhWmd/u1GqCd5OplqXdU959zmipK2Iwgu2nw/g91nW//sQiN/cUcvg1Lxo6pC3gAo1AjTpHmGIIf9XlZMYlD+Vl6gXsi/Auwh3yrSSFh5s7gOczZoDTqQwHXA_0_____Retail_ProfessionalWorkstation 1282eb6d346f-1c60-4643-b960-40ec31596c45_DX%f%G7C-N36%f%C4-C4%f%HTG-X4T%f%3X-2Y%f%V77_161_X21-43626_MaVqTkRrGnOqYizl15whCOKWzx01+BZTVAalvEuHXM+WV55jnIfhWmd/u1GqCd5OplqXdU959zmipK2Iwgu2nw/g91nW//sQiN/cUcvg1Lxo6pC3gAo1AjTpHmGIIf9XlZMYlD+Vl6gXsi/Auwh3yrSSFh5s7gOczZoDTqQwHXA_0_____Retail_ProfessionalWorkstation
118889e87510-ba92-45f6-8329-3afa905e3e83_WYP%f%NQ-8C%f%467-V2W%f%6J-TX%f%4WX-WT%f%2RQ_162_X21-43644_JVGQowLiCcPtGY9ndbBDV+rTu/q5ljmQTwQWZgBIQsrAeQjLD8jLEk/qse7riZ7tMT6PKFVNXeWqF7PhLAmACbE8O3Lvp65XMd/Oml9Daynj5/4n7unsffFHIHH8TGyO5j7xb4dkFNqC5TX3P8/1gQEkTIdZEOTQQXFu0L2SP5c_0_____Retail_ProfessionalWorkstationN 128389e87510-ba92-45f6-8329-3afa905e3e83_WY%f%PNQ-8C4%f%67-V2%f%W6J-TX4%f%WX-WT%f%2RQ_162_X21-43644_JVGQowLiCcPtGY9ndbBDV+rTu/q5ljmQTwQWZgBIQsrAeQjLD8jLEk/qse7riZ7tMT6PKFVNXeWqF7PhLAmACbE8O3Lvp65XMd/Oml9Daynj5/4n7unsffFHIHH8TGyO5j7xb4dkFNqC5TX3P8/1gQEkTIdZEOTQQXFu0L2SP5c_0_____Retail_ProfessionalWorkstationN
118962f0c100-9c53-4e02-b886-a3528ddfe7f6_8PT%f%T6-RN%f%W4C-6V7%f%J2-C2%f%D3X-MH%f%BPB_164_X21-04955_CEDgxI8f/fxMBiwmeXw5Of55DG32sbGALzHihXkdbYTDaE3pY37oAA4zwGHALzAFN/t254QImGPYR6hATgl+Cp804f7serJqiLeXY965Zy67I4CKIMBm49lzHLFJeDnVTjDB0wVyN29pvgO3+HLhZ22KYCpkRHFFMy2OKxS68Yc_0_____Retail_ProfessionalEducation 128462f0c100-9c53-4e02-b886-a3528ddfe7f6_8P%f%TT6-RNW%f%4C-6V%f%7J2-C2D%f%3X-MH%f%BPB_164_X21-04955_CEDgxI8f/fxMBiwmeXw5Of55DG32sbGALzHihXkdbYTDaE3pY37oAA4zwGHALzAFN/t254QImGPYR6hATgl+Cp804f7serJqiLeXY965Zy67I4CKIMBm49lzHLFJeDnVTjDB0wVyN29pvgO3+HLhZ22KYCpkRHFFMy2OKxS68Yc_0_____Retail_ProfessionalEducation
119013a38698-4a49-4b9e-8e83-98fe51110953_GJT%f%YN-HD%f%MQY-FRR%f%76-HV%f%GC7-QP%f%F8P_165_X21-04956_r35zp9OfxKSBcTxKWon3zFtbOiCufAPo6xRGY5DJqCRFKdB0jgZalNQitvjmaZ/Rlez2vjRJnEart4LrvyW4d9rrukAjR3+c3UkeTKwoD3qBl9AdRJbXCa2BdsoXJs1WVS4w4LuVzpB/SZDuggZt0F2DlMB427F5aflook/n1pY_0_____Retail_ProfessionalEducationN 128513a38698-4a49-4b9e-8e83-98fe51110953_GJ%f%TYN-HDM%f%QY-FR%f%R76-HVG%f%C7-QP%f%F8P_165_X21-04956_r35zp9OfxKSBcTxKWon3zFtbOiCufAPo6xRGY5DJqCRFKdB0jgZalNQitvjmaZ/Rlez2vjRJnEart4LrvyW4d9rrukAjR3+c3UkeTKwoD3qBl9AdRJbXCa2BdsoXJs1WVS4w4LuVzpB/SZDuggZt0F2DlMB427F5aflook/n1pY_0_____Retail_ProfessionalEducationN
1191df96023b-dcd9-4be2-afa0-c6c871159ebe_NJC%f%F7-PW%f%8QT-332%f%4D-68%f%8JX-2Y%f%V66_175_X21-41295_rVpetYUmiRB48YJfCvJHiaZapJ0bO8gQDRoql+rq5IobiSRu//efV1VXqVpBkwILQRKgKIVONSTUF5y2TSxlDLbDSPKp7UHfbz17g6vRKLwOameYEz0ZcK3NTbApN/cMljHvvF/mBag1+sHjWu+eoFzk8H89k9nw8LMeVOPJRDc_0_____Retail_ServerRdsh 1286df96023b-dcd9-4be2-afa0-c6c871159ebe_NJ%f%CF7-PW8%f%QT-33%f%24D-688%f%JX-2Y%f%V66_175_X21-41295_rVpetYUmiRB48YJfCvJHiaZapJ0bO8gQDRoql+rq5IobiSRu//efV1VXqVpBkwILQRKgKIVONSTUF5y2TSxlDLbDSPKp7UHfbz17g6vRKLwOameYEz0ZcK3NTbApN/cMljHvvF/mBag1+sHjWu+eoFzk8H89k9nw8LMeVOPJRDc_0_____Retail_ServerRdsh
1192d4ef7282-3d2c-4cf0-9976-8854e64a8d1e_V3W%f%VW-N2%f%PV2-CGW%f%C3-34%f%QGF-VM%f%J2C_178_X21-32983_Xzme9hDZR6H0Yx0deURVdE6LiTOkVqWng5W/OTbkxRc0rq+mSYpo/f/yqhtwYlrkBPWx16Yok5Bvcb34vbKHvEAtxfYp4te20uexLzVOtBcoeEozARv4W/6MhYfl+llZtR5efsktj4N4/G4sVbuGvZ9nzNfQO9TwV6NGgGEj2Ec_0_____Retail_Cloud 1287d4ef7282-3d2c-4cf0-9976-8854e64a8d1e_V3%f%WVW-N2P%f%V2-CG%f%WC3-34Q%f%GF-VM%f%J2C_178_X21-32983_Xzme9hDZR6H0Yx0deURVdE6LiTOkVqWng5W/OTbkxRc0rq+mSYpo/f/yqhtwYlrkBPWx16Yok5Bvcb34vbKHvEAtxfYp4te20uexLzVOtBcoeEozARv4W/6MhYfl+llZtR5efsktj4N4/G4sVbuGvZ9nzNfQO9TwV6NGgGEj2Ec_0_____Retail_Cloud
1193af5c9381-9240-417d-8d35-eb40cd03e484_NH9%f%J3-68%f%WK7-6FB%f%93-4K%f%3DF-DJ%f%4F6_179_X21-32987_QGRDZOU/VZhYLOSdp2xDnFs8HInNZctcQlWCIrORVnxTQr55IJwN4vK3PJHjkfRLQ/bgUrcEIhyFbANqZFUq8yD1YNubb2bjNORgI/m8u85O9V7nDGtxzO/viEBSWyEHnrzLKKWYqkRQKbbSW3ungaZR0Ti5O2mAUI4HzAFej50_0_____Retail_CloudN 1288af5c9381-9240-417d-8d35-eb40cd03e484_NH%f%9J3-68W%f%K7-6F%f%B93-4K3%f%DF-DJ%f%4F6_179_X21-32987_QGRDZOU/VZhYLOSdp2xDnFs8HInNZctcQlWCIrORVnxTQr55IJwN4vK3PJHjkfRLQ/bgUrcEIhyFbANqZFUq8yD1YNubb2bjNORgI/m8u85O9V7nDGtxzO/viEBSWyEHnrzLKKWYqkRQKbbSW3ungaZR0Ti5O2mAUI4HzAFej50_0_____Retail_CloudN
11948ab9bdd1-1f67-4997-82d9-8878520837d9_XQQ%f%YW-NF%f%FMW-XJP%f%BH-K8%f%732-CK%f%FFD_188_X21-99378_djy0od0uuKd2rrIl+V1/2+MeRltNgW7FEeTNQsPMkVSL75NBphgoso4uS0JPv2D7Y1iEEvmVq6G842Kyt52QOwXgFWmP/IQ6Sq1dr+fHK/4Et7bEPrrGBEZoCfWqk0kdcZRPBij2KN6qCRWhrk1hX2g+U40smx/EYCLGh9HCi24_0_____OEM:DM_IoTEnterprise 12898ab9bdd1-1f67-4997-82d9-8878520837d9_XQ%f%QYW-NFF%f%MW-XJ%f%PBH-K87%f%32-CK%f%FFD_188_X21-99378_djy0od0uuKd2rrIl+V1/2+MeRltNgW7FEeTNQsPMkVSL75NBphgoso4uS0JPv2D7Y1iEEvmVq6G842Kyt52QOwXgFWmP/IQ6Sq1dr+fHK/4Et7bEPrrGBEZoCfWqk0kdcZRPBij2KN6qCRWhrk1hX2g+U40smx/EYCLGh9HCi24_0_____OEM:DM_IoTEnterprise
1195ed655016-a9e8-4434-95d9-4345352c2552_QPM%f%6N-7J%f%2WJ-P88%f%HH-P3%f%YRH-YY%f%74H_191_X21-99682_qHs/PzfhYWdtSys2edzcz4h+Qs8aDqb8BIiQ/mJ/+0uyoJh1fitbRCIgiFh2WAGZXjdgB8hZeheNwHibd8ChXaXg4u+0XlOdFlaDTgTXblji8fjETzDBk9aGkeMCvyVXRuUYhTSdp83IqGHz7XuLwN2p/6AUArx9JZCoLGV8j3w_0_OEM:NONSLP_IoTEnterpriseS_VB 1290ed655016-a9e8-4434-95d9-4345352c2552_QP%f%M6N-7J2%f%WJ-P8%f%8HH-P3Y%f%RH-YY%f%74H_191_X21-99682_qHs/PzfhYWdtSys2edzcz4h+Qs8aDqb8BIiQ/mJ/+0uyoJh1fitbRCIgiFh2WAGZXjdgB8hZeheNwHibd8ChXaXg4u+0XlOdFlaDTgTXblji8fjETzDBk9aGkeMCvyVXRuUYhTSdp83IqGHz7XuLwN2p/6AUArx9JZCoLGV8j3w_0_OEM:NONSLP_IoTEnterpriseS_VB
11966c4de1b8-24bb-4c17-9a77-7b939414c298_CGK%f%42-GY%f%N6Y-VD2%f%2B-BX%f%98W-J8%f%JXD_191_X23-12617_J/fpIRynsVQXbp4qZNKp6RvOgZ/P2klILUKQguMlcwrBZybwNkHg/kM5LNOF/aDzEktbPnLnX40GEvKkYT6/qP4cMhn/SOY0/hYOkIdR34ilzNlVNq5xP7CMjCjaUYJe+6ydHPK6FpOuEoWOYYP5BZENKNGyBy4w4shkMAw19mA_0_OEM:NONSLP_IoTEnterpriseS_Ge 12916c4de1b8-24bb-4c17-9a77-7b939414c298_CG%f%K42-GYN%f%6Y-VD%f%22B-BX9%f%8W-J8%f%JXD_191_X23-12617_J/fpIRynsVQXbp4qZNKp6RvOgZ/P2klILUKQguMlcwrBZybwNkHg/kM5LNOF/aDzEktbPnLnX40GEvKkYT6/qP4cMhn/SOY0/hYOkIdR34ilzNlVNq5xP7CMjCjaUYJe+6ydHPK6FpOuEoWOYYP5BZENKNGyBy4w4shkMAw19mA_0_OEM:NONSLP_IoTEnterpriseS_Ge
1197d4bdc678-0a4b-4a32-a5b3-aaa24c3b0f24_K9V%f%KN-3B%f%GWV-Y62%f%4W-MC%f%RMQ-BH%f%DCD_202_X22-53884_kyoNx2s93U6OUSklB1xn+GXcwCJO1QTEtACYnChi8aXSoxGQ6H2xHfUdHVCwUA1OR0UeNcRrMmOzZBOEUBtdoGWSYPg9AMjvxlxq9JOzYAH+G6lT0UbCWgMSGGrqdcIfmshyEak3aUmsZK6l+uIAFCCZZ/HbbCRkkHC5rWKstMI_0_____Retail_CloudEditionN 1292d4bdc678-0a4b-4a32-a5b3-aaa24c3b0f24_K9%f%VKN-3BG%f%WV-Y6%f%24W-MCR%f%MQ-BH%f%DCD_202_X22-53884_kyoNx2s93U6OUSklB1xn+GXcwCJO1QTEtACYnChi8aXSoxGQ6H2xHfUdHVCwUA1OR0UeNcRrMmOzZBOEUBtdoGWSYPg9AMjvxlxq9JOzYAH+G6lT0UbCWgMSGGrqdcIfmshyEak3aUmsZK6l+uIAFCCZZ/HbbCRkkHC5rWKstMI_0_____Retail_CloudEditionN
119892fb8726-92a8-4ffc-94ce-f82e07444653_KY7%f%PN-VR%f%6RX-83W%f%6Y-6D%f%DYQ-T6%f%R4W_203_X22-53847_gD6HnT4jP4rcNu9u83gvDiQq1xs7QSujcDbo60Di5iSVa9/ihZ7nlhnA0eDEZfnoDXriRiPPqc09T6AhSnFxLYitAkOuPJqL5UMobIrab9dwTKlowqFolxoHhLOO4V92Hsvn/9JLy7rEzoiAWHhX/0cpMr3FCzVYPeUW1OyLT1A_0_____Retail_CloudEdition 129392fb8726-92a8-4ffc-94ce-f82e07444653_KY%f%7PN-VR6%f%RX-83%f%W6Y-6DD%f%YQ-T6%f%R4W_203_X22-53847_gD6HnT4jP4rcNu9u83gvDiQq1xs7QSujcDbo60Di5iSVa9/ihZ7nlhnA0eDEZfnoDXriRiPPqc09T6AhSnFxLYitAkOuPJqL5UMobIrab9dwTKlowqFolxoHhLOO4V92Hsvn/9JLy7rEzoiAWHhX/0cpMr3FCzVYPeUW1OyLT1A_0_____Retail_CloudEdition
1199d4f9b41f-205c-405e-8e08-3d16e88e02be_J7N%f%JW-V6%f%KBM-CC8%f%RW-Y2%f%9Y4-HQ%f%2MJ_205_X23-15027_BjCACpBJMs/qftw+cjNvpXmG+++IzXTMqE5kPCTbWuNZXh/d5OSX8Ii3l2yq6xJAdSiYcALItHttLbBBEJ9H8iBj8STQeYHxdp3xU2k3/5Hoe+dPHwf1Qfg/CBd/AkCpiPqFYvjH9OhxvdUk8GvBGL2p2MrAAU4n+CuISSutZKM_0_OEM:NONSLP_IoTEnterpriseSK 12945a85300a-bfce-474f-ac07-a30983e3fb90_N9%f%79K-XWD%f%77-YW%f%3GB-HBG%f%H6-D3%f%2MH_205_X23-15042_blZopkUuayCTgZKH4bOFiisH9GTAHG5/js6UX/qcMWWc3sWNxKSX1OLp1k3h8Xx1cFuvfG/fNAw/I83ssEtPY+A0Gx1JF4QpRqsGOqJ5ruQ2tGW56CJcCVHkB+i46nJAD759gYmy3pEYMQbmpWbhLx3MJ6kvwxKfU+0VCio8k50_0_____OEM:DM_IoTEnterpriseSK
129580083eae-7031-4394-9e88-4901973d56fe_P8%f%Q7T-WNK%f%7X-PM%f%FXY-VXH%f%BG-RR%f%K69_206_X23-62084_habUJ0hhAG0P8iIKaRQ74/wZQHyAdFlwHmrejNjOSRG08JeqilJlTM6V8G9UERLJ92/uMDVHIVOPXfN8Zdh8JuYO8oflPnqymIRmff/pU+Gpb871jV2JDA4Cft5gmn+ictKoN4VoSfEZRR+R5hzF2FsoCExDNNw6gLdjtiX94uA_0_____OEM:DM_IoTEnterpriseK
1200) do ( 1296) do (
1201for /f "tokens=1-9 delims=_" %%A in ("%%#") do ( 1297for /f "tokens=1-9 delims=_" %%A in ("%%#") do (
1202 1298
1203REM Detect key 1299REM Detect key
1204 1300
1205if %1==key if %osSKU%==%%C if not defined key ( 1301if %1==key if %osSKU%==%%C if not defined key (
1302set skufound=1
1206echo "!applist! !altapplist!" | find /i "%%A" %nul1% && ( 1303echo "!applist! !altapplist!" | find /i "%%A" %nul1% && (
1207if %%F==1 set notworking=1 1304if %%F==1 set notworking=1
1208set key=%%B 1305set key=%%B
diff --git a/MAS/Separate-Files-Version/Activators/KMS38_Activation.cmd b/MAS/Separate-Files-Version/Activators/KMS38_Activation.cmd
index 1ae9c40..b496644 100644
--- a/MAS/Separate-Files-Version/Activators/KMS38_Activation.cmd
+++ b/MAS/Separate-Files-Version/Activators/KMS38_Activation.cmd
@@ -1,9 +1,9 @@
1@set masver=2.4 1@set masver=2.5
2@setlocal DisableDelayedExpansion 2@setlocal DisableDelayedExpansion
3@echo off 3@echo off
4 4
5 5
6:: 6
7::============================================================================ 7::============================================================================
8:: 8::
9:: This script is a part of 'Microsoft_Activation_Scripts' (MAS) project. 9:: This script is a part of 'Microsoft_Activation_Scripts' (MAS) project.
@@ -256,7 +256,7 @@ echo You are running outdated version MAS %masver%
256echo ________________________________________________ 256echo ________________________________________________
257echo: 257echo:
258if not %_unattended%==1 ( 258if not %_unattended%==1 (
259echo [1] Download Latest MAS 259echo [1] Get Latest MAS
260echo [0] Continue Anyway 260echo [0] Continue Anyway
261echo: 261echo:
262call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" 262call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :"
@@ -306,11 +306,28 @@ goto :k_menu
306:k_menu2 306:k_menu2
307 307
308cls 308cls
309mode 108, 34 309mode 110, 34
310if exist "%Systemdrive%\Windows\System32\spp\store_test\" mode 134, 34
310title KMS38 Activation %masver% 311title KMS38 Activation %masver%
311 312
312echo: 313echo:
313echo Initializing... 314echo Initializing...
315
316:: Check PowerShell
317
318%psc% $ExecutionContext.SessionState.LanguageMode %nul2% | find /i "Full" %nul1% || (
319%eline%
320%psc% $ExecutionContext.SessionState.LanguageMode
321echo:
322echo PowerShell is not working. Aborting...
323echo If you have applied restrictions on Powershell then undo those changes.
324echo:
325echo Check this page for help. %mas%troubleshoot
326goto dk_done
327)
328
329::========================================================================================================================================
330
314call :dk_product 331call :dk_product
315call :dk_ckeckwmic 332call :dk_ckeckwmic
316 333
@@ -393,27 +410,7 @@ goto dk_done
393 410
394::======================================================================================================================================== 411::========================================================================================================================================
395 412
396:: Check SKU value / Check in multiple places to find Edition change corruption 413call :dk_checksku
397
398set osSKU=
399set slcSKU=
400set wmiSKU=
401set regSKU=
402
403if %winbuild% GEQ 14393 (set info=Kernel-BrandingInfo) else (set info=Kernel-ProductInfo)
404set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('SLGetWindowsInformationDWORD', 'slc.dll', 'Public, Static', 1, [int], @([String], [int].MakeByRefType()), 1, 3);
405set d1=%d1% $Sku = 0; [void]$TypeBuilder.CreateType()::SLGetWindowsInformationDWORD('%info%', [ref]$Sku); $Sku
406for /f "delims=" %%s in ('"%psc% %d1%"') do if not errorlevel 1 (set slcSKU=%%s)
407if "%slcSKU%"=="0" set slcSKU=
408if 1%slcSKU% NEQ +1%slcSKU% set slcSKU=
409
410for /f "tokens=3 delims=." %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions" /v OSProductPfn %nul6%') do set "regSKU=%%a"
411if %_wmic% EQU 1 for /f "tokens=2 delims==" %%a in ('"wmic Path Win32_OperatingSystem Get OperatingSystemSKU /format:LIST" %nul6%') do if not errorlevel 1 set "wmiSKU=%%a"
412if %_wmic% EQU 0 for /f "tokens=1" %%a in ('%psc% "([WMI]'Win32_OperatingSystem=@').OperatingSystemSKU" %nul6%') do if not errorlevel 1 set "wmiSKU=%%a"
413
414set osSKU=%slcSKU%
415if not defined osSKU set osSKU=%wmiSKU%
416if not defined osSKU set osSKU=%regSKU%
417 414
418if not defined osSKU ( 415if not defined osSKU (
419%eline% 416%eline%
@@ -472,11 +469,11 @@ if /i "Volume:GVLK"=="%_channel%" set _gvlk=1
472set key= 469set key=
473set pkey= 470set pkey=
474set altkey= 471set altkey=
472set skufound=
475set changekey= 473set changekey=
476set altedition= 474set altedition=
477 475
478if defined applist call :kms38data getkey 476call :kms38data getkey
479
480if not defined key call :dk_gvlk %nul% 477if not defined key call :dk_gvlk %nul%
481if defined applist if not defined key call :kms38fallback 478if defined applist if not defined key call :kms38fallback
482 479
@@ -497,7 +494,11 @@ call :dk_color %Red% "Checking Alternate Edition For KMS38 [%altedition% Acti
497if not defined key if not defined _gvlk ( 494if not defined key if not defined _gvlk (
498%eline% 495%eline%
499echo [%winos% ^| %winbuild% ^| SKU:%osSKU%] 496echo [%winos% ^| %winbuild% ^| SKU:%osSKU%]
497if not defined skufound (
500echo Unable to find this product in the supported product list. 498echo Unable to find this product in the supported product list.
499) else (
500echo Required License files not installed.
501)
501echo Make sure you are using updated version of the script. 502echo Make sure you are using updated version of the script.
502echo %mas% 503echo %mas%
503echo: 504echo:
@@ -641,9 +642,7 @@ set "_xmlexist=if exist "%tdir%\GenuineTicket.xml""
641 642
642:: Stop sppsvc 643:: Stop sppsvc
643 644
644net stop sppsvc /y %nul% 645%psc% Stop-Service sppsvc %nul%
645net stop sppsvc /y %nul%
646net stop sppsvc /y %nul%
647 646
648sc query sppsvc | find /i "STOPPED" %nul% && ( 647sc query sppsvc | find /i "STOPPED" %nul% && (
649echo Stopping sppsvc Service [Successful] 648echo Stopping sppsvc Service [Successful]
@@ -652,8 +651,7 @@ call :dk_color %Gray% "Stopping sppsvc Service [Failed]"
652) 651)
653 652
654%_xmlexist% ( 653%_xmlexist% (
655net stop ClipSVC /y %nul% 654%psc% Restart-Service ClipSVC %nul%
656net start ClipSVC /y %nul%
657%_xmlexist% timeout /t 2 %nul% 655%_xmlexist% timeout /t 2 %nul%
658%_xmlexist% timeout /t 2 %nul% 656%_xmlexist% timeout /t 2 %nul%
659 657
@@ -835,6 +833,31 @@ $key.SetAccessControl($acl)
835 833
836::======================================================================================================================================== 834::========================================================================================================================================
837 835
836:: Check SKU value
837
838:dk_checksku
839
840set osSKU=
841set slcSKU=
842set wmiSKU=
843set regSKU=
844
845if %winbuild% GEQ 14393 (set info=Kernel-BrandingInfo) else (set info=Kernel-ProductInfo)
846set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('SLGetWindowsInformationDWORD', 'slc.dll', 'Public, Static', 1, [int], @([String], [int].MakeByRefType()), 1, 3);
847set d1=%d1% $Sku = 0; [void]$TypeBuilder.CreateType()::SLGetWindowsInformationDWORD('%info%', [ref]$Sku); $Sku
848for /f "delims=" %%s in ('"%psc% %d1%"') do if not errorlevel 1 (set slcSKU=%%s)
849if "%slcSKU%"=="0" set slcSKU=
850if 1%slcSKU% NEQ +1%slcSKU% set slcSKU=
851
852for /f "tokens=3 delims=." %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions" /v OSProductPfn %nul6%') do set "regSKU=%%a"
853if %_wmic% EQU 1 for /f "tokens=2 delims==" %%a in ('"wmic Path Win32_OperatingSystem Get OperatingSystemSKU /format:LIST" %nul6%') do if not errorlevel 1 set "wmiSKU=%%a"
854if %_wmic% EQU 0 for /f "tokens=1" %%a in ('%psc% "([WMI]'Win32_OperatingSystem=@').OperatingSystemSKU" %nul6%') do if not errorlevel 1 set "wmiSKU=%%a"
855
856set osSKU=%slcSKU%
857if not defined osSKU set osSKU=%wmiSKU%
858if not defined osSKU set osSKU=%regSKU%
859exit /b
860
838:: Check KMS activation status 861:: Check KMS activation status
839 862
840:k_actinfo 863:k_actinfo
@@ -985,7 +1008,11 @@ set _corrupt=
985sc start %%# %nul% 1008sc start %%# %nul%
986if !errorlevel! EQU 1060 set _corrupt=1 1009if !errorlevel! EQU 1060 set _corrupt=1
987sc query %%# %nul% || set _corrupt=1 1010sc query %%# %nul% || set _corrupt=1
988for %%G in (DependOnService Description DisplayName ErrorControl ImagePath ObjectName Start Type) do if not defined _corrupt (reg query HKLM\SYSTEM\CurrentControlSet\Services\%%# /v %%G %nul% || set _corrupt=1) 1011for %%G in (DependOnService Description DisplayName ErrorControl ImagePath ObjectName Start Type) do if not defined _corrupt (
1012reg query HKLM\SYSTEM\CurrentControlSet\Services\%%# /v %%G %nul% || set _corrupt=1
1013if /i %%#==TrustedInstaller if /i %%G==DependOnService set _corrupt=
1014)
1015
989if defined _corrupt (if defined serv_cor (set "serv_cor=!serv_cor! %%#") else (set "serv_cor=%%#")) 1016if defined _corrupt (if defined serv_cor (set "serv_cor=!serv_cor! %%#") else (set "serv_cor=%%#"))
990) 1017)
991 1018
@@ -1011,13 +1038,18 @@ set serv_cste=
1011 1038
1012if defined serv_ste ( 1039if defined serv_ste (
1013for %%# in (%serv_ste%) do ( 1040for %%# in (%serv_ste%) do (
1014if /i %%#==ClipSVC (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "3" /f %nul% & sc config %%# start= demand %nul%) 1041if /i %%#==ClipSVC (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "3" /f %nul% & sc config %%# start= demand %nul%)
1015if /i %%#==wlidsvc sc config %%# start= demand %nul% 1042if /i %%#==wlidsvc sc config %%# start= demand %nul%
1016if /i %%#==sppsvc (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "2" /f %nul% & sc config %%# start= delayed-auto %nul%) 1043if /i %%#==sppsvc (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "2" /f %nul% & sc config %%# start= delayed-auto %nul%)
1017if /i %%#==KeyIso sc config %%# start= demand %nul% 1044if /i %%#==KeyIso sc config %%# start= demand %nul%
1018if /i %%#==LicenseManager sc config %%# start= demand %nul% 1045if /i %%#==LicenseManager sc config %%# start= demand %nul%
1019if /i %%#==Winmgmt sc config %%# start= auto %nul% 1046if /i %%#==Winmgmt sc config %%# start= auto %nul%
1020if /i %%#==wuauserv sc config %%# start= demand %nul% 1047if /i %%#==DoSvc sc config %%# start= delayed-auto %nul%
1048if /i %%#==UsoSvc sc config %%# start= delayed-auto %nul%
1049if /i %%#==CryptSvc sc config %%# start= auto %nul%
1050if /i %%#==BITS sc config %%# start= delayed-auto %nul%
1051if /i %%#==wuauserv sc config %%# start= demand %nul%
1052if /i %%#==WaaSMedicSvc sc config %%# start= demand %nul%
1021if !errorlevel!==0 ( 1053if !errorlevel!==0 (
1022if defined serv_csts (set "serv_csts=!serv_csts! %%#") else (set "serv_csts=%%#") 1054if defined serv_csts (set "serv_csts=!serv_csts! %%#") else (set "serv_csts=%%#")
1023) else ( 1055) else (
@@ -1042,9 +1074,12 @@ set serv_e=
1042for %%# in (%_serv%) do ( 1074for %%# in (%_serv%) do (
1043set errorcode= 1075set errorcode=
1044set checkerror= 1076set checkerror=
1045net start %%# /y %nul% 1077
1078sc query %%# | find /i "RUNNING" %nul% || (
1079%psc% Start-Service %%# %nul%
1046set errorcode=!errorlevel! 1080set errorcode=!errorlevel!
1047sc query %%# | find /i "RUNNING" %nul% || set checkerror=1 1081sc query %%# | find /i "RUNNING" %nul% || set checkerror=1
1082)
1048 1083
1049sc start %%# %nul% 1084sc start %%# %nul%
1050if !errorlevel! NEQ 1056 if !errorlevel! NEQ 0 (set errorcode=!errorlevel!&set checkerror=1) 1085if !errorlevel! NEQ 1056 if !errorlevel! NEQ 0 (set errorcode=!errorlevel!&set checkerror=1)
@@ -1055,7 +1090,7 @@ if defined serv_e (
1055set error=1 1090set error=1
1056call :dk_color %Red% "Starting Services [Failed] [%serv_e%]" 1091call :dk_color %Red% "Starting Services [Failed] [%serv_e%]"
1057echo %serv_e% | findstr /i "ClipSVC-1058 sppsvc-1058" %nul% && ( 1092echo %serv_e% | findstr /i "ClipSVC-1058 sppsvc-1058" %nul% && (
1058call :dk_color %Blue% "Restart the system to fix disabled service error 1058." 1093call :dk_color %Blue% "Restart the system to fix this error."
1059set showfix=1 1094set showfix=1
1060) 1095)
1061) 1096)
@@ -1067,14 +1102,18 @@ set showfix=1
1067if defined safeboot_option ( 1102if defined safeboot_option (
1068set error=1 1103set error=1
1069set showfix=1 1104set showfix=1
1070call :dk_color2 %Red% "Checking Boot Mode " %Blue% "[Safe mode found. Run in normal mode.]" 1105call :dk_color2 %Red% "Checking Boot Mode [%safeboot_option%] " %Blue% "[Safe mode found. Run in normal mode.]"
1071) 1106)
1072 1107
1073 1108
1074reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State" %nul2% | find /i "IMAGE_STATE_COMPLETE" %nul1% || ( 1109for /f "skip=2 tokens=2*" %%A in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State" /v ImageState') do (set imagestate=%%B)
1110if /i not "%imagestate%"=="IMAGE_STATE_COMPLETE" (
1075set error=1 1111set error=1
1112call :dk_color %Red% "Checking Windows Setup State [%imagestate%]"
1113echo "%imagestate%" | find /i "RESEAL" %nul% && (
1076set showfix=1 1114set showfix=1
1077call :dk_color2 %Red% "Checking Audit Mode " %Blue% "[IMAGE_STATE_COMPLETE status not found. Run in normal mode.]" 1115call :dk_color %Blue% "You need to run it in normal mode in case you are running it in Audit Mode."
1116)
1078) 1117)
1079 1118
1080 1119
@@ -1085,30 +1124,58 @@ call :dk_color2 %Red% "Checking WinPE " %Blue% "[WinPE
1085) 1124)
1086 1125
1087 1126
1088%psc% $ExecutionContext.SessionState.LanguageMode %nul2% | find /i "Full" %nul1% || ( 1127set wpainfo=
1128set wpaerror=
1129for /f "delims=" %%a in ('%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':wpatest\:.*';iex ($f[1]);" %nul6%') do (set wpainfo=%%a)
1130echo "%wpainfo%" | find /i "Error Found" %nul% && (
1089set error=1 1131set error=1
1090call :dk_color %Red% "Checking Powershell [Not Responding]" 1132set wpaerror=1
1133call :dk_color %Red% "Checking WPA Registry Error [%wpainfo%]"
1134) || (
1135echo Checking WPA Registry Count [%wpainfo%]
1091) 1136)
1092 1137
1093 1138
1094DISM /English /Online /Get-CurrentEdition %nul% 1139DISM /English /Online /Get-CurrentEdition %nul%
1095set dism_error=%errorlevel% 1140set dism_error=%errorlevel%
1096cmd /c exit /b %dism_error% 1141cmd /c exit /b %dism_error%
1097if %dism_error% NEQ 0 set "dism_error=[0x%=ExitCode%]" 1142if %dism_error% NEQ 0 set "dism_error=0x%=ExitCode%"
1098if %dism_error% NEQ 0 ( 1143if %dism_error% NEQ 0 (
1099call :dk_color %Red% "Checking DISM [Not Responding] %dism_error%" 1144call :dk_color %Red% "Checking DISM [Not Responding] [%dism_error%]"
1100) 1145)
1101 1146
1102 1147
1103if not defined officeact if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" ( 1148if not defined officeact if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" (
1104set error=1 1149set error=1
1150set showfix=1
1105call :dk_color %Red% "Checking Eval Packages [Non-Eval Licenses are installed in Eval Windows]" 1151call :dk_color %Red% "Checking Eval Packages [Non-Eval Licenses are installed in Eval Windows]"
1106if /i %dism_error%==[0x800F0805] (
1107for %%# in (4 125 126 188 191 205) do if "%osSKU%"=="%%#" (
1108call :dk_color %Blue% "Evaluation Windows can not be activated and different License install may lead to errors." 1152call :dk_color %Blue% "Evaluation Windows can not be activated and different License install may lead to errors."
1109call :dk_color %Blue% "It is recommended to install full version of %winos%." 1153call :dk_color %Blue% "It is recommended to install full version of %winos%."
1110call :dk_color %Blue% "You can download it from %mas%genuine-installation-media.html" 1154call :dk_color %Blue% "You can download it from %mas%genuine-installation-media.html"
1111set showfix=1 1155)
1156
1157
1158set osedition=
1159for /f "skip=2 tokens=3" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul6%') do set "osedition=%%a"
1160
1161:: Workaround for an issue in builds between 1607 and 1709 where ProfessionalEducation is shown as Professional
1162
1163if "%osSKU%"=="164" set osedition=ProfessionalEducation
1164if "%osSKU%"=="165" set osedition=ProfessionalEducationN
1165
1166if not defined officeact (
1167if not defined osedition (
1168call :dk_color %Red% "Checking Edition Name [Not Found In Registry]"
1169) else (
1170
1171if not exist "%SystemRoot%\System32\spp\tokens\skus\%osedition%\%osedition%*.xrm-ms" (
1172set error=1
1173call :dk_color %Red% "Checking License Files [Not Found] [%osedition%]"
1174)
1175
1176if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*-%osedition%-*.mum" (
1177set error=1
1178call :dk_color %Red% "Checking Package File [Not Found] [%osedition%]"
1112) 1179)
1113) 1180)
1114) 1181)
@@ -1167,8 +1234,7 @@ call :dk_color2 %Red% "Checking ClipSVC " %Blue% "[System
1167for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "SkipRearm" %nul6%') do if /i %%b NEQ 0x0 ( 1234for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "SkipRearm" %nul6%') do if /i %%b NEQ 0x0 (
1168reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "SkipRearm" /t REG_DWORD /d "0" /f %nul% 1235reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "SkipRearm" /t REG_DWORD /d "0" /f %nul%
1169call :dk_color %Red% "Checking SkipRearm [Default 0 Value Not Found. Changing To 0]" 1236call :dk_color %Red% "Checking SkipRearm [Default 0 Value Not Found. Changing To 0]"
1170net stop sppsvc /y %nul% 1237%psc% Restart-Service sppsvc %nul%
1171net start sppsvc /y %nul%
1172set error=1 1238set error=1
1173) 1239)
1174 1240
@@ -1198,7 +1264,7 @@ call :dk_color %Gray% "Checking SPP Token Folder [Not Found. Creat
1198 1264
1199call :dk_actids 1265call :dk_actids
1200if not defined applist ( 1266if not defined applist (
1201net stop sppsvc /y %nul% 1267%psc% Stop-Service sppsvc %nul%
1202cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% 1268cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul%
1203if !errorlevel! NEQ 0 cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% 1269if !errorlevel! NEQ 0 cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul%
1204call :dk_refresh 1270call :dk_refresh
@@ -1223,25 +1289,9 @@ call :dk_color %Red% "Checking sppsvc.exe File [Not Found]"
1223) 1289)
1224 1290
1225 1291
1226:: Below checks are performed if required services are not disabled or corrupted + if there is any error + slmgr /dlv errorlevel is not Zero + no fix was shown before 1292:: This code checks if NT SERVICE\sppsvc has permission access to tokens folder and required registry keys. It's often caused by gaming spoofers.
1227 1293
1228set wpaerror=
1229set permerror= 1294set permerror=
1230if not defined serv_cor if not defined serv_cste if defined error if /i not %error_code%==0 if not defined showfix (
1231
1232REM This code checks for invalid registry keys in HKLM\SYSTEM\WPA. This issue may appear even on healthy systems.
1233
1234if %winbuild% GEQ 14393 (
1235set /a count=0
1236for /f %%a in ('reg query "HKLM\SYSTEM\WPA" %nul6%') do set /a count+=1
1237for /L %%# in (1,1,!count!) do (
1238reg query "HKLM\SYSTEM\WPA\8DEC0AF1-0341-4b93-85CD-72606C2DF94C-7P-%%#" /ve /t REG_BINARY %nul% || set wpaerror=1
1239)
1240if defined wpaerror call :dk_color %Red% "Checking WPA Registry Keys [Error Found] [Registry Count - !count!]"
1241)
1242
1243REM This code checks if NT SERVICE\sppsvc has permission access to tokens folder and required registry keys. It's often caused by gaming spoofers.
1244
1245if not exist "%tokenstore%\" set permerror=1 1295if not exist "%tokenstore%\" set permerror=1
1246 1296
1247for %%# in ( 1297for %%# in (
@@ -1252,15 +1302,65 @@ for %%# in (
1252%psc% "$acl = Get-Acl '%%#'; if ($acl.Access.Where{ $_.IdentityReference -eq 'NT SERVICE\sppsvc' -and $_.AccessControlType -eq 'Deny' -or $acl.Access.IdentityReference -notcontains 'NT SERVICE\sppsvc'}) {Exit 2}" %nul% 1302%psc% "$acl = Get-Acl '%%#'; if ($acl.Access.Where{ $_.IdentityReference -eq 'NT SERVICE\sppsvc' -and $_.AccessControlType -eq 'Deny' -or $acl.Access.IdentityReference -notcontains 'NT SERVICE\sppsvc'}) {Exit 2}" %nul%
1253if !errorlevel!==2 set permerror=1 1303if !errorlevel!==2 set permerror=1
1254) 1304)
1255if defined permerror call :dk_color %Red% "Checking SPP Permissions [Error Found]" 1305if defined permerror (
1306set error=1
1307set showfix=1
1308call :dk_color %Red% "Checking SPP Permissions [Error Found]"
1309call :dk_color %Blue% "%_fixmsg%"
1310)
1256 1311
1312
1313:: If required services are not disabled or corrupted + if there is any error + slmgr /dlv errorlevel is not Zero + no fix was shown before
1314
1315if not defined serv_cor if not defined serv_cste if defined error if /i not %error_code%==0 if not defined showfix (
1257set showfix=1 1316set showfix=1
1258call :dk_color %Blue% "%_fixmsg%" 1317call :dk_color %Blue% "%_fixmsg%"
1259if not defined permerror call :dk_color %Blue% "If activation still fails then run Fix WPA Registry option." 1318if not defined permerror call :dk_color %Blue% "If activation still fails then run Fix WPA Registry option."
1260) 1319)
1261 1320
1321if not defined showfix if defined wpaerror (
1322set showfix=1
1323call :dk_color %Blue% "If activation fails then go back to Main Menu, select Troubleshoot and run Fix WPA Registry option."
1324)
1325
1262exit /b 1326exit /b
1263 1327
1328:: This code checks for invalid registry keys in HKLM\SYSTEM\WPA. This issue may appear even on healthy systems
1329
1330:wpatest:
1331$wpaKey = [Microsoft.Win32.RegistryKey]::OpenBaseKey('LocalMachine', 'Registry64').OpenSubKey("SYSTEM\\WPA")
1332$count = $wpaKey.SubKeyCount
1333
1334$osVersion = [System.Environment]::OSVersion.Version
1335$minBuildNumber = 14393
1336
1337if ($osVersion.Build -ge $minBuildNumber) {
1338 $subkeyHashTable = @{}
1339 foreach ($subkeyName in $wpaKey.GetSubKeyNames()) {
1340 $keyNumber = $subkeyName -replace '.*-', ''
1341 $subkeyHashTable[$keyNumber] = $true
1342 }
1343 for ($i=1; $i -le $count; $i++) {
1344 if (-not $subkeyHashTable.ContainsKey("$i")) {
1345 Write-Host "Total Keys $count. Error Found- $i key does not exist"
1346 $wpaKey.Close()
1347 exit
1348 }
1349 }
1350}
1351$wpaKey.GetSubKeyNames() | ForEach-Object {
1352 $subkey = $wpaKey.OpenSubKey($_)
1353 $p = $subkey.GetValueNames()
1354 if (($p | Where-Object { $subkey.GetValueKind($_) -eq [Microsoft.Win32.RegistryValueKind]::Binary }).Count -eq 0) {
1355 Write-Host "Total Keys $count. Error Found- Binary Data is corrupt"
1356 $wpaKey.Close()
1357 exit
1358 }
1359}
1360$count
1361$wpaKey.Close()
1362:wpatest:
1363
1264::======================================================================================================================================== 1364::========================================================================================================================================
1265 1365
1266:dk_color 1366:dk_color
@@ -1304,57 +1404,62 @@ exit /b
1304 1404
1305set f= 1405set f=
1306for %%# in ( 1406for %%# in (
130773111121-5638-40f6-bc11-f1d7b0d64300_NPP%f%R9-FW%f%DCX-D2C%f%8J-H8%f%72K-2Y%f%T43___4_Enterprise 140773111121-5638-40f6-bc11-f1d7b0d64300_NP%f%PR9-FWD%f%CX-D2%f%C8J-H872%f%K-2Y%f%T43___4_Enterprise
13089bd77860-9b31-4b7b-96ad-2564017315bf_VDY%f%BN-27%f%WPP-V4H%f%QT-9V%f%MD4-VM%f%K7H___7_ServerStandard_FE 14087dc26449-db21-4e09-ba37-28f2958506a6_DP%f%NXD-67Y%f%Y9-WW%f%FJJ-RYH9%f%9-RM%f%832___7_ServerStandard_Ge
1309de32eafd-aaee-4662-9444-c1befb41bde2_N69%f%G4-B8%f%9J2-4G8%f%F4-WW%f%YCC-J4%f%64C___7_ServerStandard_RS5 14099bd77860-9b31-4b7b-96ad-2564017315bf_VD%f%YBN-27W%f%PP-V4%f%HQT-9VMD%f%4-VM%f%K7H___7_ServerStandard_FE
13108c1c5410-9f39-4805-8c9d-63a07706358f_WC2%f%BQ-8N%f%RM3-FDD%f%YY-2B%f%FGV-KH%f%KQY___7_ServerStandard_RS1 1410de32eafd-aaee-4662-9444-c1befb41bde2_N6%f%9G4-B89%f%J2-4G%f%8F4-WWYC%f%C-J4%f%64C___7_ServerStandard_RS5
1311ef6cfc9f-8c5d-44ac-9aad-de6a2ea0ae03_WX4%f%NM-KY%f%WYW-QJJ%f%R4-XV%f%3QB-6V%f%M33___8_ServerDatacenter_FE 14118c1c5410-9f39-4805-8c9d-63a07706358f_WC%f%2BQ-8NR%f%M3-FD%f%DYY-2BFG%f%V-KH%f%KQY___7_ServerStandard_RS1
131234e1ae55-27f8-4950-8877-7a03be5fb181_WMD%f%GN-G9%f%PQG-XVV%f%XX-R3%f%X43-63%f%DFG___8_ServerDatacenter_RS5 1412c052f164-cdf6-409a-a0cb-853ba0f0f55a_CN%f%FDQ-2BW%f%8H-9V%f%4WM-TKCP%f%D-MD%f%2QF___8_ServerDatacenter_Ge
131321c56779-b449-4d20-adfc-eece0e1ad74b_CB7%f%KF-BW%f%N84-R7R%f%2Y-79%f%3K2-8X%f%DDG___8_ServerDatacenter_RS1 1413ef6cfc9f-8c5d-44ac-9aad-de6a2ea0ae03_WX%f%4NM-KYW%f%YW-QJ%f%JR4-XV3Q%f%B-6V%f%M33___8_ServerDatacenter_FE
1314e272e3e2-732f-4c65-a8f0-484747d0d947_DPH%f%2V-TT%f%NVB-4X9%f%Q3-TJ%f%R4H-KH%f%JW4__27_EnterpriseN 141434e1ae55-27f8-4950-8877-7a03be5fb181_WM%f%DGN-G9P%f%QG-XV%f%VXX-R3X4%f%3-63%f%DFG___8_ServerDatacenter_RS5
13152de67392-b7a7-462a-b1ca-108dd189f588_W26%f%9N-WF%f%GWX-YVC%f%9B-4J%f%6C9-T8%f%3GX__48_Professional 141521c56779-b449-4d20-adfc-eece0e1ad74b_CB%f%7KF-BWN%f%84-R7%f%R2Y-793K%f%2-8X%f%DDG___8_ServerDatacenter_RS1
1316a80b5abf-76ad-428b-b05d-a47d2dffeebf_MH3%f%7W-N4%f%7XK-V7X%f%M9-C7%f%227-GC%f%QG9__49_ProfessionalN 1416e272e3e2-732f-4c65-a8f0-484747d0d947_DP%f%H2V-TTN%f%VB-4X%f%9Q3-TJR4%f%H-KH%f%JW4__27_EnterpriseN
1317034d3cbb-5d4b-4245-b3f8-f84571314078_WVD%f%HN-86%f%M7X-466%f%P6-VH%f%XV7-YY%f%726__50_ServerSolution_RS5 14172de67392-b7a7-462a-b1ca-108dd189f588_W2%f%69N-WFG%f%WX-YV%f%C9B-4J6C%f%9-T8%f%3GX__48_Professional
13182b5a1b0f-a5ab-4c54-ac2f-a6d94824a283_JCK%f%RF-N3%f%7P4-C2D%f%82-9Y%f%XRT-4M%f%63B__50_ServerSolution_RS1 1418a80b5abf-76ad-428b-b05d-a47d2dffeebf_MH%f%37W-N47%f%XK-V7%f%XM9-C722%f%7-GC%f%QG9__49_ProfessionalN
13197b9e1751-a8da-4f75-9560-5fadfe3d8e38_3KH%f%Y7-WN%f%T83-DGQ%f%KR-F7%f%HPR-84%f%4BM__98_CoreN 1419034d3cbb-5d4b-4245-b3f8-f84571314078_WV%f%DHN-86M%f%7X-46%f%6P6-VHXV%f%7-YY%f%726__50_ServerSolution_RS5
1320a9107544-f4a0-4053-a96a-1479abdef912_PVM%f%JN-6D%f%FY6-9CC%f%P6-7B%f%KTT-D3%f%WVR__99_CoreCountrySpecific 14202b5a1b0f-a5ab-4c54-ac2f-a6d94824a283_JC%f%KRF-N37%f%P4-C2%f%D82-9YXR%f%T-4M%f%63B__50_ServerSolution_RS1
1321cd918a57-a41b-4c82-8dce-1a538e221a83_7HN%f%RX-D7%f%KGG-3K4%f%RQ-4W%f%PJ4-YT%f%DFH_100_CoreSingleLanguage 14217b9e1751-a8da-4f75-9560-5fadfe3d8e38_3K%f%HY7-WNT%f%83-DG%f%QKR-F7HP%f%R-84%f%4BM__98_CoreN
132258e97c99-f377-4ef1-81d5-4ad5522b5fd8_TX9%f%XD-98%f%N7V-6WM%f%Q6-BX%f%7FG-H8%f%Q99_101_Core 1422a9107544-f4a0-4053-a96a-1479abdef912_PV%f%MJN-6DF%f%Y6-9C%f%CP6-7BKT%f%T-D3%f%WVR__99_CoreCountrySpecific
13237b4433f4-b1e7-4788-895a-c45378d38253_QN4%f%C6-GB%f%JD2-FB4%f%22-GH%f%WJK-GJ%f%G2R_110_ServerCloudStorage 1423cd918a57-a41b-4c82-8dce-1a538e221a83_7H%f%NRX-D7K%f%GG-3K%f%4RQ-4WPJ%f%4-YT%f%DFH_100_CoreSingleLanguage
13248de8eb62-bbe0-40ac-ac17-f75595071ea3_GRF%f%BW-QN%f%DC4-6QB%f%HG-CC%f%K3B-2P%f%R88_120_ServerARM64_RS5 142458e97c99-f377-4ef1-81d5-4ad5522b5fd8_TX%f%9XD-98N%f%7V-6W%f%MQ6-BX7F%f%G-H8%f%Q99_101_Core
132543d9af6e-5e86-4be8-a797-d072a046896c_K9F%f%YF-G6%f%NCK-73M%f%32-XM%f%VPY-F9%f%DRR_120_ServerARM64_RS4 14257b4433f4-b1e7-4788-895a-c45378d38253_QN%f%4C6-GBJ%f%D2-FB%f%422-GHWJ%f%K-GJ%f%G2R_110_ServerCloudStorage
1326e0c42288-980c-4788-a014-c080d2e1926e_NW6%f%C2-QM%f%PVW-D7K%f%KK-3G%f%KT6-VC%f%FB2_121_Education 14268de8eb62-bbe0-40ac-ac17-f75595071ea3_GR%f%FBW-QND%f%C4-6Q%f%BHG-CCK3%f%B-2P%f%R88_120_ServerARM64_RS5
13273c102355-d027-42c6-ad23-2e7ef8a02585_2WH%f%4N-8Q%f%GBV-H22%f%JP-CT%f%43Q-MD%f%WWJ_122_EducationN 142743d9af6e-5e86-4be8-a797-d072a046896c_K9%f%FYF-G6N%f%CK-73%f%M32-XMVP%f%Y-F9%f%DRR_120_ServerARM64_RS4
132832d2fab3-e4a8-42c2-923b-4bf4fd13e6ee_M7X%f%TQ-FN%f%8P6-TTK%f%YV-9D%f%4CC-J4%f%62D_125_EnterpriseS_RS5,VB,Ge 1428e0c42288-980c-4788-a014-c080d2e1926e_NW%f%6C2-QMP%f%VW-D7%f%KKK-3GKT%f%6-VC%f%FB2_121_Education
13292d5a5a60-3040-48bf-beb0-fcd770c20ce0_DCP%f%HK-NF%f%MTC-H88%f%MJ-PF%f%HPY-QJ%f%4BJ_125_EnterpriseS_RS1 14293c102355-d027-42c6-ad23-2e7ef8a02585_2W%f%H4N-8QG%f%BV-H2%f%2JP-CT43%f%Q-MD%f%WWJ_122_EducationN
13307b51a46c-0c04-4e8f-9af4-8496cca90d5e_WNM%f%TR-4C%f%88C-JK8%f%YV-HQ%f%7T2-76%f%DF9_125_EnterpriseS_TH1 143032d2fab3-e4a8-42c2-923b-4bf4fd13e6ee_M7%f%XTQ-FN8%f%P6-TT%f%KYV-9D4C%f%C-J4%f%62D_125_EnterpriseS_RS5,VB,Ge
13317103a333-b8c8-49cc-93ce-d37c09687f92_92N%f%FX-8D%f%JQP-P6B%f%BQ-TH%f%F9C-7C%f%G2H_126_EnterpriseSN_RS5,VB,Ge 14312d5a5a60-3040-48bf-beb0-fcd770c20ce0_DC%f%PHK-NFM%f%TC-H8%f%8MJ-PFHP%f%Y-QJ%f%4BJ_125_EnterpriseS_RS1
13329f776d83-7156-45b2-8a5c-359b9c9f22a3_QFF%f%DN-GR%f%T3P-VKW%f%WX-X7%f%T3R-8B%f%639_126_EnterpriseSN_RS1 14327b51a46c-0c04-4e8f-9af4-8496cca90d5e_WN%f%MTR-4C8%f%8C-JK%f%8YV-HQ7T%f%2-76%f%DF9_125_EnterpriseS_TH1
133387b838b7-41b6-4590-8318-5797951d8529_2F7%f%7B-TN%f%FGY-69Q%f%QF-B8%f%YKP-D6%f%9TJ_126_EnterpriseSN_TH1 14337103a333-b8c8-49cc-93ce-d37c09687f92_92%f%NFX-8DJ%f%QP-P6%f%BBQ-THF9%f%C-7C%f%G2H_126_EnterpriseSN_RS5,VB,Ge
133439e69c41-42b4-4a0a-abad-8e3c10a797cc_QFN%f%D9-D3%f%Y9C-J3K%f%KY-6R%f%PVP-2D%f%PYV_145_ServerDatacenterACor_FE 14349f776d83-7156-45b2-8a5c-359b9c9f22a3_QF%f%FDN-GRT%f%3P-VK%f%WWX-X7T3%f%R-8B%f%639_126_EnterpriseSN_RS1
133590c362e5-0da1-4bfd-b53b-b87d309ade43_6NM%f%RW-2C%f%8FM-D24%f%W7-TQ%f%WMY-CW%f%H2D_145_ServerDatacenterACor_RS5 143587b838b7-41b6-4590-8318-5797951d8529_2F%f%77B-TNF%f%GY-69%f%QQF-B8YK%f%P-D6%f%9TJ_126_EnterpriseSN_TH1
1336e49c08e7-da82-42f8-bde2-b570fbcae76c_2HX%f%DN-KR%f%XHB-GPY%f%C7-YC%f%KFJ-7F%f%VDG_145_ServerDatacenterACor_RS3 143639e69c41-42b4-4a0a-abad-8e3c10a797cc_QF%f%ND9-D3Y%f%9C-J3%f%KKY-6RPV%f%P-2D%f%PYV_145_ServerDatacenterACor_FE
1337f5e9429c-f50b-4b98-b15c-ef92eb5cff39_67K%f%N8-4F%f%YJW-248%f%7Q-MQ%f%2J7-4C%f%4RG_146_ServerStandardACor_FE 143790c362e5-0da1-4bfd-b53b-b87d309ade43_6N%f%MRW-2C8%f%FM-D2%f%4W7-TQWM%f%Y-CW%f%H2D_145_ServerDatacenterACor_RS5
133873e3957c-fc0c-400d-9184-5f7b6f2eb409_N2K%f%JX-J9%f%4YW-TQV%f%FB-DG%f%9YT-72%f%4CC_146_ServerStandardACor_RS5 1438e49c08e7-da82-42f8-bde2-b570fbcae76c_2H%f%XDN-KRX%f%HB-GP%f%YC7-YCKF%f%J-7F%f%VDG_145_ServerDatacenterACor_RS3
133961c5ef22-f14f-4553-a824-c4b31e84b100_PTX%f%N8-JF%f%HJM-4WC%f%78-MP%f%CBR-9W%f%4KR_146_ServerStandardACor_RS3 1439f5e9429c-f50b-4b98-b15c-ef92eb5cff39_67%f%KN8-4FY%f%JW-24%f%87Q-MQ2J%f%7-4C%f%4RG_146_ServerStandardACor_FE
134082bbc092-bc50-4e16-8e18-b74fc486aec3_NRG%f%8B-VK%f%K3Q-CXV%f%CJ-9G%f%2XF-6Q%f%84J_161_ProfessionalWorkstation 144073e3957c-fc0c-400d-9184-5f7b6f2eb409_N2%f%KJX-J94%f%YW-TQ%f%VFB-DG9Y%f%T-72%f%4CC_146_ServerStandardACor_RS5
13414b1571d3-bafb-4b40-8087-a961be2caf65_9FN%f%HH-K3%f%HBT-3W4%f%TD-63%f%83H-6X%f%YWF_162_ProfessionalWorkstationN 144161c5ef22-f14f-4553-a824-c4b31e84b100_PT%f%XN8-JFH%f%JM-4W%f%C78-MPCB%f%R-9W%f%4KR_146_ServerStandardACor_RS3
13423f1afc82-f8ac-4f6c-8005-1d233e606eee_6TP%f%4R-GN%f%PTD-KYY%f%HQ-7B%f%7DP-J4%f%47Y_164_ProfessionalEducation 144282bbc092-bc50-4e16-8e18-b74fc486aec3_NR%f%G8B-VKK%f%3Q-CX%f%VCJ-9G2X%f%F-6Q%f%84J_161_ProfessionalWorkstation
13435300b18c-2e33-4dc2-8291-47ffcec746dd_YVW%f%GF-BX%f%NMC-HTQ%f%YQ-CP%f%Q99-66%f%QFC_165_ProfessionalEducationN 14434b1571d3-bafb-4b40-8087-a961be2caf65_9F%f%NHH-K3H%f%BT-3W%f%4TD-6383%f%H-6X%f%YWF_162_ProfessionalWorkstationN
13448c8f0ad3-9a43-4e05-b840-93b8d1475cbc_6N3%f%79-GG%f%TMK-23C%f%6M-XV%f%VTC-CK%f%FRQ_168_ServerAzureCor_FE 14443f1afc82-f8ac-4f6c-8005-1d233e606eee_6T%f%P4R-GNP%f%TD-KY%f%YHQ-7B7D%f%P-J4%f%47Y_164_ProfessionalEducation
1345a99cc1f0-7719-4306-9645-294102fbff95_FDN%f%H6-VW%f%9RW-BXP%f%J7-4X%f%TYG-23%f%9TB_168_ServerAzureCor_RS5 14455300b18c-2e33-4dc2-8291-47ffcec746dd_YV%f%WGF-BXN%f%MC-HT%f%QYQ-CPQ9%f%9-66%f%QFC_165_ProfessionalEducationN
13463dbf341b-5f6c-4fa7-b936-699dce9e263f_VP3%f%4G-4N%f%PPG-79J%f%TQ-86%f%4T4-R3%f%MQX_168_ServerAzureCor_RS1 144645b5aff2-60a0-42f2-bc4b-ec6e5f7b527e_QN%f%7G3-4RM%f%92-MT%f%6QR-PR96%f%6-FV%f%YV7_168_ServerAzureCor_Ge
1347e0b2d383-d112-413f-8a80-97f373a5820c_YYV%f%X9-NT%f%FWV-6MD%f%M3-9P%f%T4T-4M%f%68B_171_EnterpriseG 14478c8f0ad3-9a43-4e05-b840-93b8d1475cbc_6N%f%379-GGT%f%MK-23%f%C6M-XVVT%f%C-CK%f%FRQ_168_ServerAzureCor_FE
1348e38454fb-41a4-4f59-a5dc-25080e354730_44R%f%PN-FT%f%Y23-9VT%f%TB-MP%f%9BX-T8%f%4FV_172_EnterpriseGN 1448a99cc1f0-7719-4306-9645-294102fbff95_FD%f%NH6-VW9%f%RW-BX%f%PJ7-4XTY%f%G-23%f%9TB_168_ServerAzureCor_RS5
1349ec868e65-fadf-4759-b23e-93fe37f2cc29_CPW%f%HC-NT%f%2C7-VYW%f%78-DH%f%DB2-PG%f%3GK_175_ServerRdsh_RS5 14493dbf341b-5f6c-4fa7-b936-699dce9e263f_VP%f%34G-4NP%f%PG-79%f%JTQ-864T%f%4-R3%f%MQX_168_ServerAzureCor_RS1
1350e4db50ea-bda1-4566-b047-0ca50abc6f07_7NB%f%T4-WG%f%BQX-MP4%f%H7-QX%f%FF8-YP%f%3KX_175_ServerRdsh_RS3 1450e0b2d383-d112-413f-8a80-97f373a5820c_YY%f%VX9-NTF%f%WV-6M%f%DM3-9PT4%f%T-4M%f%68B_171_EnterpriseG
13510df4f814-3f57-4b8b-9a9d-fddadcd69fac_NBT%f%WJ-3D%f%R69-3C4%f%V8-C2%f%6MC-GQ%f%9M6_183_CloudE 1451e38454fb-41a4-4f59-a5dc-25080e354730_44%f%RPN-FTY%f%23-9V%f%TTB-MP9B%f%X-T8%f%4FV_172_EnterpriseGN
135259eb965c-9150-42b7-a0ec-22151b9897c5_KBN%f%8V-HF%f%GQ4-MGX%f%VD-34%f%7P6-PD%f%QGT_191_IoTEnterpriseS_VB,NI 1452ec868e65-fadf-4759-b23e-93fe37f2cc29_CP%f%WHC-NT2%f%C7-VY%f%W78-DHDB%f%2-PG%f%3GK_175_ServerRdsh_RS5
1353d30136fc-cb4b-416e-a23d-87207abc44a9_6XN%f%7V-PC%f%BDC-BDB%f%RH-8D%f%QY7-G6%f%R44_202_CloudEditionN 1453e4db50ea-bda1-4566-b047-0ca50abc6f07_7N%f%BT4-WGB%f%QX-MP%f%4H7-QXFF%f%8-YP%f%3KX_175_ServerRdsh_RS3
1354ca7df2e3-5ea0-47b8-9ac1-b1be4d8edd69_37D%f%7F-N4%f%9CB-WQR%f%8W-TB%f%J73-FM%f%8RX_203_CloudEdition 14540df4f814-3f57-4b8b-9a9d-fddadcd69fac_NB%f%TWJ-3DR%f%69-3C%f%4V8-C26M%f%C-GQ%f%9M6_183_CloudE
135519b5e0fb-4431-46bc-bac1-2f1873e4ae73_NTB%f%V8-9K%f%7Q8-V27%f%C6-M2%f%BTV-KH%f%MXV_407_ServerTurbine 145559eb965c-9150-42b7-a0ec-22151b9897c5_KB%f%N8V-HFG%f%Q4-MG%f%XVD-347P%f%6-PD%f%QGT_191_IoTEnterpriseS_VB,NI
1456d30136fc-cb4b-416e-a23d-87207abc44a9_6X%f%N7V-PCB%f%DC-BD%f%BRH-8DQY%f%7-G6%f%R44_202_CloudEditionN
1457ca7df2e3-5ea0-47b8-9ac1-b1be4d8edd69_37%f%D7F-N49%f%CB-WQ%f%R8W-TBJ7%f%3-FM%f%8RX_203_CloudEdition
1458c2e946d1-cfa2-4523-8c87-30bc696ee584_NQ%f%8HH-FTD%f%TM-6V%f%GY7-TQ3D%f%V-XF%f%BV2_407_ServerTurbine_Ge
145919b5e0fb-4431-46bc-bac1-2f1873e4ae73_NT%f%BV8-9K7%f%Q8-V2%f%7C6-M2BT%f%V-KH%f%MXV_407_ServerTurbine_RS5
1356) do ( 1460) do (
1357for /f "tokens=1-5 delims=_" %%A in ("%%#") do if %osSKU%==%%C ( 1461for /f "tokens=1-5 delims=_" %%A in ("%%#") do if %osSKU%==%%C (
1462set skufound=1
1358if %1==getkey if not defined key echo "!applist!" | find /i "%%A" %nul1% && set key=%%B 1463if %1==getkey if not defined key echo "!applist!" | find /i "%%A" %nul1% && set key=%%B
1359) 1464)
1360) 1465)
@@ -1380,6 +1485,7 @@ if %_NoEditionChange%==1 exit /b
1380 1485
1381for %%# in ( 1486for %%# in (
1382188_IoTEnterprise__________________8ab9bdd1-1f67-4997-82d9-8878520837d9_73111121-5638-40f6-bc11-f1d7b0d64300_NPP%f%R9-FWD%f%CX-D2%f%C8J-H872%f%K-2Y%f%T43_Enterprise 1487188_IoTEnterprise__________________8ab9bdd1-1f67-4997-82d9-8878520837d9_73111121-5638-40f6-bc11-f1d7b0d64300_NPP%f%R9-FWD%f%CX-D2%f%C8J-H872%f%K-2Y%f%T43_Enterprise
1488206_IoTEnterpriseK_________________80083eae-7031-4394-9e88-4901973d56fe_73111121-5638-40f6-bc11-f1d7b0d64300_NPP%f%R9-FWD%f%CX-D2%f%C8J-H872%f%K-2Y%f%T43_Enterprise
1383191_IoTEnterpriseS-2021____________ed655016-a9e8-4434-95d9-4345352c2552_32d2fab3-e4a8-42c2-923b-4bf4fd13e6ee_M7X%f%TQ-FN8%f%P6-TT%f%KYV-9D4C%f%C-J4%f%62D_EnterpriseS-2021 1489191_IoTEnterpriseS-2021____________ed655016-a9e8-4434-95d9-4345352c2552_32d2fab3-e4a8-42c2-923b-4bf4fd13e6ee_M7X%f%TQ-FN8%f%P6-TT%f%KYV-9D4C%f%C-J4%f%62D_EnterpriseS-2021
1384205_IoTEnterpriseSK________________d4f9b41f-205c-405e-8e08-3d16e88e02be_59eb965c-9150-42b7-a0ec-22151b9897c5_KBN%f%8V-HFG%f%Q4-MG%f%XVD-347P%f%6-PD%f%QGT_IoTEnterpriseS 1490205_IoTEnterpriseSK________________d4f9b41f-205c-405e-8e08-3d16e88e02be_59eb965c-9150-42b7-a0ec-22151b9897c5_KBN%f%8V-HFG%f%Q4-MG%f%XVD-347P%f%6-PD%f%QGT_IoTEnterpriseS
1385138_ProfessionalSingleLanguage_____a48938aa-62fa-4966-9d44-9f04da3f72f2_2de67392-b7a7-462a-b1ca-108dd189f588_W26%f%9N-WFG%f%WX-YV%f%C9B-4J6C%f%9-T8%f%3GX_Professional 1491138_ProfessionalSingleLanguage_____a48938aa-62fa-4966-9d44-9f04da3f72f2_2de67392-b7a7-462a-b1ca-108dd189f588_W26%f%9N-WFG%f%WX-YV%f%C9B-4J6C%f%9-T8%f%3GX_Professional
diff --git a/MAS/Separate-Files-Version/Activators/Ohook_Activation_AIO.cmd b/MAS/Separate-Files-Version/Activators/Ohook_Activation_AIO.cmd
index 4dfe882..61ffe1e 100644
--- a/MAS/Separate-Files-Version/Activators/Ohook_Activation_AIO.cmd
+++ b/MAS/Separate-Files-Version/Activators/Ohook_Activation_AIO.cmd
@@ -1,9 +1,18 @@
1@set masver=2.4 1@set masver=2.5
2@setlocal DisableDelayedExpansion 2@setlocal DisableDelayedExpansion
3@echo off 3@echo off
4 4
5
6
7::============================================================================
5:: 8::
6::======================================================================================================================================== 9:: This script is a part of 'Microsoft_Activation_Scripts' (MAS) project.
10::
11:: Homepage: mass grave[.]dev
12:: Email: windowsaddict@protonmail.com
13::
14::============================================================================
15
7 16
8 17
9:: To activate Office with Ohook activation, run the script with "/Ohook" parameter or change 0 to 1 in below line 18:: To activate Office with Ohook activation, run the script with "/Ohook" parameter or change 0 to 1 in below line
@@ -15,6 +24,7 @@ set _rem=0
15:: If value is changed in above lines or parameter is used then script will run in unattended mode 24:: If value is changed in above lines or parameter is used then script will run in unattended mode
16 25
17 26
27
18::======================================================================================================================================== 28::========================================================================================================================================
19 29
20:: Set Path variable, it helps if it is misconfigured in the system 30:: Set Path variable, it helps if it is misconfigured in the system
@@ -178,7 +188,7 @@ set "_batp=%_batf:'=''%"
178set _PSarg="""%~f0""" -el %_args% 188set _PSarg="""%~f0""" -el %_args%
179 189
180set "_ttemp=%userprofile%\AppData\Local\Temp" 190set "_ttemp=%userprofile%\AppData\Local\Temp"
181 191set "_Local=%LocalAppData%"
182setlocal EnableDelayedExpansion 192setlocal EnableDelayedExpansion
183 193
184::======================================================================================================================================== 194::========================================================================================================================================
@@ -239,7 +249,7 @@ echo You are running outdated version MAS %masver%
239echo ________________________________________________ 249echo ________________________________________________
240echo: 250echo:
241if not %_unattended%==1 ( 251if not %_unattended%==1 (
242echo [1] Download Latest MAS 252echo [1] Get Latest MAS
243echo [0] Continue Anyway 253echo [0] Continue Anyway
244echo: 254echo:
245call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" 255call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :"
@@ -292,13 +302,29 @@ goto :oh_menu
292:oh_menu2 302:oh_menu2
293 303
294cls 304cls
295mode 128, 32 305mode 130, 32
296%psc% "&{$W=$Host.UI.RawUI.WindowSize;$B=$Host.UI.RawUI.BufferSize;$W.Height=32;$B.Height=300;$Host.UI.RawUI.WindowSize=$W;$Host.UI.RawUI.BufferSize=$B;}" 306%psc% "&{$W=$Host.UI.RawUI.WindowSize;$B=$Host.UI.RawUI.BufferSize;$W.Height=32;$B.Height=300;$Host.UI.RawUI.WindowSize=$W;$Host.UI.RawUI.BufferSize=$B;}"
297 307
298title Ohook Activation %masver% 308title Ohook Activation %masver%
299 309
300echo: 310echo:
301echo Initializing... 311echo Initializing...
312
313:: Check PowerShell
314
315%psc% $ExecutionContext.SessionState.LanguageMode %nul2% | find /i "Full" %nul1% || (
316%eline%
317%psc% $ExecutionContext.SessionState.LanguageMode
318echo:
319echo PowerShell is not working. Aborting...
320echo If you have applied restrictions on Powershell then undo those changes.
321echo:
322echo Check this page for help. %mas%troubleshoot
323goto dk_done
324)
325
326::========================================================================================================================================
327
302call :dk_product 328call :dk_product
303call :dk_ckeckwmic 329call :dk_ckeckwmic
304 330
@@ -353,8 +379,8 @@ set o16uwp=
353 379
354set _68=HKLM\SOFTWARE\Microsoft\Office 380set _68=HKLM\SOFTWARE\Microsoft\Office
355set _86=HKLM\SOFTWARE\Wow6432Node\Microsoft\Office 381set _86=HKLM\SOFTWARE\Wow6432Node\Microsoft\Office
356%nul% reg query %_68%\14.0\Common\InstallRoot /v Path && set o14msi=Office 2010 MSI 382for /f "skip=2 tokens=2*" %%a in ('"reg query %_86%\14.0\Common\InstallRoot /v Path" %nul6%') do if exist "%%b\EntityPicker.dll" (set o14msi=Office 2010 MSI )
357%nul% reg query %_86%\14.0\Common\InstallRoot /v Path && set o14msi=Office 2010 MSI 383for /f "skip=2 tokens=2*" %%a in ('"reg query %_68%\14.0\Common\InstallRoot /v Path" %nul6%') do if exist "%%b\EntityPicker.dll" (set o14msi=Office 2010 MSI )
358%nul% reg query %_68%\14.0\CVH /f Click2run /k && set o14c2r=Office 2010 C2R 384%nul% reg query %_68%\14.0\CVH /f Click2run /k && set o14c2r=Office 2010 C2R
359%nul% reg query %_86%\14.0\CVH /f Click2run /k && set o14c2r=Office 2010 C2R 385%nul% reg query %_86%\14.0\CVH /f Click2run /k && set o14c2r=Office 2010 C2R
360 386
@@ -433,10 +459,11 @@ if not defined _oArch for /f "skip=2 tokens=2*" %%a in ('"reg query %o15c2r_reg%
433 459
434echo "%o15c2r_reg%" | find /i "Wow6432Node" %nul1% && (set _tok=10) || (set _tok=9) 460echo "%o15c2r_reg%" | find /i "Wow6432Node" %nul1% && (set _tok=10) || (set _tok=9)
435for /f "tokens=%_tok% delims=\" %%a in ('reg query %o15c2r_reg%\ProductReleaseIDs\Active %nul6% ^| findstr /i "Retail Volume"') do ( 461for /f "tokens=%_tok% delims=\" %%a in ('reg query %o15c2r_reg%\ProductReleaseIDs\Active %nul6% ^| findstr /i "Retail Volume"') do (
436if not defined _oIds (set "_oIds=%%a") else (set "_oIds=!_oIds! %%a") 462echo "!_oIds!" | find /i " %%a " %nul1% || (set "_oIds= !_oIds! %%a ")
437) 463)
438 464
439set "_oLPath=%_oRoot%\Licenses" 465set "_oLPath=%_oRoot%\Licenses"
466set "_oIntegrator=%_oRoot%\integration\integrator.exe"
440 467
441if [%_oArch%]==[x64] (set "_hookPath=%_oRoot%\vfs\System" & set "_hook=sppc64.dll") 468if [%_oArch%]==[x64] (set "_hookPath=%_oRoot%\vfs\System" & set "_hook=sppc64.dll")
442if [%_oArch%]==[x86] (set "_hookPath=%_oRoot%\vfs\SystemX86" & set "_hook=sppc32.dll") 469if [%_oArch%]==[x86] (set "_hookPath=%_oRoot%\vfs\SystemX86" & set "_hook=sppc32.dll")
@@ -476,11 +503,12 @@ for /f "skip=2 tokens=2*" %%a in ('"reg query %o16c2r_reg%\Configuration /v Plat
476 503
477echo "%o16c2r_reg%" | find /i "Wow6432Node" %nul1% && (set _tok=9) || (set _tok=8) 504echo "%o16c2r_reg%" | find /i "Wow6432Node" %nul1% && (set _tok=9) || (set _tok=8)
478for /f "tokens=%_tok% delims=\" %%a in ('reg query "%o16c2r_reg%\ProductReleaseIDs" /s /f ".16" /k %nul6% ^| findstr /i "Retail Volume"') do ( 505for /f "tokens=%_tok% delims=\" %%a in ('reg query "%o16c2r_reg%\ProductReleaseIDs" /s /f ".16" /k %nul6% ^| findstr /i "Retail Volume"') do (
479if not defined _oIds (set "_oIds=%%a") else (set "_oIds=!_oIds! %%a") 506echo "!_oIds!" | find /i " %%a " %nul1% || (set "_oIds= !_oIds! %%a ")
480) 507)
481set _oIds=%_oIds:.16=% 508set _oIds=%_oIds:.16=%
482 509
483set "_oLPath=%_oRoot%\Licenses16" 510set "_oLPath=%_oRoot%\Licenses16"
511set "_oIntegrator=%_oRoot%\integration\integrator.exe"
484 512
485if [%_oArch%]==[x64] (set "_hookPath=%_oRoot%\vfs\System" & set "_hook=sppc64.dll") 513if [%_oArch%]==[x64] (set "_hookPath=%_oRoot%\vfs\System" & set "_hook=sppc64.dll")
486if [%_oArch%]==[x86] (set "_hookPath=%_oRoot%\vfs\SystemX86" & set "_hook=sppc32.dll") 514if [%_oArch%]==[x86] (set "_hookPath=%_oRoot%\vfs\SystemX86" & set "_hook=sppc32.dll")
@@ -510,12 +538,16 @@ call :oh_hookinstall
510 538
511set _sid= 539set _sid=
512set sub_next= 540set sub_next=
513for /f "tokens=* delims=" %%a in ('%psc% "$userSIDs = Get-WmiObject -Class Win32_UserAccount | ForEach-Object {write-host $_.SID}" %nul6%') do (if defined _sid (set "_sid=!_sid! HKU\%%a") else (set "_sid=HKU\%%a")) 541
542for /f "tokens=* delims=" %%a in ('%psc% "Get-ChildItem -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList' | ForEach-Object { Split-Path -Path $_.PSPath -Leaf }" %nul6%') do (if defined _sid (set "_sid=!_sid! HKU\%%a") else (set "_sid=HKU\%%a"))
514 543
515if not defined _sid ( 544if not defined _sid (
516call :dk_color %Red% "Checking User Accounts SID [Not Found]" 545call :dk_color %Red% "Checking User Accounts SID [Not Found]"
517) 546)
518 547
548dir /b /s /a:-d "!_Local!\Microsoft\Office\Licenses\*" %nul% && set sub_next=1
549dir /b /s /a:-d "!ProgramData!\Microsoft\Office\Licenses\*" %nul% && set sub_next=1
550
519for %%# in (!_sid! HKCU) do if not defined sub_next ( 551for %%# in (!_sid! HKCU) do if not defined sub_next (
520reg query %%#\Software\Microsoft\Office\16.0\Common\Licensing\LicensingNext /v MigrationToV5Done %nul2% | find /i "0x1" %nul% && ( 552reg query %%#\Software\Microsoft\Office\16.0\Common\Licensing\LicensingNext /v MigrationToV5Done %nul2% | find /i "0x1" %nul% && (
521reg query %%#\Software\Microsoft\Office\16.0\Common\Licensing\LicensingNext %nul2% | findstr /i "volume retail" %nul2% | findstr /i "0x2 0x3" %nul% && ( 553reg query %%#\Software\Microsoft\Office\16.0\Common\Licensing\LicensingNext %nul2% | findstr /i "volume retail" %nul2% | findstr /i "0x2 0x3" %nul% && (
@@ -524,11 +556,15 @@ set sub_next=1
524) 556)
525) 557)
526 558
527if defined sub_next for %%# in (!_sid! HKCU) do ( 559if defined sub_next (
560rmdir /s /q "!_Local!\Microsoft\Office\Licenses\" %nul%
561rmdir /s /q "!ProgramData!\Microsoft\Office\Licenses\" %nul%
562for %%# in (!_sid! HKCU) do (
528reg delete %%#\Software\Microsoft\Office\16.0\Common\Licensing /f %nul% 563reg delete %%#\Software\Microsoft\Office\16.0\Common\Licensing /f %nul%
529reg delete %%#\Software\Microsoft\Office\16.0\Common\Identity /f %nul% 564reg delete %%#\Software\Microsoft\Office\16.0\Common\Identity /f %nul%
530reg delete %%#\Software\Microsoft\Office\16.0\Registration /f %nul% 565reg delete %%#\Software\Microsoft\Office\16.0\Registration /f %nul%
531) 566)
567)
532 568
533if defined sub_next echo Removing Office vNext Block [Successful] 569if defined sub_next echo Removing Office vNext Block [Successful]
534 570
@@ -540,7 +576,7 @@ if defined sub_next echo Removing Office vNext Block [Successful]
540if defined o16c2r ( 576if defined o16c2r (
541for %%# in (!_sid! HKCU) do (reg delete %%#\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency /f %nul%) 577for %%# in (!_sid! HKCU) do (reg delete %%#\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency /f %nul%)
542for %%# in (!_sid! HKCU) do ( 578for %%# in (!_sid! HKCU) do (
543reg query %%# %nul% && ( 579reg query "%%#\Volatile Environment" %nul% && (
544reg add %%#\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency /v "TimeOfLastHeartbeatFailure" /t REG_SZ /d "2040-01-01T00:00:00Z" /f %nul% 580reg add %%#\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency /v "TimeOfLastHeartbeatFailure" /t REG_SZ /d "2040-01-01T00:00:00Z" /f %nul%
545) 581)
546) 582)
@@ -549,7 +585,7 @@ echo Adding Reg Keys To Skip License Check [Successful]
549 585
550::======================================================================================================================================== 586::========================================================================================================================================
551 587
552:: mass[]grave[.]dev/office-license-is-not-genuine.html 588:: mass grave[.]dev/office-license-is-not-genuine.html
553:: Add registry keys for volume products so that 'non-genuine' banner won't appear 589:: Add registry keys for volume products so that 'non-genuine' banner won't appear
554:: Script already is using MAK instead of GVLK so it won't appear anyway, but registry keys are added incase Office installs default GVLK grace key for volume products 590:: Script already is using MAK instead of GVLK so it won't appear anyway, but registry keys are added incase Office installs default GVLK grace key for volume products
555 591
@@ -671,7 +707,7 @@ echo:
671echo Deleting - Registry keys to skip license check 707echo Deleting - Registry keys to skip license check
672reg delete HKCU\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency /f 708reg delete HKCU\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency /f
673 709
674for /f "tokens=* delims=" %%a in ('%psc% "$userSIDs = Get-WmiObject -Class Win32_UserAccount | ForEach-Object {write-host $_.SID}" %nul6%') do (if defined _sid (set "_sid=!_sid! %%a") else (set "_sid=%%a")) 710for /f "tokens=* delims=" %%a in ('%psc% "Get-ChildItem -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList' | ForEach-Object { Split-Path -Path $_.PSPath -Leaf }" %nul6%') do (if defined _sid (set "_sid=!_sid! %%a") else (set "_sid=%%a"))
675for %%# in (!_sid!) do (reg query HKU\%%#\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency %nul% && ( 711for %%# in (!_sid!) do (reg query HKU\%%#\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency %nul% && (
676reg delete HKU\%%#\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency /f 712reg delete HKU\%%#\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency /f
677) 713)
@@ -740,10 +776,10 @@ for /f "skip=2 tokens=2*" %%a in ('"reg query %_68%\ClickToRun /v InstallPath" %
740for /f "skip=2 tokens=2*" %%a in ('"reg query %_86%\15.0\ClickToRun /v InstallPath" %nul6%') do if exist "%%b\root\Licenses\ProPlus*.xrm-ms" (set o15c2r=1&set o15c2r_reg=%_86%\15.0\ClickToRun) 776for /f "skip=2 tokens=2*" %%a in ('"reg query %_86%\15.0\ClickToRun /v InstallPath" %nul6%') do if exist "%%b\root\Licenses\ProPlus*.xrm-ms" (set o15c2r=1&set o15c2r_reg=%_86%\15.0\ClickToRun)
741for /f "skip=2 tokens=2*" %%a in ('"reg query %_68%\15.0\ClickToRun /v InstallPath" %nul6%') do if exist "%%b\root\Licenses\ProPlus*.xrm-ms" (set o15c2r=1&set o15c2r_reg=%_68%\15.0\ClickToRun) 777for /f "skip=2 tokens=2*" %%a in ('"reg query %_68%\15.0\ClickToRun /v InstallPath" %nul6%') do if exist "%%b\root\Licenses\ProPlus*.xrm-ms" (set o15c2r=1&set o15c2r_reg=%_68%\15.0\ClickToRun)
742 778
743for /f "skip=2 tokens=2*" %%a in ('"reg query %_86%\16.0\Common\InstallRoot /v Path" %nul6%') do if exist "%%b\OSPP.VBS" (set o16msi=1&set o16msi_reg=%_86%\16.0) 779for /f "skip=2 tokens=2*" %%a in ('"reg query %_86%\16.0\Common\InstallRoot /v Path" %nul6%') do if exist "%%b\EntityPicker.dll" (set o16msi=1&set o16msi_reg=%_86%\16.0)
744for /f "skip=2 tokens=2*" %%a in ('"reg query %_68%\16.0\Common\InstallRoot /v Path" %nul6%') do if exist "%%b\OSPP.VBS" (set o16msi=1&set o16msi_reg=%_68%\16.0) 780for /f "skip=2 tokens=2*" %%a in ('"reg query %_68%\16.0\Common\InstallRoot /v Path" %nul6%') do if exist "%%b\EntityPicker.dll" (set o16msi=1&set o16msi_reg=%_68%\16.0)
745for /f "skip=2 tokens=2*" %%a in ('"reg query %_86%\15.0\Common\InstallRoot /v Path" %nul6%') do if exist "%%b\OSPP.VBS" (set o15msi=1&set o15msi_reg=%_86%\15.0) 781for /f "skip=2 tokens=2*" %%a in ('"reg query %_86%\15.0\Common\InstallRoot /v Path" %nul6%') do if exist "%%b\EntityPicker.dll" (set o15msi=1&set o15msi_reg=%_86%\15.0)
746for /f "skip=2 tokens=2*" %%a in ('"reg query %_68%\15.0\Common\InstallRoot /v Path" %nul6%') do if exist "%%b\OSPP.VBS" (set o15msi=1&set o15msi_reg=%_68%\15.0) 782for /f "skip=2 tokens=2*" %%a in ('"reg query %_68%\15.0\Common\InstallRoot /v Path" %nul6%') do if exist "%%b\EntityPicker.dll" (set o15msi=1&set o15msi_reg=%_68%\15.0)
747 783
748exit /b 784exit /b
749 785
@@ -778,7 +814,21 @@ exit /b
778 814
779if not defined _oLPath exit /b 815if not defined _oLPath exit /b
780 816
781set _License=%_prod:XVolume=XC2RVL_% 817if %oVer%==16 (
818"!_oIntegrator!" /I /License PRIDName=%_License%.16 PidKey=%_key% %nul%
819) else (
820"!_oIntegrator!" /I /License PRIDName=%_License% PidKey=%_key% %nul%
821)
822
823call :oh_actids
824echo "!oapplist!" | find /i "!_actid!" %nul1% && (
825call :dk_color %Gray% "Installing Missing License Files [Office %oVer%.0 %_prod%] [Successful]"
826exit /b
827)
828
829:: Fallback to /ilc method to install licenses incase integrator.exe is not working
830
831set _License=%_License:XVolume=XC2RVL_%
782 832
783set _License=%_License:O365EduCloudRetail=O365EduCloudEDUR_% 833set _License=%_License:O365EduCloudRetail=O365EduCloudEDUR_%
784 834
@@ -787,6 +837,8 @@ set _License=%_License:ProjectStdRetail=ProjectStdO365R_%
787set _License=%_License:VisioProRetail=VisioProO365R_% 837set _License=%_License:VisioProRetail=VisioProO365R_%
788set _License=%_License:VisioStdRetail=VisioStdO365R_% 838set _License=%_License:VisioStdRetail=VisioStdO365R_%
789 839
840if defined _preview set _License=%_License:Volume=PreviewVL_%
841
790set _License=%_License:Retail=R_% 842set _License=%_License:Retail=R_%
791set _License=%_License:Volume=VL_% 843set _License=%_License:Volume=VL_%
792 844
@@ -800,9 +852,8 @@ cscript //nologo %windir%\system32\slmgr.vbs /ilc "!_oLPath!\%%~nx#" %nul%
800) 852)
801 853
802call :oh_actids 854call :oh_actids
803
804echo "!oapplist!" | find /i "!_actid!" %nul1% && ( 855echo "!oapplist!" | find /i "!_actid!" %nul1% && (
805call :dk_color %Gray% "Installing Missing License Files [Office %oVer%.0 %_prod%] [Successful]" 856call :dk_color %Gray% "Installing Missing License Files [Office %oVer%.0 %_prod%] [Successful with /ilc Method]"
806) || ( 857) || (
807set error=1 858set error=1
808call :dk_color %Red% "Installing Missing License Files [Office %oVer%.0 %_prod%] [Failed]" 859call :dk_color %Red% "Installing Missing License Files [Office %oVer%.0 %_prod%] [Failed]"
@@ -866,17 +917,23 @@ for %%# in (%_oIds%) do (
866set _key= 917set _key=
867set _actid= 918set _actid=
868set _lic= 919set _lic=
869set _prod=%%# 920set _preview=
921set _License=%%#
922
923echo %%# | find /i "2024" %nul% && (
924if exist "!_oLPath!\ProPlus2024PreviewVL_*.xrm-ms" if not exist "!_oLPath!\ProPlus2024VL_*.xrm-ms" set _preview=-Preview
925)
926set _prod=%%#!_preview!
870 927
871call :ohookdata getinfo %%# 928call :ohookdata getinfo !_prod!
872 929
873if not [!_key!]==[] ( 930if not [!_key!]==[] (
874echo "!oapplist!" | find /i "!_actid!" %nul1% || call :oh_installlic 931echo "!oapplist!" | find /i "!_actid!" %nul1% || call :oh_installlic
875call :oh_installkey 932call :oh_installkey
876) else ( 933) else (
877set error=1 934set error=1
878call :dk_color %Red% "Checking Product In Script [Office %oVer%.0 %%# not found in script]" 935call :dk_color %Red% "Checking Product In Script [Office %oVer%.0 !_prod! not found in script]"
879echo Make sure you are using Latest MAS script. 936call :dk_color %Blue% "Make sure you are using Latest MAS script."
880) 937)
881) 938)
882 939
@@ -1023,7 +1080,11 @@ set _corrupt=
1023sc start %%# %nul% 1080sc start %%# %nul%
1024if !errorlevel! EQU 1060 set _corrupt=1 1081if !errorlevel! EQU 1060 set _corrupt=1
1025sc query %%# %nul% || set _corrupt=1 1082sc query %%# %nul% || set _corrupt=1
1026for %%G in (DependOnService Description DisplayName ErrorControl ImagePath ObjectName Start Type) do if not defined _corrupt (reg query HKLM\SYSTEM\CurrentControlSet\Services\%%# /v %%G %nul% || set _corrupt=1) 1083for %%G in (DependOnService Description DisplayName ErrorControl ImagePath ObjectName Start Type) do if not defined _corrupt (
1084reg query HKLM\SYSTEM\CurrentControlSet\Services\%%# /v %%G %nul% || set _corrupt=1
1085if /i %%#==TrustedInstaller if /i %%G==DependOnService set _corrupt=
1086)
1087
1027if defined _corrupt (if defined serv_cor (set "serv_cor=!serv_cor! %%#") else (set "serv_cor=%%#")) 1088if defined _corrupt (if defined serv_cor (set "serv_cor=!serv_cor! %%#") else (set "serv_cor=%%#"))
1028) 1089)
1029 1090
@@ -1049,13 +1110,18 @@ set serv_cste=
1049 1110
1050if defined serv_ste ( 1111if defined serv_ste (
1051for %%# in (%serv_ste%) do ( 1112for %%# in (%serv_ste%) do (
1052if /i %%#==ClipSVC (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "3" /f %nul% & sc config %%# start= demand %nul%) 1113if /i %%#==ClipSVC (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "3" /f %nul% & sc config %%# start= demand %nul%)
1053if /i %%#==wlidsvc sc config %%# start= demand %nul% 1114if /i %%#==wlidsvc sc config %%# start= demand %nul%
1054if /i %%#==sppsvc (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "2" /f %nul% & sc config %%# start= delayed-auto %nul%) 1115if /i %%#==sppsvc (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "2" /f %nul% & sc config %%# start= delayed-auto %nul%)
1055if /i %%#==KeyIso sc config %%# start= demand %nul% 1116if /i %%#==KeyIso sc config %%# start= demand %nul%
1056if /i %%#==LicenseManager sc config %%# start= demand %nul% 1117if /i %%#==LicenseManager sc config %%# start= demand %nul%
1057if /i %%#==Winmgmt sc config %%# start= auto %nul% 1118if /i %%#==Winmgmt sc config %%# start= auto %nul%
1058if /i %%#==wuauserv sc config %%# start= demand %nul% 1119if /i %%#==DoSvc sc config %%# start= delayed-auto %nul%
1120if /i %%#==UsoSvc sc config %%# start= delayed-auto %nul%
1121if /i %%#==CryptSvc sc config %%# start= auto %nul%
1122if /i %%#==BITS sc config %%# start= delayed-auto %nul%
1123if /i %%#==wuauserv sc config %%# start= demand %nul%
1124if /i %%#==WaaSMedicSvc sc config %%# start= demand %nul%
1059if !errorlevel!==0 ( 1125if !errorlevel!==0 (
1060if defined serv_csts (set "serv_csts=!serv_csts! %%#") else (set "serv_csts=%%#") 1126if defined serv_csts (set "serv_csts=!serv_csts! %%#") else (set "serv_csts=%%#")
1061) else ( 1127) else (
@@ -1080,9 +1146,12 @@ set serv_e=
1080for %%# in (%_serv%) do ( 1146for %%# in (%_serv%) do (
1081set errorcode= 1147set errorcode=
1082set checkerror= 1148set checkerror=
1083net start %%# /y %nul% 1149
1150sc query %%# | find /i "RUNNING" %nul% || (
1151%psc% Start-Service %%# %nul%
1084set errorcode=!errorlevel! 1152set errorcode=!errorlevel!
1085sc query %%# | find /i "RUNNING" %nul% || set checkerror=1 1153sc query %%# | find /i "RUNNING" %nul% || set checkerror=1
1154)
1086 1155
1087sc start %%# %nul% 1156sc start %%# %nul%
1088if !errorlevel! NEQ 1056 if !errorlevel! NEQ 0 (set errorcode=!errorlevel!&set checkerror=1) 1157if !errorlevel! NEQ 1056 if !errorlevel! NEQ 0 (set errorcode=!errorlevel!&set checkerror=1)
@@ -1093,7 +1162,7 @@ if defined serv_e (
1093set error=1 1162set error=1
1094call :dk_color %Red% "Starting Services [Failed] [%serv_e%]" 1163call :dk_color %Red% "Starting Services [Failed] [%serv_e%]"
1095echo %serv_e% | findstr /i "ClipSVC-1058 sppsvc-1058" %nul% && ( 1164echo %serv_e% | findstr /i "ClipSVC-1058 sppsvc-1058" %nul% && (
1096call :dk_color %Blue% "Restart the system to fix disabled service error 1058." 1165call :dk_color %Blue% "Restart the system to fix this error."
1097set showfix=1 1166set showfix=1
1098) 1167)
1099) 1168)
@@ -1105,14 +1174,18 @@ set showfix=1
1105if defined safeboot_option ( 1174if defined safeboot_option (
1106set error=1 1175set error=1
1107set showfix=1 1176set showfix=1
1108call :dk_color2 %Red% "Checking Boot Mode " %Blue% "[Safe mode found. Run in normal mode.]" 1177call :dk_color2 %Red% "Checking Boot Mode [%safeboot_option%] " %Blue% "[Safe mode found. Run in normal mode.]"
1109) 1178)
1110 1179
1111 1180
1112reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State" %nul2% | find /i "IMAGE_STATE_COMPLETE" %nul1% || ( 1181for /f "skip=2 tokens=2*" %%A in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State" /v ImageState') do (set imagestate=%%B)
1182if /i not "%imagestate%"=="IMAGE_STATE_COMPLETE" (
1113set error=1 1183set error=1
1184call :dk_color %Red% "Checking Windows Setup State [%imagestate%]"
1185echo "%imagestate%" | find /i "RESEAL" %nul% && (
1114set showfix=1 1186set showfix=1
1115call :dk_color2 %Red% "Checking Audit Mode " %Blue% "[IMAGE_STATE_COMPLETE status not found. Run in normal mode.]" 1187call :dk_color %Blue% "You need to run it in normal mode in case you are running it in Audit Mode."
1188)
1116) 1189)
1117 1190
1118 1191
@@ -1123,18 +1196,60 @@ call :dk_color2 %Red% "Checking WinPE " %Blue% "[WinPE
1123) 1196)
1124 1197
1125 1198
1126%psc% $ExecutionContext.SessionState.LanguageMode %nul2% | find /i "Full" %nul1% || ( 1199set wpainfo=
1200set wpaerror=
1201for /f "delims=" %%a in ('%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':wpatest\:.*';iex ($f[1]);" %nul6%') do (set wpainfo=%%a)
1202echo "%wpainfo%" | find /i "Error Found" %nul% && (
1127set error=1 1203set error=1
1128call :dk_color %Red% "Checking Powershell [Not Responding]" 1204set wpaerror=1
1205call :dk_color %Red% "Checking WPA Registry Error [%wpainfo%]"
1206) || (
1207echo Checking WPA Registry Count [%wpainfo%]
1129) 1208)
1130 1209
1131 1210
1132DISM /English /Online /Get-CurrentEdition %nul% 1211DISM /English /Online /Get-CurrentEdition %nul%
1133set dism_error=%errorlevel% 1212set dism_error=%errorlevel%
1134cmd /c exit /b %dism_error% 1213cmd /c exit /b %dism_error%
1135if %dism_error% NEQ 0 set "dism_error=[0x%=ExitCode%]" 1214if %dism_error% NEQ 0 set "dism_error=0x%=ExitCode%"
1136if %dism_error% NEQ 0 ( 1215if %dism_error% NEQ 0 (
1137call :dk_color %Red% "Checking DISM [Not Responding] %dism_error%" 1216call :dk_color %Red% "Checking DISM [Not Responding] [%dism_error%]"
1217)
1218
1219
1220if not defined officeact if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" (
1221set error=1
1222set showfix=1
1223call :dk_color %Red% "Checking Eval Packages [Non-Eval Licenses are installed in Eval Windows]"
1224call :dk_color %Blue% "Evaluation Windows can not be activated and different License install may lead to errors."
1225call :dk_color %Blue% "It is recommended to install full version of %winos%."
1226call :dk_color %Blue% "You can download it from %mas%genuine-installation-media.html"
1227)
1228
1229
1230set osedition=
1231for /f "skip=2 tokens=3" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul6%') do set "osedition=%%a"
1232
1233:: Workaround for an issue in builds between 1607 and 1709 where ProfessionalEducation is shown as Professional
1234
1235if "%osSKU%"=="164" set osedition=ProfessionalEducation
1236if "%osSKU%"=="165" set osedition=ProfessionalEducationN
1237
1238if not defined officeact (
1239if not defined osedition (
1240call :dk_color %Red% "Checking Edition Name [Not Found In Registry]"
1241) else (
1242
1243if not exist "%SystemRoot%\System32\spp\tokens\skus\%osedition%\%osedition%*.xrm-ms" (
1244set error=1
1245call :dk_color %Red% "Checking License Files [Not Found] [%osedition%]"
1246)
1247
1248if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*-%osedition%-*.mum" (
1249set error=1
1250call :dk_color %Red% "Checking Package File [Not Found] [%osedition%]"
1251)
1252)
1138) 1253)
1139 1254
1140 1255
@@ -1167,6 +1282,13 @@ set showfix=1
1167) 1282)
1168 1283
1169 1284
1285%nul% set /a "sum=%slcSKU%+%regSKU%+%wmiSKU%"
1286set /a "sum/=3"
1287if not defined officeact if not "%sum%"=="%slcSKU%" (
1288call :dk_color %Red% "Checking SLC/WMI/REG SKU [Difference Found - SLC:%slcSKU% WMI:%wmiSKU% Reg:%regSKU%]"
1289)
1290
1291
1170reg query "HKU\S-1-5-20\Software\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\PersistedTSReArmed" %nul% && ( 1292reg query "HKU\S-1-5-20\Software\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\PersistedTSReArmed" %nul% && (
1171set error=1 1293set error=1
1172set showfix=1 1294set showfix=1
@@ -1184,8 +1306,7 @@ call :dk_color2 %Red% "Checking ClipSVC " %Blue% "[System
1184for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "SkipRearm" %nul6%') do if /i %%b NEQ 0x0 ( 1306for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "SkipRearm" %nul6%') do if /i %%b NEQ 0x0 (
1185reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "SkipRearm" /t REG_DWORD /d "0" /f %nul% 1307reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "SkipRearm" /t REG_DWORD /d "0" /f %nul%
1186call :dk_color %Red% "Checking SkipRearm [Default 0 Value Not Found. Changing To 0]" 1308call :dk_color %Red% "Checking SkipRearm [Default 0 Value Not Found. Changing To 0]"
1187net stop sppsvc /y %nul% 1309%psc% Restart-Service sppsvc %nul%
1188net start sppsvc /y %nul%
1189set error=1 1310set error=1
1190) 1311)
1191 1312
@@ -1215,7 +1336,7 @@ call :dk_color %Gray% "Checking SPP Token Folder [Not Found. Creat
1215 1336
1216call :dk_actids 1337call :dk_actids
1217if not defined applist ( 1338if not defined applist (
1218net stop sppsvc /y %nul% 1339%psc% Stop-Service sppsvc %nul%
1219cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% 1340cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul%
1220if !errorlevel! NEQ 0 cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% 1341if !errorlevel! NEQ 0 cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul%
1221call :dk_refresh 1342call :dk_refresh
@@ -1240,25 +1361,9 @@ call :dk_color %Red% "Checking sppsvc.exe File [Not Found]"
1240) 1361)
1241 1362
1242 1363
1243:: Below checks are performed if required services are not disabled or corrupted + if there is any error + slmgr /dlv errorlevel is not Zero + no fix was shown before 1364:: This code checks if NT SERVICE\sppsvc has permission access to tokens folder and required registry keys. It's often caused by gaming spoofers.
1244 1365
1245set wpaerror=
1246set permerror= 1366set permerror=
1247if not defined serv_cor if not defined serv_cste if defined error if /i not %error_code%==0 if not defined showfix (
1248
1249REM This code checks for invalid registry keys in HKLM\SYSTEM\WPA. This issue may appear even on healthy systems.
1250
1251if %winbuild% GEQ 14393 (
1252set /a count=0
1253for /f %%a in ('reg query "HKLM\SYSTEM\WPA" %nul6%') do set /a count+=1
1254for /L %%# in (1,1,!count!) do (
1255reg query "HKLM\SYSTEM\WPA\8DEC0AF1-0341-4b93-85CD-72606C2DF94C-7P-%%#" /ve /t REG_BINARY %nul% || set wpaerror=1
1256)
1257if defined wpaerror call :dk_color %Red% "Checking WPA Registry Keys [Error Found] [Registry Count - !count!]"
1258)
1259
1260REM This code checks if NT SERVICE\sppsvc has permission access to tokens folder and required registry keys. It's often caused by gaming spoofers.
1261
1262if not exist "%tokenstore%\" set permerror=1 1367if not exist "%tokenstore%\" set permerror=1
1263 1368
1264for %%# in ( 1369for %%# in (
@@ -1269,15 +1374,65 @@ for %%# in (
1269%psc% "$acl = Get-Acl '%%#'; if ($acl.Access.Where{ $_.IdentityReference -eq 'NT SERVICE\sppsvc' -and $_.AccessControlType -eq 'Deny' -or $acl.Access.IdentityReference -notcontains 'NT SERVICE\sppsvc'}) {Exit 2}" %nul% 1374%psc% "$acl = Get-Acl '%%#'; if ($acl.Access.Where{ $_.IdentityReference -eq 'NT SERVICE\sppsvc' -and $_.AccessControlType -eq 'Deny' -or $acl.Access.IdentityReference -notcontains 'NT SERVICE\sppsvc'}) {Exit 2}" %nul%
1270if !errorlevel!==2 set permerror=1 1375if !errorlevel!==2 set permerror=1
1271) 1376)
1272if defined permerror call :dk_color %Red% "Checking SPP Permissions [Error Found]" 1377if defined permerror (
1378set error=1
1379set showfix=1
1380call :dk_color %Red% "Checking SPP Permissions [Error Found]"
1381call :dk_color %Blue% "%_fixmsg%"
1382)
1383
1273 1384
1385:: If required services are not disabled or corrupted + if there is any error + slmgr /dlv errorlevel is not Zero + no fix was shown before
1386
1387if not defined serv_cor if not defined serv_cste if defined error if /i not %error_code%==0 if not defined showfix (
1274set showfix=1 1388set showfix=1
1275call :dk_color %Blue% "%_fixmsg%" 1389call :dk_color %Blue% "%_fixmsg%"
1276if not defined permerror call :dk_color %Blue% "If activation still fails then run Fix WPA Registry option." 1390if not defined permerror call :dk_color %Blue% "If activation still fails then run Fix WPA Registry option."
1277) 1391)
1278 1392
1393if not defined showfix if defined wpaerror (
1394set showfix=1
1395call :dk_color %Blue% "If activation fails then go back to Main Menu, select Troubleshoot and run Fix WPA Registry option."
1396)
1397
1279exit /b 1398exit /b
1280 1399
1400:: This code checks for invalid registry keys in HKLM\SYSTEM\WPA. This issue may appear even on healthy systems
1401
1402:wpatest:
1403$wpaKey = [Microsoft.Win32.RegistryKey]::OpenBaseKey('LocalMachine', 'Registry64').OpenSubKey("SYSTEM\\WPA")
1404$count = $wpaKey.SubKeyCount
1405
1406$osVersion = [System.Environment]::OSVersion.Version
1407$minBuildNumber = 14393
1408
1409if ($osVersion.Build -ge $minBuildNumber) {
1410 $subkeyHashTable = @{}
1411 foreach ($subkeyName in $wpaKey.GetSubKeyNames()) {
1412 $keyNumber = $subkeyName -replace '.*-', ''
1413 $subkeyHashTable[$keyNumber] = $true
1414 }
1415 for ($i=1; $i -le $count; $i++) {
1416 if (-not $subkeyHashTable.ContainsKey("$i")) {
1417 Write-Host "Total Keys $count. Error Found- $i key does not exist"
1418 $wpaKey.Close()
1419 exit
1420 }
1421 }
1422}
1423$wpaKey.GetSubKeyNames() | ForEach-Object {
1424 $subkey = $wpaKey.OpenSubKey($_)
1425 $p = $subkey.GetValueNames()
1426 if (($p | Where-Object { $subkey.GetValueKind($_) -eq [Microsoft.Win32.RegistryValueKind]::Binary }).Count -eq 0) {
1427 Write-Host "Total Keys $count. Error Found- Binary Data is corrupt"
1428 $wpaKey.Close()
1429 exit
1430 }
1431}
1432$count
1433$wpaKey.Close()
1434:wpatest:
1435
1281::======================================================================================================================================== 1436::========================================================================================================================================
1282 1437
1283:dk_color 1438:dk_color
@@ -1481,6 +1636,9 @@ for %%# in (
148116_d55f90ee-4ba2-4d02-b216-1300ee50e2af_BW%f%43B-4P%f%NFP-V63%f%7F-23%f%TR2-J47%f%TX_MAK-AE________VisioStd2021Volume 163616_d55f90ee-4ba2-4d02-b216-1300ee50e2af_BW%f%43B-4P%f%NFP-V63%f%7F-23%f%TR2-J47%f%TX_MAK-AE________VisioStd2021Volume
148216_fb33d997-4aa3-494e-8b58-03e9ab0f181d_VN%f%CC4-CJ%f%QVK-BKX%f%34-77%f%Y8H-CYX%f%MR_Retail________Word2021Retail 163716_fb33d997-4aa3-494e-8b58-03e9ab0f181d_VN%f%CC4-CJ%f%QVK-BKX%f%34-77%f%Y8H-CYX%f%MR_Retail________Word2021Retail
148316_0c728382-95fb-4a55-8f12-62e605f91727_BJ%f%G97-NW%f%3GM-8QQ%f%Q7-FH%f%76G-686%f%XM_MAK-AE________Word2021Volume 163816_0c728382-95fb-4a55-8f12-62e605f91727_BJ%f%G97-NW%f%3GM-8QQ%f%Q7-FH%f%76G-686%f%XM_MAK-AE________Word2021Volume
163916_8fdb1f1e-663f-4f2e-8fdb-7c35aee7d5ea_GN%f%XWX-DF%f%797-B2J%f%T3-82%f%W27-KHP%f%XT_MAK-AE________ProPlus2024Volume-Preview
164016_33b11b14-91fd-4f7b-b704-e64a055cf601_X8%f%6XX-N3%f%QMW-B4W%f%GQ-QC%f%B69-V26%f%KW_MAK_AE________ProjectPro2024Volume-Preview
164116_eb074198-7384-4bdd-8e6c-c3342dac8435_DW%f%99Y-H7%f%NT6-6B2%f%9D-8J%f%Q8F-R3Q%f%T7_MAK_AE________VisioPro2024Volume-Preview
148416_6337137e-7c07-4197-8986-bece6a76fc33_2P%f%3C9-BQ%f%NJH-VCV%f%PH-YD%f%Y6M-43J%f%PQ_Subscription__O365BusinessRetail 164216_6337137e-7c07-4197-8986-bece6a76fc33_2P%f%3C9-BQ%f%NJH-VCV%f%PH-YD%f%Y6M-43J%f%PQ_Subscription__O365BusinessRetail
148516_2f5c71b4-5b7a-4005-bb68-f9fac26f2ea3_W6%f%2NQ-26%f%7QR-RTF%f%74-PF%f%2MH-JQM%f%TH_Subscription__O365EduCloudRetail 164316_2f5c71b4-5b7a-4005-bb68-f9fac26f2ea3_W6%f%2NQ-26%f%7QR-RTF%f%74-PF%f%2MH-JQM%f%TH_Subscription__O365EduCloudRetail
148616_537ea5b5-7d50-4876-bd38-a53a77caca32_J2%f%W28-TN%f%9C8-26P%f%WV-F7%f%J4G-72X%f%CB_Subscription1_O365HomePremRetail 164416_537ea5b5-7d50-4876-bd38-a53a77caca32_J2%f%W28-TN%f%9C8-26P%f%WV-F7%f%J4G-72X%f%CB_Subscription1_O365HomePremRetail
@@ -1516,8 +1674,8 @@ exit /b
1516 1674
1517:oh_extractdll 1675:oh_extractdll
1518 1676
1519set _blank= 1677set b=
1520%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':%_hook%\:.*';$bytes = [Con%_blank%vert]::FromBas%_blank%e64String($f[1]); $PePath='%1'; $offset='%2'; $m=[io.file]::ReadAllText('!_batp!') -split ':hexedit\:.*';iex ($m[1]);" %nul2% | find /i "Error found" %nul1% && set hasherror=1 1678%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':%_hook%\:.*';$bytes = [Con%b%vert]::FromBas%b%e64String($f[1]); $PePath='%1'; $offset='%2'; $m=[io.file]::ReadAllText('!_batp!') -split ':hexedit\:.*';iex ($m[1]);" %nul2% | find /i "Error found" %nul1% && set hasherror=1
1521exit /b 1679exit /b
1522 1680
1523:hexedit: 1681:hexedit:
@@ -1600,13 +1758,13 @@ $MemoryStream.Close()
1600:: 1758::
1601:: The files are encoded in base64 to make MAS AIO version. 1759:: The files are encoded in base64 to make MAS AIO version.
1602:: 1760::
1603:: mass[]grave[.]dev/ohook 1761:: mass grave[.]dev/ohook
1604:: Here you can find the files source code and info on how to rebuild the identical sppc.dll files 1762:: Here you can find the files source code and info on how to rebuild the identical sppc.dll files
1605:: 1763::
1606:: stackoverflow.com/a/35335273 1764:: stackoverflow.com/a/35335273
1607:: Here you can check how to extract sppc.dll files from base64 1765:: Here you can check how to extract sppc.dll files from base64
1608:: 1766::
1609:: For any further question, feel free to contact us on mass[]grave[.]dev/contactus 1767:: For any further question, feel free to contact us on mass grave[.]dev/contactus
1610:: 1768::
1611::======================================================================================================================================== 1769::========================================================================================================================================
1612 1770
diff --git a/MAS/Separate-Files-Version/Activators/Online_KMS_Activation.cmd b/MAS/Separate-Files-Version/Activators/Online_KMS_Activation.cmd
index 8f8c1a4..2e72d71 100644
--- a/MAS/Separate-Files-Version/Activators/Online_KMS_Activation.cmd
+++ b/MAS/Separate-Files-Version/Activators/Online_KMS_Activation.cmd
@@ -1,9 +1,9 @@
1@set masver=2.4 1@set masver=2.5
2@setlocal DisableDelayedExpansion 2@setlocal DisableDelayedExpansion
3@echo off 3@echo off
4 4
5 5
6:: 6
7::================================================================================================= 7::=================================================================================================
8:: 8::
9:: Online KMS Script is a fork of @abbodi1406's KMS_VL_ALL forums.mydigitallife.net/posts/838808 9:: Online KMS Script is a fork of @abbodi1406's KMS_VL_ALL forums.mydigitallife.net/posts/838808
@@ -248,7 +248,7 @@ echo You are running outdated version MAS %masver%
248echo ________________________________________________ 248echo ________________________________________________
249echo: 249echo:
250if not defined _unattended ( 250if not defined _unattended (
251echo [1] Download Latest MAS 251echo [1] Get Latest MAS
252echo [0] Continue Anyway 252echo [0] Continue Anyway
253echo: 253echo:
254call :_color %_Green% "Enter a menu option in the Keyboard [1,0] :" 254call :_color %_Green% "Enter a menu option in the Keyboard [1,0] :"
diff --git a/MAS/Separate-Files-Version/Change_Edition.cmd b/MAS/Separate-Files-Version/Change_Edition.cmd
index aedf1b3..28a7230 100644
--- a/MAS/Separate-Files-Version/Change_Edition.cmd
+++ b/MAS/Separate-Files-Version/Change_Edition.cmd
@@ -1,9 +1,9 @@
1@set masver=2.4 1@set masver=2.5
2@setlocal DisableDelayedExpansion 2@setlocal DisableDelayedExpansion
3@echo off 3@echo off
4 4
5 5
6:: 6
7::============================================================================ 7::============================================================================
8:: 8::
9:: This script is a part of 'Microsoft_Activation_Scripts' (MAS) project. 9:: This script is a part of 'Microsoft_Activation_Scripts' (MAS) project.
@@ -230,7 +230,7 @@ echo ________________________________________________
230echo You are running outdated version MAS %masver% 230echo You are running outdated version MAS %masver%
231echo ________________________________________________ 231echo ________________________________________________
232echo: 232echo:
233echo [1] Download Latest MAS 233echo [1] Get Latest MAS
234echo [0] Continue Anyway 234echo [0] Continue Anyway
235echo: 235echo:
236call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" 236call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :"
@@ -282,24 +282,7 @@ goto ced_done
282 282
283::======================================================================================================================================== 283::========================================================================================================================================
284 284
285:: Check SKU value 285call :dk_checksku
286
287set osSKU=
288set slcSKU=
289set wmiSKU=
290
291if %winbuild% GEQ 14393 (set info=Kernel-BrandingInfo) else (set info=Kernel-ProductInfo)
292set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('SLGetWindowsInformationDWORD', 'slc.dll', 'Public, Static', 1, [int], @([String], [int].MakeByRefType()), 1, 3);
293set d1=%d1% $Sku = 0; [void]$TypeBuilder.CreateType()::SLGetWindowsInformationDWORD('%info%', [ref]$Sku); $Sku
294for /f "delims=" %%s in ('"%psc% %d1%"') do if not errorlevel 1 (set slcSKU=%%s)
295if "%slcSKU%"=="0" set slcSKU=
296if 1%slcSKU% NEQ +1%slcSKU% set slcSKU=
297
298if %_wmic% EQU 1 for /f "tokens=2 delims==" %%a in ('"wmic Path Win32_OperatingSystem Get OperatingSystemSKU /format:LIST" %nul6%') do if not errorlevel 1 set "wmiSKU=%%a"
299if %_wmic% EQU 0 for /f "tokens=1" %%a in ('%psc% "([WMI]'Win32_OperatingSystem=@').OperatingSystemSKU" %nul6%') do if not errorlevel 1 set "wmiSKU=%%a"
300
301set osSKU=%slcSKU%
302if not defined osSKU set osSKU=%wmiSKU%
303 286
304if not defined osSKU ( 287if not defined osSKU (
305%eline% 288%eline%
@@ -324,7 +307,7 @@ if not defined osedition (
324for /f "skip=2 tokens=3" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul6%') do set "osedition=%%a" 307for /f "skip=2 tokens=3" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul6%') do set "osedition=%%a"
325) 308)
326 309
327:: Workaround for a Windows bug in builds between 1607 and 1709 where ProfessionalEducation is shown as Professional 310:: Workaround for an issue in builds between 1607 and 1709 where ProfessionalEducation is shown as Professional
328 311
329if %osSKU%==164 set osedition=ProfessionalEducation 312if %osSKU%==164 set osedition=ProfessionalEducation
330if %osSKU%==165 set osedition=ProfessionalEducationN 313if %osSKU%==165 set osedition=ProfessionalEducationN
@@ -354,7 +337,10 @@ for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT
354 337
355%psc% $ExecutionContext.SessionState.LanguageMode %nul2% | find /i "Full" %nul1% || ( 338%psc% $ExecutionContext.SessionState.LanguageMode %nul2% | find /i "Full" %nul1% || (
356%eline% 339%eline%
357echo PowerShell is not responding properly. Aborting... 340%psc% $ExecutionContext.SessionState.LanguageMode
341echo:
342echo PowerShell is not working. Aborting...
343echo If you have applied restrictions on Powershell then undo those changes.
358echo: 344echo:
359echo Check this page for help. %mas%troubleshoot 345echo Check this page for help. %mas%troubleshoot
360goto ced_done 346goto ced_done
@@ -654,6 +640,31 @@ exit /b
654 640
655::======================================================================================================================================== 641::========================================================================================================================================
656 642
643:: Check SKU value
644
645:dk_checksku
646
647set osSKU=
648set slcSKU=
649set wmiSKU=
650set regSKU=
651
652if %winbuild% GEQ 14393 (set info=Kernel-BrandingInfo) else (set info=Kernel-ProductInfo)
653set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('SLGetWindowsInformationDWORD', 'slc.dll', 'Public, Static', 1, [int], @([String], [int].MakeByRefType()), 1, 3);
654set d1=%d1% $Sku = 0; [void]$TypeBuilder.CreateType()::SLGetWindowsInformationDWORD('%info%', [ref]$Sku); $Sku
655for /f "delims=" %%s in ('"%psc% %d1%"') do if not errorlevel 1 (set slcSKU=%%s)
656if "%slcSKU%"=="0" set slcSKU=
657if 1%slcSKU% NEQ +1%slcSKU% set slcSKU=
658
659for /f "tokens=3 delims=." %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions" /v OSProductPfn %nul6%') do set "regSKU=%%a"
660if %_wmic% EQU 1 for /f "tokens=2 delims==" %%a in ('"wmic Path Win32_OperatingSystem Get OperatingSystemSKU /format:LIST" %nul6%') do if not errorlevel 1 set "wmiSKU=%%a"
661if %_wmic% EQU 0 for /f "tokens=1" %%a in ('%psc% "([WMI]'Win32_OperatingSystem=@').OperatingSystemSKU" %nul6%') do if not errorlevel 1 set "wmiSKU=%%a"
662
663set osSKU=%slcSKU%
664if not defined osSKU set osSKU=%wmiSKU%
665if not defined osSKU set osSKU=%regSKU%
666exit /b
667
657:: Refresh license status 668:: Refresh license status
658 669
659:dk_refresh 670:dk_refresh
diff --git a/MAS/Separate-Files-Version/Check-Activation-Status-vbs.cmd b/MAS/Separate-Files-Version/Check-Activation-Status-vbs.cmd
index 8b7ae40..ad85641 100644
--- a/MAS/Separate-Files-Version/Check-Activation-Status-vbs.cmd
+++ b/MAS/Separate-Files-Version/Check-Activation-Status-vbs.cmd
@@ -4,7 +4,7 @@
4 4
5 5
6 6
7:: Check-Activation-Status 7:: Check-Activation-Status-vbs.cmd
8:: Written by @abbodi1406 8:: Written by @abbodi1406
9:: forums.mydigitallife.net/posts/838808 9:: forums.mydigitallife.net/posts/838808
10 10
diff --git a/MAS/Separate-Files-Version/Check-Activation-Status-wmi.cmd b/MAS/Separate-Files-Version/Check-Activation-Status-wmi.cmd
index af159b1..ce735bb 100644
--- a/MAS/Separate-Files-Version/Check-Activation-Status-wmi.cmd
+++ b/MAS/Separate-Files-Version/Check-Activation-Status-wmi.cmd
@@ -1,4 +1,3 @@
1<!-- : Begin batch script
2@setlocal DisableDelayedExpansion 1@setlocal DisableDelayedExpansion
3@echo off 2@echo off
4 3
diff --git a/MAS/Separate-Files-Version/Extract_OEM_Folder.cmd b/MAS/Separate-Files-Version/Extract_OEM_Folder.cmd
index 36c2b94..c9cffa9 100644
--- a/MAS/Separate-Files-Version/Extract_OEM_Folder.cmd
+++ b/MAS/Separate-Files-Version/Extract_OEM_Folder.cmd
@@ -1,9 +1,9 @@
1@set masver=2.4 1@set masver=2.5
2@setlocal DisableDelayedExpansion 2@setlocal DisableDelayedExpansion
3@echo off 3@echo off
4 4
5 5
6:: 6
7::============================================================================ 7::============================================================================
8:: 8::
9:: This script is a part of 'Microsoft_Activation_Scripts' (MAS) project. 9:: This script is a part of 'Microsoft_Activation_Scripts' (MAS) project.
@@ -222,7 +222,7 @@ echo ________________________________________________
222echo You are running outdated version MAS %masver% 222echo You are running outdated version MAS %masver%
223echo ________________________________________________ 223echo ________________________________________________
224echo: 224echo:
225echo [1] Download Latest MAS 225echo [1] Get Latest MAS
226echo [0] Continue Anyway 226echo [0] Continue Anyway
227echo: 227echo:
228call :ex_color %_Green% "Enter a menu option in the Keyboard [1,0] :" 228call :ex_color %_Green% "Enter a menu option in the Keyboard [1,0] :"
diff --git a/MAS/Separate-Files-Version/Troubleshoot.cmd b/MAS/Separate-Files-Version/Troubleshoot.cmd
index 194c1a7..6f83f30 100644
--- a/MAS/Separate-Files-Version/Troubleshoot.cmd
+++ b/MAS/Separate-Files-Version/Troubleshoot.cmd
@@ -1,9 +1,9 @@
1@set masver=2.4 1@set masver=2.5
2@setlocal DisableDelayedExpansion 2@setlocal DisableDelayedExpansion
3@echo off 3@echo off
4 4
5 5
6:: 6
7::============================================================================ 7::============================================================================
8:: 8::
9:: This script is a part of 'Microsoft_Activation_Scripts' (MAS) project. 9:: This script is a part of 'Microsoft_Activation_Scripts' (MAS) project.
@@ -208,7 +208,7 @@ echo ________________________________________________
208echo You are running outdated version MAS %masver% 208echo You are running outdated version MAS %masver%
209echo ________________________________________________ 209echo ________________________________________________
210echo: 210echo:
211echo [1] Download Latest MAS 211echo [1] Get Latest MAS
212echo [0] Continue Anyway 212echo [0] Continue Anyway
213echo: 213echo:
214call :_color %_Green% "Enter a menu option in the Keyboard [1,0] :" 214call :_color %_Green% "Enter a menu option in the Keyboard [1,0] :"
@@ -323,7 +323,7 @@ if %errorlevel%==1 goto at_menu
323 323
324cls 324cls
325mode 110, 30 325mode 110, 30
326call :_stopservice TrustedInstaller 326%psc% Stop-Service TrustedInstaller -force %nul%
327 327
328set _time= 328set _time=
329for /f %%a in ('%psc% "Get-Date -format HH_mm_ss"') do set _time=%%a 329for /f %%a in ('%psc% "Get-Date -format HH_mm_ss"') do set _time=%%a
@@ -332,7 +332,7 @@ echo Applying the command,
332echo dism /english /online /cleanup-image /restorehealth 332echo dism /english /online /cleanup-image /restorehealth
333dism /english /online /cleanup-image /restorehealth 333dism /english /online /cleanup-image /restorehealth
334 334
335call :_stopservice TrustedInstaller 335%psc% Stop-Service TrustedInstaller -force %nul%
336 336
337if not exist "!desktop!\AT_Logs\" md "!desktop!\AT_Logs\" %nul% 337if not exist "!desktop!\AT_Logs\" md "!desktop!\AT_Logs\" %nul%
338 338
@@ -375,7 +375,7 @@ choice /C:09 /N /M "> [9] Continue [0] Go back : "
375if %errorlevel%==1 goto at_menu 375if %errorlevel%==1 goto at_menu
376 376
377cls 377cls
378call :_stopservice TrustedInstaller 378%psc% Stop-Service TrustedInstaller -force %nul%
379 379
380set _time= 380set _time=
381for /f %%a in ('%psc% "Get-Date -format HH_mm_ss"') do set _time=%%a 381for /f %%a in ('%psc% "Get-Date -format HH_mm_ss"') do set _time=%%a
@@ -384,7 +384,7 @@ echo Applying the command,
384echo sfc /scannow 384echo sfc /scannow
385sfc /scannow 385sfc /scannow
386 386
387call :_stopservice TrustedInstaller 387%psc% Stop-Service TrustedInstaller -force %nul%
388 388
389if not exist "!desktop!\AT_Logs\" md "!desktop!\AT_Logs\" %nul% 389if not exist "!desktop!\AT_Logs\" md "!desktop!\AT_Logs\" %nul%
390 390
@@ -455,7 +455,7 @@ goto :cleanvnext
455) 455)
456 456
457echo Stopping ClipSVC service... 457echo Stopping ClipSVC service...
458call :_stopservice ClipSVC 458%psc% Stop-Service ClipSVC -force %nul%
459timeout /t 2 %nul% 459timeout /t 2 %nul%
460 460
461echo: 461echo:
@@ -505,7 +505,7 @@ call :_color %Red% "[Failed]"
505echo [Successful] 505echo [Successful]
506) 506)
507 507
508call :_stopservice ClipSVC 508%psc% Stop-Service ClipSVC -force %nul%
509 509
510:: Rebuild ClipSVC folder to fix permission issues 510:: Rebuild ClipSVC folder to fix permission issues
511 511
@@ -522,7 +522,7 @@ echo [Successful]
522 522
523echo: 523echo:
524echo Rebuilding Folder %ProgramData%\Microsoft\Windows\ClipSVC\ 524echo Rebuilding Folder %ProgramData%\Microsoft\Windows\ClipSVC\
525net start ClipSVC /y %nul% 525%psc% Start-Service ClipSVC %nul%
526timeout /t 3 %nul% 526timeout /t 3 %nul%
527if not exist "%ProgramData%\Microsoft\Windows\ClipSVC\" timeout /t 5 %nul% 527if not exist "%ProgramData%\Microsoft\Windows\ClipSVC\" timeout /t 5 %nul%
528if not exist "%ProgramData%\Microsoft\Windows\ClipSVC\" ( 528if not exist "%ProgramData%\Microsoft\Windows\ClipSVC\" (
@@ -534,7 +534,7 @@ echo [Successful]
534 534
535echo: 535echo:
536echo Restarting [wlidsvc LicenseManager] services... 536echo Restarting [wlidsvc LicenseManager] services...
537for %%# in (wlidsvc LicenseManager) do (net stop %%# /y %nul% & net start %%# /y %nul%) 537for %%# in (wlidsvc LicenseManager) do (%psc% Restart-Service %%# %nul%)
538 538
539::======================================================================================================================================== 539::========================================================================================================================================
540 540
@@ -580,7 +580,7 @@ echo Not Found - !_Local!\Microsoft\Office\Licenses\
580 580
581 581
582echo: 582echo:
583for /f "tokens=* delims=" %%a in ('%psc% "$userSIDs = Get-WmiObject -Class Win32_UserAccount | ForEach-Object {write-host $_.SID}" %nul6%') do (if defined _sid (set "_sid=!_sid! HKU\%%a") else (set "_sid=HKU\%%a")) 583for /f "tokens=* delims=" %%a in ('%psc% "Get-ChildItem -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList' | ForEach-Object { Split-Path -Path $_.PSPath -Leaf }" %nul6%') do (if defined _sid (set "_sid=!_sid! HKU\%%a") else (set "_sid=HKU\%%a"))
584 584
585set regfound= 585set regfound=
586for %%# in (HKCU !_sid!) do ( 586for %%# in (HKCU !_sid!) do (
@@ -619,19 +619,13 @@ call :_color %Red% "tokens.dat file not found."
619echo tokens.dat file: [%token%] 619echo tokens.dat file: [%token%]
620) 620)
621 621
622if %winbuild% GEQ 14393 (
623set wpaerror=
624set /a count=0
625for /f %%a in ('reg query "HKLM\SYSTEM\WPA" %nul6%') do set /a count+=1
626for /L %%# in (1,1,!count!) do (
627reg query "HKLM\SYSTEM\WPA\8DEC0AF1-0341-4b93-85CD-72606C2DF94C-7P-%%#" /ve /t REG_BINARY %nul% || set wpaerror=1
628)
629
630if defined wpaerror (
631echo: 622echo:
632echo Checking WPA Registry Keys... 623set wpainfo=
633call :_color %Red% "[Error Found] [Registry Count - !count!]" 624for /f "delims=" %%a in ('%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':wpatest\:.*';iex ($f[1]);" %nul6%') do (set wpainfo=%%a)
634) 625echo "%wpainfo%" | find /i "Error Found" %nul% && (
626call :_color %Red% "WPA Registry Error: %wpainfo%"
627) || (
628echo WPA Registry Count: %wpainfo%
635) 629)
636 630
637set tokenstore= 631set tokenstore=
@@ -679,7 +673,7 @@ echo [No Error Found]
679 673
680echo: 674echo:
681echo Stopping sppsvc service... 675echo Stopping sppsvc service...
682call :_stopservice sppsvc 676%psc% Stop-Service sppsvc -force %nul%
683 677
684echo: 678echo:
685call :scandat delete 679call :scandat delete
@@ -736,7 +730,7 @@ echo tokens.dat file: [%token%]
736 730
737echo: 731echo:
738echo Stopping osppsvc service... 732echo Stopping osppsvc service...
739call :_stopservice osppsvc 733%psc% Stop-Service osppsvc -force %nul%
740 734
741echo: 735echo:
742call :scandatospp delete 736call :scandatospp delete
@@ -750,11 +744,11 @@ echo:
750 744
751echo: 745echo:
752echo Starting osppsvc service to generate tokens.dat 746echo Starting osppsvc service to generate tokens.dat
753call :_startservice osppsvc 747%psc% Start-Service osppsvc %nul%
754call :scandatospp check 748call :scandatospp check
755if not defined token ( 749if not defined token (
756call :_stopservice osppsvc 750%psc% Stop-Service osppsvc -force %nul%
757call :_startservice osppsvc 751%psc% Start-Service osppsvc %nul%
758timeout /t 3 %nul% 752timeout /t 3 %nul%
759) 753)
760 754
@@ -801,18 +795,20 @@ for %%A in (msi14 msi15 msi16 c2r14 c2r15 c2r16) do (set %%A_%%#=&set %%Arepair%
801set _68=HKLM\SOFTWARE\Microsoft\Office 795set _68=HKLM\SOFTWARE\Microsoft\Office
802set _86=HKLM\SOFTWARE\Wow6432Node\Microsoft\Office 796set _86=HKLM\SOFTWARE\Wow6432Node\Microsoft\Office
803 797
804%nul% reg query %_68%\14.0\Common\InstallRoot /v Path && (set "msi14_68=Office 14.0 MSI x86/x64" & set "msi14repair68=%systemdrive%\Program Files\Common Files\microsoft shared\OFFICE14\Office Setup Controller\Setup.exe") 798reg query %_68%\14.0\CVH /f Click2run /k %nul% && (set "c2r14_68=Office 14.0 C2R x86/x64" & set "c2r14repair68=")
805%nul% reg query %_86%\14.0\Common\InstallRoot /v Path && (set "msi14_86=Office 14.0 MSI x86" & set "msi14repair86=%systemdrive%\Program Files (x86)\Common Files\Microsoft Shared\OFFICE14\Office Setup Controller\Setup.exe") 799reg query %_86%\14.0\CVH /f Click2run /k %nul% && (set "c2r14_86=Office 14.0 C2R x86" & set "c2r14repair86=")
806%nul% reg query %_68%\15.0\Common\InstallRoot /v Path && (set "msi15_68=Office 15.0 MSI x86/x64" & set "msi15repair68=%systemdrive%\Program Files\Common Files\microsoft shared\OFFICE15\Office Setup Controller\Setup.exe") 800
807%nul% reg query %_86%\15.0\Common\InstallRoot /v Path && (set "msi15_86=Office 15.0 MSI x86" & set "msi15repair86=%systemdrive%\Program Files (x86)\Common Files\Microsoft Shared\OFFICE15\Office Setup Controller\Setup.exe") 801for /f "skip=2 tokens=2*" %%a in ('"reg query %_86%\14.0\Common\InstallRoot /v Path" %nul6%') do if exist "%%b\EntityPicker.dll" (set "msi14_86=Office 14.0 MSI x86" & set "msi14repair86=%systemdrive%\Program Files (x86)\Common Files\Microsoft Shared\OFFICE14\Office Setup Controller\Setup.exe")
808%nul% reg query %_68%\16.0\Common\InstallRoot /v Path && (set "msi16_68=Office 16.0 MSI x86/x64" & set "msi16repair68=%systemdrive%\Program Files\Common Files\Microsoft Shared\OFFICE16\Office Setup Controller\Setup.exe") 802for /f "skip=2 tokens=2*" %%a in ('"reg query %_68%\14.0\Common\InstallRoot /v Path" %nul6%') do if exist "%%b\EntityPicker.dll" (set "msi14_68=Office 14.0 MSI x86/x64" & set "msi14repair68=%systemdrive%\Program Files\Common Files\microsoft shared\OFFICE14\Office Setup Controller\Setup.exe")
809%nul% reg query %_86%\16.0\Common\InstallRoot /v Path && (set "msi16_86=Office 16.0 MSI x86" & set "msi16repair86=%systemdrive%\Program Files (x86)\Common Files\Microsoft Shared\OFFICE16\Office Setup Controller\Setup.exe") 803for /f "skip=2 tokens=2*" %%a in ('"reg query %_86%\15.0\Common\InstallRoot /v Path" %nul6%') do if exist "%%b\EntityPicker.dll" (set "msi15_86=Office 15.0 MSI x86" & set "msi15repair86=%systemdrive%\Program Files (x86)\Common Files\Microsoft Shared\OFFICE15\Office Setup Controller\Setup.exe")
810%nul% reg query %_68%\14.0\CVH /f Click2run /k && (set "c2r14_68=Office 14.0 C2R x86/x64" & set "c2r14repair68=") 804for /f "skip=2 tokens=2*" %%a in ('"reg query %_68%\15.0\Common\InstallRoot /v Path" %nul6%') do if exist "%%b\EntityPicker.dll" (set "msi15_68=Office 15.0 MSI x86/x64" & set "msi15repair68=%systemdrive%\Program Files\Common Files\microsoft shared\OFFICE15\Office Setup Controller\Setup.exe")
811%nul% reg query %_86%\14.0\CVH /f Click2run /k && (set "c2r14_86=Office 14.0 C2R x86" & set "c2r14repair86=") 805for /f "skip=2 tokens=2*" %%a in ('"reg query %_86%\16.0\Common\InstallRoot /v Path" %nul6%') do if exist "%%b\EntityPicker.dll" (set "msi16_86=Office 16.0 MSI x86" & set "msi16repair86=%systemdrive%\Program Files (x86)\Common Files\Microsoft Shared\OFFICE16\Office Setup Controller\Setup.exe")
812%nul% reg query %_68%\15.0\ClickToRun /v InstallPath && (set "c2r15_68=Office 15.0 C2R x86/x64" & set "c2r15repair68=%systemdrive%\Program Files\Microsoft Office 15\Client%arch%\integratedoffice.exe") 806for /f "skip=2 tokens=2*" %%a in ('"reg query %_68%\16.0\Common\InstallRoot /v Path" %nul6%') do if exist "%%b\EntityPicker.dll" (set "msi16_68=Office 16.0 MSI x86/x64" & set "msi16repair68=%systemdrive%\Program Files\Common Files\Microsoft Shared\OFFICE16\Office Setup Controller\Setup.exe")
813%nul% reg query %_86%\15.0\ClickToRun /v InstallPath && (set "c2r15_86=Office 15.0 C2R x86" & set "c2r15repair86=%systemdrive%\Program Files\Microsoft Office 15\Client%arch%\integratedoffice.exe") 807
814%nul% reg query %_68%\ClickToRun /v InstallPath && (set "c2r16_68=Office 16.0 C2R x86/x64" & set "c2r16repair68=%systemdrive%\Program Files\Microsoft Office 15\Client%arch%\OfficeClickToRun.exe") 808for /f "skip=2 tokens=2*" %%a in ('"reg query %_86%\15.0\ClickToRun /v InstallPath" %nul6%') do if exist "%%b\root\Licenses\ProPlus*.xrm-ms" (set "c2r15_86=Office 15.0 C2R x86" & set "c2r15repair86=%systemdrive%\Program Files\Microsoft Office 15\Client%arch%\integratedoffice.exe")
815%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") 809for /f "skip=2 tokens=2*" %%a in ('"reg query %_68%\15.0\ClickToRun /v InstallPath" %nul6%') do if exist "%%b\root\Licenses\ProPlus*.xrm-ms" (set "c2r15_68=Office 15.0 C2R x86/x64" & set "c2r15repair68=%systemdrive%\Program Files\Microsoft Office 15\Client%arch%\integratedoffice.exe")
810for /f "skip=2 tokens=2*" %%a in ('"reg query %_86%\ClickToRun /v InstallPath" %nul6%') do if exist "%%b\root\Licenses16\ProPlus*.xrm-ms" (set "c2r16_86=Office 16.0 C2R x86" & set "c2r16repair86=%systemdrive%\Program Files\Microsoft Office 15\Client%arch%\OfficeClickToRun.exe")
811for /f "skip=2 tokens=2*" %%a in ('"reg query %_68%\ClickToRun /v InstallPath" %nul6%') do if exist "%%b\root\Licenses16\ProPlus*.xrm-ms" (set "c2r16_68=Office 16.0 C2R x86/x64" & set "c2r16repair68=%systemdrive%\Program Files\Microsoft Office 15\Client%arch%\OfficeClickToRun.exe")
816 812
817set uwp16= 813set uwp16=
818if %winbuild% GEQ 10240 ( 814if %winbuild% GEQ 10240 (
@@ -938,7 +934,7 @@ call :checkwmi
938:: Apply basic fix first and check 934:: Apply basic fix first and check
939 935
940if defined error ( 936if defined error (
941call :_stopservice Winmgmt 937%psc% Stop-Service Winmgmt -force %nul%
942winmgmt /salvagerepository %nul% 938winmgmt /salvagerepository %nul%
943call :checkwmi 939call :checkwmi
944) 940)
@@ -976,9 +972,9 @@ goto :at_back
976 972
977echo: 973echo:
978echo Stopping Winmgmt service 974echo Stopping Winmgmt service
979call :_stopservice Winmgmt 975%psc% Stop-Service Winmgmt -force %nul%
980call :_stopservice Winmgmt 976%psc% Stop-Service Winmgmt -force %nul%
981call :_stopservice Winmgmt 977%psc% Stop-Service Winmgmt -force %nul%
982sc query Winmgmt | find /i "STOPPED" %nul% && ( 978sc query Winmgmt | find /i "STOPPED" %nul% && (
983echo [Successful] 979echo [Successful]
984) || ( 980) || (
@@ -1042,7 +1038,7 @@ goto :at_back
1042 1038
1043:: https://eskonr.com/2012/01/how-to-fix-wmi-issues-automatically/ 1039:: https://eskonr.com/2012/01/how-to-fix-wmi-issues-automatically/
1044 1040
1045call :_stopservice Winmgmt 1041%psc% Stop-Service Winmgmt -force %nul%
1046cd /d %systemroot%\system32\wbem\ 1042cd /d %systemroot%\system32\wbem\
1047regsvr32 /s %systemroot%\system32\scecli.dll 1043regsvr32 /s %systemroot%\system32\scecli.dll
1048regsvr32 /s %systemroot%\system32\userenv.dll 1044regsvr32 /s %systemroot%\system32\userenv.dll
@@ -1128,21 +1124,41 @@ exit /b
1128 1124
1129::======================================================================================================================================== 1125::========================================================================================================================================
1130 1126
1131:_stopservice 1127:: This code checks for invalid registry keys in HKLM\SYSTEM\WPA. This issue may appear even on healthy systems
1132 1128
1133for %%# in (%1) do ( 1129:wpatest:
1134sc query %%# | find /i "STOPPED" %nul% || net stop %%# /y %nul% 1130$wpaKey = [Microsoft.Win32.RegistryKey]::OpenBaseKey('LocalMachine', 'Registry64').OpenSubKey("SYSTEM\\WPA")
1135sc query %%# | find /i "STOPPED" %nul% || sc stop %%# %nul% 1131$count = $wpaKey.SubKeyCount
1136) 1132
1137exit /b 1133$osVersion = [System.Environment]::OSVersion.Version
1138 1134$minBuildNumber = 14393
1139:_startservice 1135
1140 1136if ($osVersion.Build -ge $minBuildNumber) {
1141for %%# in (%1) do ( 1137 $subkeyHashTable = @{}
1142sc query %%# | find /i "RUNNING" %nul% || net start %%# /y %nul% 1138 foreach ($subkeyName in $wpaKey.GetSubKeyNames()) {
1143sc query %%# | find /i "RUNNING" %nul% || sc start %%# %nul% 1139 $keyNumber = $subkeyName -replace '.*-', ''
1144) 1140 $subkeyHashTable[$keyNumber] = $true
1145exit /b 1141 }
1142 for ($i=1; $i -le $count; $i++) {
1143 if (-not $subkeyHashTable.ContainsKey("$i")) {
1144 Write-Host "Total Keys $count. Error Found- $i key does not exist"
1145 $wpaKey.Close()
1146 exit
1147 }
1148 }
1149}
1150$wpaKey.GetSubKeyNames() | ForEach-Object {
1151 $subkey = $wpaKey.OpenSubKey($_)
1152 $p = $subkey.GetValueNames()
1153 if (($p | Where-Object { $subkey.GetValueKind($_) -eq [Microsoft.Win32.RegistryValueKind]::Binary }).Count -eq 0) {
1154 Write-Host "Total Keys $count. Error Found- Binary Data is corrupt"
1155 $wpaKey.Close()
1156 exit
1157 }
1158}
1159$count
1160$wpaKey.Close()
1161:wpatest:
1146 1162
1147::======================================================================================================================================== 1163::========================================================================================================================================
1148 1164