diff options
-rw-r--r-- | .gitattributes | 3 | ||||
-rw-r--r-- | MAS/All-In-One-Version/MAS_AIO.cmd | 737 | ||||
-rw-r--r-- | MAS/Separate-Files-Version/Activators/HWID_Activation.cmd | 347 | ||||
-rw-r--r-- | MAS/Separate-Files-Version/Activators/KMS38_Activation.cmd | 350 | ||||
-rw-r--r-- | MAS/Separate-Files-Version/Activators/Ohook_Activation_AIO.cmd | 292 | ||||
-rw-r--r-- | MAS/Separate-Files-Version/Activators/Online_KMS_Activation.cmd | 6 | ||||
-rw-r--r-- | MAS/Separate-Files-Version/Change_Edition.cmd | 57 | ||||
-rw-r--r-- | MAS/Separate-Files-Version/Check-Activation-Status-vbs.cmd | 2 | ||||
-rw-r--r-- | MAS/Separate-Files-Version/Check-Activation-Status-wmi.cmd | 1 | ||||
-rw-r--r-- | MAS/Separate-Files-Version/Extract_OEM_Folder.cmd | 6 | ||||
-rw-r--r-- | MAS/Separate-Files-Version/Troubleshoot.cmd | 138 | ||||
-rw-r--r-- | README.md | 6 |
12 files changed, 1222 insertions, 723 deletions
diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..fc0852b --- /dev/null +++ b/.gitattributes | |||
@@ -0,0 +1,3 @@ | |||
1 | MAS export-ignore | ||
2 | LICENSE export-ignore | ||
3 | README.md export-ignore \ No newline at end of file | ||
diff --git a/MAS/All-In-One-Version/MAS_AIO.cmd b/MAS/All-In-One-Version/MAS_AIO.cmd index 99783b8..f6fbe68 100644 --- a/MAS/All-In-One-Version/MAS_AIO.cmd +++ b/MAS/All-In-One-Version/MAS_AIO.cmd | |||
@@ -1,8 +1,8 @@ | |||
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 | :: For command line switches, check mass grave[.]dev/command_line_switches.html | 6 | :: For command line switches, check mass grave[.]dev/command_line_switches.html |
7 | :: If you want to better understand script, read from MAS separate files version. | 7 | :: If you want to better understand script, read from MAS separate files version. |
8 | 8 | ||
@@ -11,7 +11,7 @@ | |||
11 | :: | 11 | :: |
12 | :: This script is a part of 'Microsoft_Activation_Scripts' (MAS) project. | 12 | :: This script is a part of 'Microsoft_Activation_Scripts' (MAS) project. |
13 | :: | 13 | :: |
14 | :: Homepage: https://massgrave[.]dev | 14 | :: Homepage: mass grave[.]dev |
15 | :: Email: windowsaddict@protonmail.com | 15 | :: Email: windowsaddict@protonmail.com |
16 | :: | 16 | :: |
17 | ::============================================================================ | 17 | ::============================================================================ |
@@ -220,7 +220,7 @@ echo You are running outdated version MAS %masver% | |||
220 | echo ________________________________________________ | 220 | echo ________________________________________________ |
221 | echo: | 221 | echo: |
222 | if not defined _MASunattended ( | 222 | if not defined _MASunattended ( |
223 | echo [1] Download Latest MAS | 223 | echo [1] Get Latest MAS |
224 | echo [0] Continue Anyway | 224 | echo [0] Continue Anyway |
225 | echo: | 225 | echo: |
226 | call :_color %_Green% "Enter a menu option in the Keyboard [1,0] :" | 226 | call :_color %_Green% "Enter a menu option in the Keyboard [1,0] :" |
@@ -465,8 +465,6 @@ set _NoEditionChange=0 | |||
465 | 465 | ||
466 | :: If value is changed in above lines or parameter is used then script will run in unattended mode | 466 | :: If value is changed in above lines or parameter is used then script will run in unattended mode |
467 | 467 | ||
468 | |||
469 | |||
470 | ::======================================================================================================================================== | 468 | ::======================================================================================================================================== |
471 | 469 | ||
472 | cls | 470 | cls |
@@ -569,15 +567,28 @@ setlocal EnableDelayedExpansion | |||
569 | ::======================================================================================================================================== | 567 | ::======================================================================================================================================== |
570 | 568 | ||
571 | cls | 569 | cls |
572 | mode 108, 34 | 570 | mode 110, 34 |
571 | if exist "%Systemdrive%\Windows\System32\spp\store_test\" mode 134, 34 | ||
573 | title HWID Activation %masver% | 572 | title HWID Activation %masver% |
574 | 573 | ||
575 | :: Start Windows update service at the beginning and in later checks as well, because in some normal conditions one kick is not enough | 574 | echo: |
575 | echo Initializing... | ||
576 | 576 | ||
577 | sc start wuauserv %nul% | 577 | :: Check PowerShell |
578 | 578 | ||
579 | %psc% $ExecutionContext.SessionState.LanguageMode %nul2% | find /i "Full" %nul1% || ( | ||
580 | %eline% | ||
581 | %psc% $ExecutionContext.SessionState.LanguageMode | ||
579 | echo: | 582 | echo: |
580 | echo Initializing... | 583 | echo PowerShell is not working. Aborting... |
584 | echo If you have applied restrictions on Powershell then undo those changes. | ||
585 | echo: | ||
586 | echo Check this page for help. %mas%troubleshoot | ||
587 | goto dk_done | ||
588 | ) | ||
589 | |||
590 | ::======================================================================================================================================== | ||
591 | |||
581 | call :dk_product | 592 | call :dk_product |
582 | call :dk_ckeckwmic | 593 | call :dk_ckeckwmic |
583 | 594 | ||
@@ -630,27 +641,7 @@ goto dk_done | |||
630 | 641 | ||
631 | ::======================================================================================================================================== | 642 | ::======================================================================================================================================== |
632 | 643 | ||
633 | :: Check SKU value / Check in multiple places to find Edition change corruption | 644 | call :dk_checksku |
634 | |||
635 | set osSKU= | ||
636 | set slcSKU= | ||
637 | set wmiSKU= | ||
638 | set regSKU= | ||
639 | |||
640 | if %winbuild% GEQ 14393 (set info=Kernel-BrandingInfo) else (set info=Kernel-ProductInfo) | ||
641 | set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('SLGetWindowsInformationDWORD', 'slc.dll', 'Public, Static', 1, [int], @([String], [int].MakeByRefType()), 1, 3); | ||
642 | set d1=%d1% $Sku = 0; [void]$TypeBuilder.CreateType()::SLGetWindowsInformationDWORD('%info%', [ref]$Sku); $Sku | ||
643 | for /f "delims=" %%s in ('"%psc% %d1%"') do if not errorlevel 1 (set slcSKU=%%s) | ||
644 | if "%slcSKU%"=="0" set slcSKU= | ||
645 | if 1%slcSKU% NEQ +1%slcSKU% set slcSKU= | ||
646 | |||
647 | for /f "tokens=3 delims=." %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions" /v OSProductPfn %nul6%') do set "regSKU=%%a" | ||
648 | if %_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" | ||
649 | if %_wmic% EQU 0 for /f "tokens=1" %%a in ('%psc% "([WMI]'Win32_OperatingSystem=@').OperatingSystemSKU" %nul6%') do if not errorlevel 1 set "wmiSKU=%%a" | ||
650 | |||
651 | set osSKU=%slcSKU% | ||
652 | if not defined osSKU set osSKU=%wmiSKU% | ||
653 | if not defined osSKU set osSKU=%regSKU% | ||
654 | 645 | ||
655 | if not defined osSKU ( | 646 | if not defined osSKU ( |
656 | %eline% | 647 | %eline% |
@@ -677,11 +668,11 @@ for /f "delims=[] tokens=2" %%# in ('ping -n 1 %%a') do (if not [%%#]==[] set _i | |||
677 | 668 | ||
678 | if not defined _int ( | 669 | if not defined _int ( |
679 | %psc% "If([Activator]::CreateInstance([Type]::GetTypeFromCLSID([Guid]'{DCB00C01-570F-4A9B-8D69-199FDBA5723B}')).IsConnectedToInternet){Exit 0}Else{Exit 1}" | 670 | %psc% "If([Activator]::CreateInstance([Type]::GetTypeFromCLSID([Guid]'{DCB00C01-570F-4A9B-8D69-199FDBA5723B}')).IsConnectedToInternet){Exit 0}Else{Exit 1}" |
680 | if !errorlevel!==0 set _int=1 | 671 | if !errorlevel!==0 (set _int=1&set ping_f= But Ping Failed) |
681 | ) | 672 | ) |
682 | 673 | ||
683 | if defined _int ( | 674 | if defined _int ( |
684 | echo Checking Internet Connection [Connected] | 675 | echo Checking Internet Connection [Connected%ping_f%] |
685 | ) else ( | 676 | ) else ( |
686 | set error=1 | 677 | set error=1 |
687 | call :dk_color %Red% "Checking Internet Connection [Not Connected]" | 678 | call :dk_color %Red% "Checking Internet Connection [Not Connected]" |
@@ -706,7 +697,8 @@ echo Enabling Windows Script Host [Successful] | |||
706 | 697 | ||
707 | echo Initiating Diagnostic Tests... | 698 | echo Initiating Diagnostic Tests... |
708 | 699 | ||
709 | set "_serv=ClipSVC wlidsvc sppsvc KeyIso LicenseManager Winmgmt wuauserv" | 700 | set "_serv=ClipSVC wlidsvc sppsvc KeyIso LicenseManager Winmgmt DoSvc UsoSvc CryptSvc BITS TrustedInstaller wuauserv" |
701 | if %winbuild% GEQ 17134 set "_serv=%_serv% WaaSMedicSvc" | ||
710 | 702 | ||
711 | :: Client License Service (ClipSVC) | 703 | :: Client License Service (ClipSVC) |
712 | :: Microsoft Account Sign-in Assistant | 704 | :: Microsoft Account Sign-in Assistant |
@@ -714,37 +706,32 @@ set "_serv=ClipSVC wlidsvc sppsvc KeyIso LicenseManager Winmgmt wuauserv" | |||
714 | :: CNG Key Isolation | 706 | :: CNG Key Isolation |
715 | :: Windows License Manager Service | 707 | :: Windows License Manager Service |
716 | :: Windows Management Instrumentation | 708 | :: Windows Management Instrumentation |
709 | :: Delivery Optimization | ||
710 | :: Update Orchestrator Service | ||
711 | :: Cryptographic Services | ||
712 | :: Background Intelligent Transfer Service | ||
713 | :: Windows Modules Installer | ||
717 | :: Windows Update | 714 | :: Windows Update |
715 | :: Windows Update Medic Service | ||
718 | 716 | ||
719 | call :dk_errorcheck | 717 | call :dk_errorcheck |
720 | 718 | ||
721 | :: Check Windows updates and store app blockers | 719 | :: Check Windows updates and store app blockers |
722 | 720 | ||
723 | set updatesblock= | 721 | set updatesblock= |
724 | echo: %serv_cor% %serv_ste% | findstr /i "wuauserv" %nul% && set updatesblock=1 | ||
725 | |||
726 | sc start UsoSvc %nul% | ||
727 | if %errorlevel% NEQ 1056 if %errorlevel% NEQ 0 set updatesblock=1 | ||
728 | |||
729 | if %winbuild% GEQ 17134 ( | ||
730 | sc start WaaSMedicSvc %nul% | ||
731 | if !errorlevel! NEQ 1056 if !errorlevel! NEQ 0 set updatesblock=1 | ||
732 | ) | ||
733 | |||
734 | reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer /v SettingsPageVisibility %nul2% | find /i "windowsupdate" %nul% && set updatesblock=1 | 722 | reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer /v SettingsPageVisibility %nul2% | find /i "windowsupdate" %nul% && set updatesblock=1 |
735 | reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdateSysprepInProgress %nul% && set updatesblock=1 | 723 | reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdateSysprepInProgress %nul% && set updatesblock=1 |
736 | reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate /s %nul2% | findstr /i "NoAutoUpdate DisableWindowsUpdateAccess" %nul% && set updatesblock=1 | 724 | reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate /s %nul2% | findstr /i "NoAutoUpdate DisableWindowsUpdateAccess" %nul% && set updatesblock=1 |
737 | 725 | ||
738 | if defined updatesblock ( | 726 | if defined updatesblock call :dk_color %Gray% "Checking Update Blocker In Registry [Found]" |
739 | call :dk_color %Gray% "Checking Windows Update Blockers [Found]" | 727 | |
740 | if defined applist echo: %serv_e% | find /i "wuauserv" %nul% && ( | 728 | if defined applist echo: %serv_e% | find /i "wuauserv" %nul% && ( |
741 | call :dk_color %Blue% "Windows Update is not working. Enable it incase if you have disabled it." | 729 | call :dk_color %Blue% "Windows Update is not working. Enable it incase if you have disabled it." |
742 | reg query HKLM\SYSTEM\CurrentControlSet\Services\wuauserv /v WubLock %nul% && call :dk_color %Blue% "Sordum Windows Update Blocker tool has been used to block updates." | 730 | reg query HKLM\SYSTEM\CurrentControlSet\Services\wuauserv /v WubLock %nul% && call :dk_color %Blue% "Sordum Windows Update Blocker tool has been used to block updates." |
743 | ) | 731 | ) |
744 | ) | ||
745 | 732 | ||
746 | reg query "HKLM\SOFTWARE\Policies\Microsoft\WindowsStore" /v DisableStoreApps %nul2% | find /i "0x1" %nul% && ( | 733 | reg query "HKLM\SOFTWARE\Policies\Microsoft\WindowsStore" /v DisableStoreApps %nul2% | find /i "0x1" %nul% && ( |
747 | call :dk_color %Gray% "Checking Store App Blocker [Found]" | 734 | call :dk_color %Gray% "Checking Store Blocker In Registry [Found]" |
748 | ) | 735 | ) |
749 | 736 | ||
750 | ::======================================================================================================================================== | 737 | ::======================================================================================================================================== |
@@ -753,6 +740,7 @@ call :dk_color %Gray% "Checking Store App Blocker [Found]" | |||
753 | 740 | ||
754 | set key= | 741 | set key= |
755 | set altkey= | 742 | set altkey= |
743 | set skufound= | ||
756 | set changekey= | 744 | set changekey= |
757 | set altapplist= | 745 | set altapplist= |
758 | set altedition= | 746 | set altedition= |
@@ -776,7 +764,11 @@ call :dk_color %Red% "Checking Alternate Edition For HWID [%altedition% Acti | |||
776 | if not defined key ( | 764 | if not defined key ( |
777 | %eline% | 765 | %eline% |
778 | echo [%winos% ^| %winbuild% ^| SKU:%osSKU%] | 766 | echo [%winos% ^| %winbuild% ^| SKU:%osSKU%] |
767 | if not defined skufound ( | ||
779 | echo Unable to find this product in the supported product list. | 768 | echo Unable to find this product in the supported product list. |
769 | ) else ( | ||
770 | echo Required License files not found in %SystemRoot%\System32\spp\tokens\skus\ | ||
771 | ) | ||
780 | echo Make sure you are using updated version of the script. | 772 | echo Make sure you are using updated version of the script. |
781 | echo %mas% | 773 | echo %mas% |
782 | echo: | 774 | echo: |
@@ -868,8 +860,7 @@ echo Generating GenuineTicket.xml [Successful] | |||
868 | set "_xmlexist=if exist "%tdir%\GenuineTicket.xml"" | 860 | set "_xmlexist=if exist "%tdir%\GenuineTicket.xml"" |
869 | 861 | ||
870 | %_xmlexist% ( | 862 | %_xmlexist% ( |
871 | net stop ClipSVC /y %nul% | 863 | %psc% Restart-Service ClipSVC %nul% |
872 | net start ClipSVC /y %nul% | ||
873 | %_xmlexist% timeout /t 2 %nul% | 864 | %_xmlexist% timeout /t 2 %nul% |
874 | %_xmlexist% timeout /t 2 %nul% | 865 | %_xmlexist% timeout /t 2 %nul% |
875 | 866 | ||
@@ -974,7 +965,7 @@ echo Deleting a Registry [Successful] [!_ident!] | |||
974 | 965 | ||
975 | REM Refresh some services and license status | 966 | REM Refresh some services and license status |
976 | 967 | ||
977 | for %%# in (wlidsvc LicenseManager sppsvc) do (net stop %%# /y %nul% & net start %%# /y %nul%) | 968 | for %%# in (wlidsvc LicenseManager sppsvc) do (%psc% Restart-Service %%# %nul%) |
978 | call :dk_refresh | 969 | call :dk_refresh |
979 | call :dk_act | 970 | call :dk_act |
980 | call :dk_checkperm | 971 | call :dk_checkperm |
@@ -983,7 +974,7 @@ call :dk_checkperm | |||
983 | REM Check Internet related error codes | 974 | REM Check Internet related error codes |
984 | 975 | ||
985 | if not defined error if not defined _perm ( | 976 | if not defined error if not defined _perm ( |
986 | echo "%error_code%" | findstr /i "0x80072e 0x80072f" %nul% && ( | 977 | echo "%error_code%" | findstr /i "0x80072e 0x80072f 0x800704cf" %nul% && ( |
987 | set error=1 | 978 | set error=1 |
988 | echo: | 979 | echo: |
989 | call :dk_color %Red% "Checking Internet Issues [Found] %error_code%" | 980 | call :dk_color %Red% "Checking Internet Issues [Found] %error_code%" |
@@ -1028,6 +1019,31 @@ goto :dk_done | |||
1028 | 1019 | ||
1029 | ::======================================================================================================================================== | 1020 | ::======================================================================================================================================== |
1030 | 1021 | ||
1022 | :: Check SKU value | ||
1023 | |||
1024 | :dk_checksku | ||
1025 | |||
1026 | set osSKU= | ||
1027 | set slcSKU= | ||
1028 | set wmiSKU= | ||
1029 | set regSKU= | ||
1030 | |||
1031 | if %winbuild% GEQ 14393 (set info=Kernel-BrandingInfo) else (set info=Kernel-ProductInfo) | ||
1032 | set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('SLGetWindowsInformationDWORD', 'slc.dll', 'Public, Static', 1, [int], @([String], [int].MakeByRefType()), 1, 3); | ||
1033 | set d1=%d1% $Sku = 0; [void]$TypeBuilder.CreateType()::SLGetWindowsInformationDWORD('%info%', [ref]$Sku); $Sku | ||
1034 | for /f "delims=" %%s in ('"%psc% %d1%"') do if not errorlevel 1 (set slcSKU=%%s) | ||
1035 | if "%slcSKU%"=="0" set slcSKU= | ||
1036 | if 1%slcSKU% NEQ +1%slcSKU% set slcSKU= | ||
1037 | |||
1038 | for /f "tokens=3 delims=." %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions" /v OSProductPfn %nul6%') do set "regSKU=%%a" | ||
1039 | if %_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" | ||
1040 | if %_wmic% EQU 0 for /f "tokens=1" %%a in ('%psc% "([WMI]'Win32_OperatingSystem=@').OperatingSystemSKU" %nul6%') do if not errorlevel 1 set "wmiSKU=%%a" | ||
1041 | |||
1042 | set osSKU=%slcSKU% | ||
1043 | if not defined osSKU set osSKU=%wmiSKU% | ||
1044 | if not defined osSKU set osSKU=%regSKU% | ||
1045 | exit /b | ||
1046 | |||
1031 | :: Get Windows permanent activation status | 1047 | :: Get Windows permanent activation status |
1032 | 1048 | ||
1033 | :dk_checkperm | 1049 | :dk_checkperm |
@@ -1137,7 +1153,11 @@ set _corrupt= | |||
1137 | sc start %%# %nul% | 1153 | sc start %%# %nul% |
1138 | if !errorlevel! EQU 1060 set _corrupt=1 | 1154 | if !errorlevel! EQU 1060 set _corrupt=1 |
1139 | sc query %%# %nul% || set _corrupt=1 | 1155 | sc query %%# %nul% || set _corrupt=1 |
1140 | for %%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) | 1156 | for %%G in (DependOnService Description DisplayName ErrorControl ImagePath ObjectName Start Type) do if not defined _corrupt ( |
1157 | reg query HKLM\SYSTEM\CurrentControlSet\Services\%%# /v %%G %nul% || set _corrupt=1 | ||
1158 | if /i %%#==TrustedInstaller if /i %%G==DependOnService set _corrupt= | ||
1159 | ) | ||
1160 | |||
1141 | if defined _corrupt (if defined serv_cor (set "serv_cor=!serv_cor! %%#") else (set "serv_cor=%%#")) | 1161 | if defined _corrupt (if defined serv_cor (set "serv_cor=!serv_cor! %%#") else (set "serv_cor=%%#")) |
1142 | ) | 1162 | ) |
1143 | 1163 | ||
@@ -1163,13 +1183,18 @@ set serv_cste= | |||
1163 | 1183 | ||
1164 | if defined serv_ste ( | 1184 | if defined serv_ste ( |
1165 | for %%# in (%serv_ste%) do ( | 1185 | for %%# in (%serv_ste%) do ( |
1166 | if /i %%#==ClipSVC (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "3" /f %nul% & sc config %%# start= demand %nul%) | 1186 | if /i %%#==ClipSVC (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "3" /f %nul% & sc config %%# start= demand %nul%) |
1167 | if /i %%#==wlidsvc sc config %%# start= demand %nul% | 1187 | if /i %%#==wlidsvc sc config %%# start= demand %nul% |
1168 | if /i %%#==sppsvc (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "2" /f %nul% & sc config %%# start= delayed-auto %nul%) | 1188 | if /i %%#==sppsvc (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "2" /f %nul% & sc config %%# start= delayed-auto %nul%) |
1169 | if /i %%#==KeyIso sc config %%# start= demand %nul% | 1189 | if /i %%#==KeyIso sc config %%# start= demand %nul% |
1170 | if /i %%#==LicenseManager sc config %%# start= demand %nul% | 1190 | if /i %%#==LicenseManager sc config %%# start= demand %nul% |
1171 | if /i %%#==Winmgmt sc config %%# start= auto %nul% | 1191 | if /i %%#==Winmgmt sc config %%# start= auto %nul% |
1172 | if /i %%#==wuauserv sc config %%# start= demand %nul% | 1192 | if /i %%#==DoSvc sc config %%# start= delayed-auto %nul% |
1193 | if /i %%#==UsoSvc sc config %%# start= delayed-auto %nul% | ||
1194 | if /i %%#==CryptSvc sc config %%# start= auto %nul% | ||
1195 | if /i %%#==BITS sc config %%# start= delayed-auto %nul% | ||
1196 | if /i %%#==wuauserv sc config %%# start= demand %nul% | ||
1197 | if /i %%#==WaaSMedicSvc sc config %%# start= demand %nul% | ||
1173 | if !errorlevel!==0 ( | 1198 | if !errorlevel!==0 ( |
1174 | if defined serv_csts (set "serv_csts=!serv_csts! %%#") else (set "serv_csts=%%#") | 1199 | if defined serv_csts (set "serv_csts=!serv_csts! %%#") else (set "serv_csts=%%#") |
1175 | ) else ( | 1200 | ) else ( |
@@ -1194,9 +1219,12 @@ set serv_e= | |||
1194 | for %%# in (%_serv%) do ( | 1219 | for %%# in (%_serv%) do ( |
1195 | set errorcode= | 1220 | set errorcode= |
1196 | set checkerror= | 1221 | set checkerror= |
1197 | net start %%# /y %nul% | 1222 | |
1223 | sc query %%# | find /i "RUNNING" %nul% || ( | ||
1224 | %psc% Start-Service %%# %nul% | ||
1198 | set errorcode=!errorlevel! | 1225 | set errorcode=!errorlevel! |
1199 | sc query %%# | find /i "RUNNING" %nul% || set checkerror=1 | 1226 | sc query %%# | find /i "RUNNING" %nul% || set checkerror=1 |
1227 | ) | ||
1200 | 1228 | ||
1201 | sc start %%# %nul% | 1229 | sc start %%# %nul% |
1202 | if !errorlevel! NEQ 1056 if !errorlevel! NEQ 0 (set errorcode=!errorlevel!&set checkerror=1) | 1230 | if !errorlevel! NEQ 1056 if !errorlevel! NEQ 0 (set errorcode=!errorlevel!&set checkerror=1) |
@@ -1207,7 +1235,7 @@ if defined serv_e ( | |||
1207 | set error=1 | 1235 | set error=1 |
1208 | call :dk_color %Red% "Starting Services [Failed] [%serv_e%]" | 1236 | call :dk_color %Red% "Starting Services [Failed] [%serv_e%]" |
1209 | echo %serv_e% | findstr /i "ClipSVC-1058 sppsvc-1058" %nul% && ( | 1237 | echo %serv_e% | findstr /i "ClipSVC-1058 sppsvc-1058" %nul% && ( |
1210 | call :dk_color %Blue% "Restart the system to fix disabled service error 1058." | 1238 | call :dk_color %Blue% "Restart the system to fix this error." |
1211 | set showfix=1 | 1239 | set showfix=1 |
1212 | ) | 1240 | ) |
1213 | ) | 1241 | ) |
@@ -1219,14 +1247,18 @@ set showfix=1 | |||
1219 | if defined safeboot_option ( | 1247 | if defined safeboot_option ( |
1220 | set error=1 | 1248 | set error=1 |
1221 | set showfix=1 | 1249 | set showfix=1 |
1222 | call :dk_color2 %Red% "Checking Boot Mode " %Blue% "[Safe mode found. Run in normal mode.]" | 1250 | call :dk_color2 %Red% "Checking Boot Mode [%safeboot_option%] " %Blue% "[Safe mode found. Run in normal mode.]" |
1223 | ) | 1251 | ) |
1224 | 1252 | ||
1225 | 1253 | ||
1226 | reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State" %nul2% | find /i "IMAGE_STATE_COMPLETE" %nul1% || ( | 1254 | for /f "skip=2 tokens=2*" %%A in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State" /v ImageState') do (set imagestate=%%B) |
1255 | if /i not "%imagestate%"=="IMAGE_STATE_COMPLETE" ( | ||
1227 | set error=1 | 1256 | set error=1 |
1257 | call :dk_color %Red% "Checking Windows Setup State [%imagestate%]" | ||
1258 | echo "%imagestate%" | find /i "RESEAL" %nul% && ( | ||
1228 | set showfix=1 | 1259 | set showfix=1 |
1229 | call :dk_color2 %Red% "Checking Audit Mode " %Blue% "[IMAGE_STATE_COMPLETE status not found. Run in normal mode.]" | 1260 | call :dk_color %Blue% "You need to run it in normal mode in case you are running it in Audit Mode." |
1261 | ) | ||
1230 | ) | 1262 | ) |
1231 | 1263 | ||
1232 | 1264 | ||
@@ -1237,30 +1269,58 @@ call :dk_color2 %Red% "Checking WinPE " %Blue% "[WinPE | |||
1237 | ) | 1269 | ) |
1238 | 1270 | ||
1239 | 1271 | ||
1240 | %psc% $ExecutionContext.SessionState.LanguageMode %nul2% | find /i "Full" %nul1% || ( | 1272 | set wpainfo= |
1273 | set wpaerror= | ||
1274 | for /f "delims=" %%a in ('%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':wpatest\:.*';iex ($f[1]);" %nul6%') do (set wpainfo=%%a) | ||
1275 | echo "%wpainfo%" | find /i "Error Found" %nul% && ( | ||
1241 | set error=1 | 1276 | set error=1 |
1242 | call :dk_color %Red% "Checking Powershell [Not Responding]" | 1277 | set wpaerror=1 |
1278 | call :dk_color %Red% "Checking WPA Registry Error [%wpainfo%]" | ||
1279 | ) || ( | ||
1280 | echo Checking WPA Registry Count [%wpainfo%] | ||
1243 | ) | 1281 | ) |
1244 | 1282 | ||
1245 | 1283 | ||
1246 | DISM /English /Online /Get-CurrentEdition %nul% | 1284 | DISM /English /Online /Get-CurrentEdition %nul% |
1247 | set dism_error=%errorlevel% | 1285 | set dism_error=%errorlevel% |
1248 | cmd /c exit /b %dism_error% | 1286 | cmd /c exit /b %dism_error% |
1249 | if %dism_error% NEQ 0 set "dism_error=[0x%=ExitCode%]" | 1287 | if %dism_error% NEQ 0 set "dism_error=0x%=ExitCode%" |
1250 | if %dism_error% NEQ 0 ( | 1288 | if %dism_error% NEQ 0 ( |
1251 | call :dk_color %Red% "Checking DISM [Not Responding] %dism_error%" | 1289 | call :dk_color %Red% "Checking DISM [Not Responding] [%dism_error%]" |
1252 | ) | 1290 | ) |
1253 | 1291 | ||
1254 | 1292 | ||
1255 | if not defined officeact if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" ( | 1293 | if not defined officeact if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" ( |
1256 | set error=1 | 1294 | set error=1 |
1295 | set showfix=1 | ||
1257 | call :dk_color %Red% "Checking Eval Packages [Non-Eval Licenses are installed in Eval Windows]" | 1296 | call :dk_color %Red% "Checking Eval Packages [Non-Eval Licenses are installed in Eval Windows]" |
1258 | if /i %dism_error%==[0x800F0805] ( | ||
1259 | for %%# in (4 125 126 188 191 205) do if "%osSKU%"=="%%#" ( | ||
1260 | call :dk_color %Blue% "Evaluation Windows can not be activated and different License install may lead to errors." | 1297 | call :dk_color %Blue% "Evaluation Windows can not be activated and different License install may lead to errors." |
1261 | call :dk_color %Blue% "It is recommended to install full version of %winos%." | 1298 | call :dk_color %Blue% "It is recommended to install full version of %winos%." |
1262 | call :dk_color %Blue% "You can download it from %mas%genuine-installation-media.html" | 1299 | call :dk_color %Blue% "You can download it from %mas%genuine-installation-media.html" |
1263 | set showfix=1 | 1300 | ) |
1301 | |||
1302 | |||
1303 | set osedition= | ||
1304 | for /f "skip=2 tokens=3" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul6%') do set "osedition=%%a" | ||
1305 | |||
1306 | :: Workaround for an issue in builds between 1607 and 1709 where ProfessionalEducation is shown as Professional | ||
1307 | |||
1308 | if "%osSKU%"=="164" set osedition=ProfessionalEducation | ||
1309 | if "%osSKU%"=="165" set osedition=ProfessionalEducationN | ||
1310 | |||
1311 | if not defined officeact ( | ||
1312 | if not defined osedition ( | ||
1313 | call :dk_color %Red% "Checking Edition Name [Not Found In Registry]" | ||
1314 | ) else ( | ||
1315 | |||
1316 | if not exist "%SystemRoot%\System32\spp\tokens\skus\%osedition%\%osedition%*.xrm-ms" ( | ||
1317 | set error=1 | ||
1318 | call :dk_color %Red% "Checking License Files [Not Found] [%osedition%]" | ||
1319 | ) | ||
1320 | |||
1321 | if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*-%osedition%-*.mum" ( | ||
1322 | set error=1 | ||
1323 | call :dk_color %Red% "Checking Package File [Not Found] [%osedition%]" | ||
1264 | ) | 1324 | ) |
1265 | ) | 1325 | ) |
1266 | ) | 1326 | ) |
@@ -1319,8 +1379,7 @@ call :dk_color2 %Red% "Checking ClipSVC " %Blue% "[System | |||
1319 | for /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 ( | 1379 | for /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 ( |
1320 | reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "SkipRearm" /t REG_DWORD /d "0" /f %nul% | 1380 | reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "SkipRearm" /t REG_DWORD /d "0" /f %nul% |
1321 | call :dk_color %Red% "Checking SkipRearm [Default 0 Value Not Found. Changing To 0]" | 1381 | call :dk_color %Red% "Checking SkipRearm [Default 0 Value Not Found. Changing To 0]" |
1322 | net stop sppsvc /y %nul% | 1382 | %psc% Restart-Service sppsvc %nul% |
1323 | net start sppsvc /y %nul% | ||
1324 | set error=1 | 1383 | set error=1 |
1325 | ) | 1384 | ) |
1326 | 1385 | ||
@@ -1350,7 +1409,7 @@ call :dk_color %Gray% "Checking SPP Token Folder [Not Found. Creat | |||
1350 | 1409 | ||
1351 | call :dk_actids | 1410 | call :dk_actids |
1352 | if not defined applist ( | 1411 | if not defined applist ( |
1353 | net stop sppsvc /y %nul% | 1412 | %psc% Stop-Service sppsvc %nul% |
1354 | cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% | 1413 | cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% |
1355 | if !errorlevel! NEQ 0 cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% | 1414 | if !errorlevel! NEQ 0 cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% |
1356 | call :dk_refresh | 1415 | call :dk_refresh |
@@ -1375,25 +1434,9 @@ call :dk_color %Red% "Checking sppsvc.exe File [Not Found]" | |||
1375 | ) | 1434 | ) |
1376 | 1435 | ||
1377 | 1436 | ||
1378 | :: 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 | 1437 | :: This code checks if NT SERVICE\sppsvc has permission access to tokens folder and required registry keys. It's often caused by gaming spoofers. |
1379 | 1438 | ||
1380 | set wpaerror= | ||
1381 | set permerror= | 1439 | set permerror= |
1382 | if not defined serv_cor if not defined serv_cste if defined error if /i not %error_code%==0 if not defined showfix ( | ||
1383 | |||
1384 | REM This code checks for invalid registry keys in HKLM\SYSTEM\WPA. This issue may appear even on healthy systems. | ||
1385 | |||
1386 | if %winbuild% GEQ 14393 ( | ||
1387 | set /a count=0 | ||
1388 | for /f %%a in ('reg query "HKLM\SYSTEM\WPA" %nul6%') do set /a count+=1 | ||
1389 | for /L %%# in (1,1,!count!) do ( | ||
1390 | reg query "HKLM\SYSTEM\WPA\8DEC0AF1-0341-4b93-85CD-72606C2DF94C-7P-%%#" /ve /t REG_BINARY %nul% || set wpaerror=1 | ||
1391 | ) | ||
1392 | if defined wpaerror call :dk_color %Red% "Checking WPA Registry Keys [Error Found] [Registry Count - !count!]" | ||
1393 | ) | ||
1394 | |||
1395 | REM This code checks if NT SERVICE\sppsvc has permission access to tokens folder and required registry keys. It's often caused by gaming spoofers. | ||
1396 | |||
1397 | if not exist "%tokenstore%\" set permerror=1 | 1440 | if not exist "%tokenstore%\" set permerror=1 |
1398 | 1441 | ||
1399 | for %%# in ( | 1442 | for %%# in ( |
@@ -1404,15 +1447,65 @@ for %%# in ( | |||
1404 | %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% | 1447 | %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% |
1405 | if !errorlevel!==2 set permerror=1 | 1448 | if !errorlevel!==2 set permerror=1 |
1406 | ) | 1449 | ) |
1407 | if defined permerror call :dk_color %Red% "Checking SPP Permissions [Error Found]" | 1450 | if defined permerror ( |
1451 | set error=1 | ||
1452 | set showfix=1 | ||
1453 | call :dk_color %Red% "Checking SPP Permissions [Error Found]" | ||
1454 | call :dk_color %Blue% "%_fixmsg%" | ||
1455 | ) | ||
1456 | |||
1408 | 1457 | ||
1458 | :: If required services are not disabled or corrupted + if there is any error + slmgr /dlv errorlevel is not Zero + no fix was shown before | ||
1459 | |||
1460 | if not defined serv_cor if not defined serv_cste if defined error if /i not %error_code%==0 if not defined showfix ( | ||
1409 | set showfix=1 | 1461 | set showfix=1 |
1410 | call :dk_color %Blue% "%_fixmsg%" | 1462 | call :dk_color %Blue% "%_fixmsg%" |
1411 | if not defined permerror call :dk_color %Blue% "If activation still fails then run Fix WPA Registry option." | 1463 | if not defined permerror call :dk_color %Blue% "If activation still fails then run Fix WPA Registry option." |
1412 | ) | 1464 | ) |
1413 | 1465 | ||
1466 | if not defined showfix if defined wpaerror ( | ||
1467 | set showfix=1 | ||
1468 | call :dk_color %Blue% "If activation fails then go back to Main Menu, select Troubleshoot and run Fix WPA Registry option." | ||
1469 | ) | ||
1470 | |||
1414 | exit /b | 1471 | exit /b |
1415 | 1472 | ||
1473 | :: This code checks for invalid registry keys in HKLM\SYSTEM\WPA. This issue may appear even on healthy systems | ||
1474 | |||
1475 | :wpatest: | ||
1476 | $wpaKey = [Microsoft.Win32.RegistryKey]::OpenBaseKey('LocalMachine', 'Registry64').OpenSubKey("SYSTEM\\WPA") | ||
1477 | $count = $wpaKey.SubKeyCount | ||
1478 | |||
1479 | $osVersion = [System.Environment]::OSVersion.Version | ||
1480 | $minBuildNumber = 14393 | ||
1481 | |||
1482 | if ($osVersion.Build -ge $minBuildNumber) { | ||
1483 | $subkeyHashTable = @{} | ||
1484 | foreach ($subkeyName in $wpaKey.GetSubKeyNames()) { | ||
1485 | $keyNumber = $subkeyName -replace '.*-', '' | ||
1486 | $subkeyHashTable[$keyNumber] = $true | ||
1487 | } | ||
1488 | for ($i=1; $i -le $count; $i++) { | ||
1489 | if (-not $subkeyHashTable.ContainsKey("$i")) { | ||
1490 | Write-Host "Total Keys $count. Error Found- $i key does not exist" | ||
1491 | $wpaKey.Close() | ||
1492 | exit | ||
1493 | } | ||
1494 | } | ||
1495 | } | ||
1496 | $wpaKey.GetSubKeyNames() | ForEach-Object { | ||
1497 | $subkey = $wpaKey.OpenSubKey($_) | ||
1498 | $p = $subkey.GetValueNames() | ||
1499 | if (($p | Where-Object { $subkey.GetValueKind($_) -eq [Microsoft.Win32.RegistryValueKind]::Binary }).Count -eq 0) { | ||
1500 | Write-Host "Total Keys $count. Error Found- Binary Data is corrupt" | ||
1501 | $wpaKey.Close() | ||
1502 | exit | ||
1503 | } | ||
1504 | } | ||
1505 | $count | ||
1506 | $wpaKey.Close() | ||
1507 | :wpatest: | ||
1508 | |||
1416 | ::======================================================================================================================================== | 1509 | ::======================================================================================================================================== |
1417 | 1510 | ||
1418 | :dk_color | 1511 | :dk_color |
@@ -1461,47 +1554,49 @@ exit /b | |||
1461 | 1554 | ||
1462 | set f= | 1555 | set f= |
1463 | for %%# in ( | 1556 | for %%# in ( |
1464 | 8b351c9c-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 | 1557 | 8b351c9c-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 |
1465 | c83cef07-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 | 1558 | c83cef07-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 |
1466 | 4de7cb65-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 | 1559 | 4de7cb65-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 |
1467 | 9fbaf5d6-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 | 1560 | 9fbaf5d6-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 |
1468 | f742e4ff-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 | 1561 | f742e4ff-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 |
1469 | 1d1bac85-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 | 1562 | 1d1bac85-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 |
1470 | 3ae2cc14-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 | 1563 | 3ae2cc14-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 |
1471 | 2b1f36bb-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 | 1564 | 2b1f36bb-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 |
1472 | 2a6137f3-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 | 1565 | 2a6137f3-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 |
1473 | e558417a-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 | 1566 | e558417a-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 |
1474 | c5198a66-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 | 1567 | c5198a66-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 |
1475 | f6e29426-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 | 1568 | f6e29426-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 |
1476 | cce9d2de-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 | 1569 | cce9d2de-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 |
1477 | d06934ee-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 | 1570 | d06934ee-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 |
1478 | 706e0cfd-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 | 1571 | 706e0cfd-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 |
1479 | faa57748-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 | 1572 | faa57748-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 |
1480 | 837766ff-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 | 1573 | 837766ff-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 |
1481 | 2c060131-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 | 1574 | 2c060131-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 |
1482 | e8f74caa-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 | 1575 | e8f74caa-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 |
1483 | 3d1022d8-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 | 1576 | 3d1022d8-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 |
1484 | 60c243e1-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 | 1577 | 60c243e1-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 |
1485 | 01eb852c-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 | 1578 | 01eb852c-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 |
1486 | eb6d346f-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 | 1579 | eb6d346f-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 |
1487 | 89e87510-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 | 1580 | 89e87510-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 |
1488 | 62f0c100-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 | 1581 | 62f0c100-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 |
1489 | 13a38698-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 | 1582 | 13a38698-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 |
1490 | df96023b-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 | 1583 | df96023b-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 |
1491 | d4ef7282-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 | 1584 | d4ef7282-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 |
1492 | af5c9381-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 | 1585 | af5c9381-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 |
1493 | 8ab9bdd1-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 | 1586 | 8ab9bdd1-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 |
1494 | ed655016-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 | 1587 | ed655016-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 |
1495 | 6c4de1b8-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 | 1588 | 6c4de1b8-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 |
1496 | d4bdc678-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 | 1589 | d4bdc678-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 |
1497 | 92fb8726-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 | 1590 | 92fb8726-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 |
1498 | d4f9b41f-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 | 1591 | 5a85300a-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 |
1592 | 80083eae-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 | ||
1499 | ) do ( | 1593 | ) do ( |
1500 | for /f "tokens=1-9 delims=_" %%A in ("%%#") do ( | 1594 | for /f "tokens=1-9 delims=_" %%A in ("%%#") do ( |
1501 | 1595 | ||
1502 | REM Detect key | 1596 | REM Detect key |
1503 | 1597 | ||
1504 | if %1==key if %osSKU%==%%C if not defined key ( | 1598 | if %1==key if %osSKU%==%%C if not defined key ( |
1599 | set skufound=1 | ||
1505 | echo "!applist! !altapplist!" | find /i "%%A" %nul1% && ( | 1600 | echo "!applist! !altapplist!" | find /i "%%A" %nul1% && ( |
1506 | if %%F==1 set notworking=1 | 1601 | if %%F==1 set notworking=1 |
1507 | set key=%%B | 1602 | set key=%%B |
@@ -1575,8 +1670,6 @@ set _rem=0 | |||
1575 | 1670 | ||
1576 | :: If value is changed in above lines or parameter is used then script will run in unattended mode | 1671 | :: If value is changed in above lines or parameter is used then script will run in unattended mode |
1577 | 1672 | ||
1578 | |||
1579 | |||
1580 | ::======================================================================================================================================== | 1673 | ::======================================================================================================================================== |
1581 | 1674 | ||
1582 | cls | 1675 | cls |
@@ -1665,7 +1758,7 @@ set "_batp=%_batf:'=''%" | |||
1665 | set _PSarg="""%~f0""" -el %_args% | 1758 | set _PSarg="""%~f0""" -el %_args% |
1666 | 1759 | ||
1667 | set "_ttemp=%userprofile%\AppData\Local\Temp" | 1760 | set "_ttemp=%userprofile%\AppData\Local\Temp" |
1668 | 1761 | set "_Local=%LocalAppData%" | |
1669 | setlocal EnableDelayedExpansion | 1762 | setlocal EnableDelayedExpansion |
1670 | 1763 | ||
1671 | ::======================================================================================================================================== | 1764 | ::======================================================================================================================================== |
@@ -1710,13 +1803,29 @@ goto :oh_menu | |||
1710 | :oh_menu2 | 1803 | :oh_menu2 |
1711 | 1804 | ||
1712 | cls | 1805 | cls |
1713 | mode 128, 32 | 1806 | mode 130, 32 |
1714 | %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;}" | 1807 | %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;}" |
1715 | 1808 | ||
1716 | title Ohook Activation %masver% | 1809 | title Ohook Activation %masver% |
1717 | 1810 | ||
1718 | echo: | 1811 | echo: |
1719 | echo Initializing... | 1812 | echo Initializing... |
1813 | |||
1814 | :: Check PowerShell | ||
1815 | |||
1816 | %psc% $ExecutionContext.SessionState.LanguageMode %nul2% | find /i "Full" %nul1% || ( | ||
1817 | %eline% | ||
1818 | %psc% $ExecutionContext.SessionState.LanguageMode | ||
1819 | echo: | ||
1820 | echo PowerShell is not working. Aborting... | ||
1821 | echo If you have applied restrictions on Powershell then undo those changes. | ||
1822 | echo: | ||
1823 | echo Check this page for help. %mas%troubleshoot | ||
1824 | goto dk_done | ||
1825 | ) | ||
1826 | |||
1827 | ::======================================================================================================================================== | ||
1828 | |||
1720 | call :dk_product | 1829 | call :dk_product |
1721 | call :dk_ckeckwmic | 1830 | call :dk_ckeckwmic |
1722 | 1831 | ||
@@ -1771,8 +1880,8 @@ set o16uwp= | |||
1771 | 1880 | ||
1772 | set _68=HKLM\SOFTWARE\Microsoft\Office | 1881 | set _68=HKLM\SOFTWARE\Microsoft\Office |
1773 | set _86=HKLM\SOFTWARE\Wow6432Node\Microsoft\Office | 1882 | set _86=HKLM\SOFTWARE\Wow6432Node\Microsoft\Office |
1774 | %nul% reg query %_68%\14.0\Common\InstallRoot /v Path && set o14msi=Office 2010 MSI | 1883 | for /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 ) |
1775 | %nul% reg query %_86%\14.0\Common\InstallRoot /v Path && set o14msi=Office 2010 MSI | 1884 | for /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 ) |
1776 | %nul% reg query %_68%\14.0\CVH /f Click2run /k && set o14c2r=Office 2010 C2R | 1885 | %nul% reg query %_68%\14.0\CVH /f Click2run /k && set o14c2r=Office 2010 C2R |
1777 | %nul% reg query %_86%\14.0\CVH /f Click2run /k && set o14c2r=Office 2010 C2R | 1886 | %nul% reg query %_86%\14.0\CVH /f Click2run /k && set o14c2r=Office 2010 C2R |
1778 | 1887 | ||
@@ -1851,10 +1960,11 @@ if not defined _oArch for /f "skip=2 tokens=2*" %%a in ('"reg query %o15c2r_reg% | |||
1851 | 1960 | ||
1852 | echo "%o15c2r_reg%" | find /i "Wow6432Node" %nul1% && (set _tok=10) || (set _tok=9) | 1961 | echo "%o15c2r_reg%" | find /i "Wow6432Node" %nul1% && (set _tok=10) || (set _tok=9) |
1853 | for /f "tokens=%_tok% delims=\" %%a in ('reg query %o15c2r_reg%\ProductReleaseIDs\Active %nul6% ^| findstr /i "Retail Volume"') do ( | 1962 | for /f "tokens=%_tok% delims=\" %%a in ('reg query %o15c2r_reg%\ProductReleaseIDs\Active %nul6% ^| findstr /i "Retail Volume"') do ( |
1854 | if not defined _oIds (set "_oIds=%%a") else (set "_oIds=!_oIds! %%a") | 1963 | echo "!_oIds!" | find /i " %%a " %nul1% || (set "_oIds= !_oIds! %%a ") |
1855 | ) | 1964 | ) |
1856 | 1965 | ||
1857 | set "_oLPath=%_oRoot%\Licenses" | 1966 | set "_oLPath=%_oRoot%\Licenses" |
1967 | set "_oIntegrator=%_oRoot%\integration\integrator.exe" | ||
1858 | 1968 | ||
1859 | if [%_oArch%]==[x64] (set "_hookPath=%_oRoot%\vfs\System" & set "_hook=sppc64.dll") | 1969 | if [%_oArch%]==[x64] (set "_hookPath=%_oRoot%\vfs\System" & set "_hook=sppc64.dll") |
1860 | if [%_oArch%]==[x86] (set "_hookPath=%_oRoot%\vfs\SystemX86" & set "_hook=sppc32.dll") | 1970 | if [%_oArch%]==[x86] (set "_hookPath=%_oRoot%\vfs\SystemX86" & set "_hook=sppc32.dll") |
@@ -1894,11 +2004,12 @@ for /f "skip=2 tokens=2*" %%a in ('"reg query %o16c2r_reg%\Configuration /v Plat | |||
1894 | 2004 | ||
1895 | echo "%o16c2r_reg%" | find /i "Wow6432Node" %nul1% && (set _tok=9) || (set _tok=8) | 2005 | echo "%o16c2r_reg%" | find /i "Wow6432Node" %nul1% && (set _tok=9) || (set _tok=8) |
1896 | for /f "tokens=%_tok% delims=\" %%a in ('reg query "%o16c2r_reg%\ProductReleaseIDs" /s /f ".16" /k %nul6% ^| findstr /i "Retail Volume"') do ( | 2006 | for /f "tokens=%_tok% delims=\" %%a in ('reg query "%o16c2r_reg%\ProductReleaseIDs" /s /f ".16" /k %nul6% ^| findstr /i "Retail Volume"') do ( |
1897 | if not defined _oIds (set "_oIds=%%a") else (set "_oIds=!_oIds! %%a") | 2007 | echo "!_oIds!" | find /i " %%a " %nul1% || (set "_oIds= !_oIds! %%a ") |
1898 | ) | 2008 | ) |
1899 | set _oIds=%_oIds:.16=% | 2009 | set _oIds=%_oIds:.16=% |
1900 | 2010 | ||
1901 | set "_oLPath=%_oRoot%\Licenses16" | 2011 | set "_oLPath=%_oRoot%\Licenses16" |
2012 | set "_oIntegrator=%_oRoot%\integration\integrator.exe" | ||
1902 | 2013 | ||
1903 | if [%_oArch%]==[x64] (set "_hookPath=%_oRoot%\vfs\System" & set "_hook=sppc64.dll") | 2014 | if [%_oArch%]==[x64] (set "_hookPath=%_oRoot%\vfs\System" & set "_hook=sppc64.dll") |
1904 | if [%_oArch%]==[x86] (set "_hookPath=%_oRoot%\vfs\SystemX86" & set "_hook=sppc32.dll") | 2015 | if [%_oArch%]==[x86] (set "_hookPath=%_oRoot%\vfs\SystemX86" & set "_hook=sppc32.dll") |
@@ -1928,12 +2039,16 @@ call :oh_hookinstall | |||
1928 | 2039 | ||
1929 | set _sid= | 2040 | set _sid= |
1930 | set sub_next= | 2041 | set sub_next= |
1931 | for /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")) | 2042 | |
2043 | for /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")) | ||
1932 | 2044 | ||
1933 | if not defined _sid ( | 2045 | if not defined _sid ( |
1934 | call :dk_color %Red% "Checking User Accounts SID [Not Found]" | 2046 | call :dk_color %Red% "Checking User Accounts SID [Not Found]" |
1935 | ) | 2047 | ) |
1936 | 2048 | ||
2049 | dir /b /s /a:-d "!_Local!\Microsoft\Office\Licenses\*" %nul% && set sub_next=1 | ||
2050 | dir /b /s /a:-d "!ProgramData!\Microsoft\Office\Licenses\*" %nul% && set sub_next=1 | ||
2051 | |||
1937 | for %%# in (!_sid! HKCU) do if not defined sub_next ( | 2052 | for %%# in (!_sid! HKCU) do if not defined sub_next ( |
1938 | reg query %%#\Software\Microsoft\Office\16.0\Common\Licensing\LicensingNext /v MigrationToV5Done %nul2% | find /i "0x1" %nul% && ( | 2053 | reg query %%#\Software\Microsoft\Office\16.0\Common\Licensing\LicensingNext /v MigrationToV5Done %nul2% | find /i "0x1" %nul% && ( |
1939 | reg query %%#\Software\Microsoft\Office\16.0\Common\Licensing\LicensingNext %nul2% | findstr /i "volume retail" %nul2% | findstr /i "0x2 0x3" %nul% && ( | 2054 | reg query %%#\Software\Microsoft\Office\16.0\Common\Licensing\LicensingNext %nul2% | findstr /i "volume retail" %nul2% | findstr /i "0x2 0x3" %nul% && ( |
@@ -1942,11 +2057,15 @@ set sub_next=1 | |||
1942 | ) | 2057 | ) |
1943 | ) | 2058 | ) |
1944 | 2059 | ||
1945 | if defined sub_next for %%# in (!_sid! HKCU) do ( | 2060 | if defined sub_next ( |
2061 | rmdir /s /q "!_Local!\Microsoft\Office\Licenses\" %nul% | ||
2062 | rmdir /s /q "!ProgramData!\Microsoft\Office\Licenses\" %nul% | ||
2063 | for %%# in (!_sid! HKCU) do ( | ||
1946 | reg delete %%#\Software\Microsoft\Office\16.0\Common\Licensing /f %nul% | 2064 | reg delete %%#\Software\Microsoft\Office\16.0\Common\Licensing /f %nul% |
1947 | reg delete %%#\Software\Microsoft\Office\16.0\Common\Identity /f %nul% | 2065 | reg delete %%#\Software\Microsoft\Office\16.0\Common\Identity /f %nul% |
1948 | reg delete %%#\Software\Microsoft\Office\16.0\Registration /f %nul% | 2066 | reg delete %%#\Software\Microsoft\Office\16.0\Registration /f %nul% |
1949 | ) | 2067 | ) |
2068 | ) | ||
1950 | 2069 | ||
1951 | if defined sub_next echo Removing Office vNext Block [Successful] | 2070 | if defined sub_next echo Removing Office vNext Block [Successful] |
1952 | 2071 | ||
@@ -1958,7 +2077,7 @@ if defined sub_next echo Removing Office vNext Block [Successful] | |||
1958 | if defined o16c2r ( | 2077 | if defined o16c2r ( |
1959 | for %%# in (!_sid! HKCU) do (reg delete %%#\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency /f %nul%) | 2078 | for %%# in (!_sid! HKCU) do (reg delete %%#\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency /f %nul%) |
1960 | for %%# in (!_sid! HKCU) do ( | 2079 | for %%# in (!_sid! HKCU) do ( |
1961 | reg query %%# %nul% && ( | 2080 | reg query "%%#\Volatile Environment" %nul% && ( |
1962 | reg add %%#\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency /v "TimeOfLastHeartbeatFailure" /t REG_SZ /d "2040-01-01T00:00:00Z" /f %nul% | 2081 | reg add %%#\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency /v "TimeOfLastHeartbeatFailure" /t REG_SZ /d "2040-01-01T00:00:00Z" /f %nul% |
1963 | ) | 2082 | ) |
1964 | ) | 2083 | ) |
@@ -2089,7 +2208,7 @@ echo: | |||
2089 | echo Deleting - Registry keys to skip license check | 2208 | echo Deleting - Registry keys to skip license check |
2090 | reg delete HKCU\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency /f | 2209 | reg delete HKCU\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency /f |
2091 | 2210 | ||
2092 | for /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")) | 2211 | for /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")) |
2093 | for %%# in (!_sid!) do (reg query HKU\%%#\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency %nul% && ( | 2212 | for %%# in (!_sid!) do (reg query HKU\%%#\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency %nul% && ( |
2094 | reg delete HKU\%%#\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency /f | 2213 | reg delete HKU\%%#\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency /f |
2095 | ) | 2214 | ) |
@@ -2158,10 +2277,10 @@ for /f "skip=2 tokens=2*" %%a in ('"reg query %_68%\ClickToRun /v InstallPath" % | |||
2158 | for /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) | 2277 | for /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) |
2159 | for /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) | 2278 | for /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) |
2160 | 2279 | ||
2161 | for /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) | 2280 | for /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) |
2162 | for /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) | 2281 | for /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) |
2163 | for /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) | 2282 | for /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) |
2164 | for /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) | 2283 | for /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) |
2165 | 2284 | ||
2166 | exit /b | 2285 | exit /b |
2167 | 2286 | ||
@@ -2196,7 +2315,21 @@ exit /b | |||
2196 | 2315 | ||
2197 | if not defined _oLPath exit /b | 2316 | if not defined _oLPath exit /b |
2198 | 2317 | ||
2199 | set _License=%_prod:XVolume=XC2RVL_% | 2318 | if %oVer%==16 ( |
2319 | "!_oIntegrator!" /I /License PRIDName=%_License%.16 PidKey=%_key% %nul% | ||
2320 | ) else ( | ||
2321 | "!_oIntegrator!" /I /License PRIDName=%_License% PidKey=%_key% %nul% | ||
2322 | ) | ||
2323 | |||
2324 | call :oh_actids | ||
2325 | echo "!oapplist!" | find /i "!_actid!" %nul1% && ( | ||
2326 | call :dk_color %Gray% "Installing Missing License Files [Office %oVer%.0 %_prod%] [Successful]" | ||
2327 | exit /b | ||
2328 | ) | ||
2329 | |||
2330 | :: Fallback to /ilc method to install licenses incase integrator.exe is not working | ||
2331 | |||
2332 | set _License=%_License:XVolume=XC2RVL_% | ||
2200 | 2333 | ||
2201 | set _License=%_License:O365EduCloudRetail=O365EduCloudEDUR_% | 2334 | set _License=%_License:O365EduCloudRetail=O365EduCloudEDUR_% |
2202 | 2335 | ||
@@ -2205,6 +2338,8 @@ set _License=%_License:ProjectStdRetail=ProjectStdO365R_% | |||
2205 | set _License=%_License:VisioProRetail=VisioProO365R_% | 2338 | set _License=%_License:VisioProRetail=VisioProO365R_% |
2206 | set _License=%_License:VisioStdRetail=VisioStdO365R_% | 2339 | set _License=%_License:VisioStdRetail=VisioStdO365R_% |
2207 | 2340 | ||
2341 | if defined _preview set _License=%_License:Volume=PreviewVL_% | ||
2342 | |||
2208 | set _License=%_License:Retail=R_% | 2343 | set _License=%_License:Retail=R_% |
2209 | set _License=%_License:Volume=VL_% | 2344 | set _License=%_License:Volume=VL_% |
2210 | 2345 | ||
@@ -2218,9 +2353,8 @@ cscript //nologo %windir%\system32\slmgr.vbs /ilc "!_oLPath!\%%~nx#" %nul% | |||
2218 | ) | 2353 | ) |
2219 | 2354 | ||
2220 | call :oh_actids | 2355 | call :oh_actids |
2221 | |||
2222 | echo "!oapplist!" | find /i "!_actid!" %nul1% && ( | 2356 | echo "!oapplist!" | find /i "!_actid!" %nul1% && ( |
2223 | call :dk_color %Gray% "Installing Missing License Files [Office %oVer%.0 %_prod%] [Successful]" | 2357 | call :dk_color %Gray% "Installing Missing License Files [Office %oVer%.0 %_prod%] [Successful with /ilc Method]" |
2224 | ) || ( | 2358 | ) || ( |
2225 | set error=1 | 2359 | set error=1 |
2226 | call :dk_color %Red% "Installing Missing License Files [Office %oVer%.0 %_prod%] [Failed]" | 2360 | call :dk_color %Red% "Installing Missing License Files [Office %oVer%.0 %_prod%] [Failed]" |
@@ -2284,17 +2418,23 @@ for %%# in (%_oIds%) do ( | |||
2284 | set _key= | 2418 | set _key= |
2285 | set _actid= | 2419 | set _actid= |
2286 | set _lic= | 2420 | set _lic= |
2287 | set _prod=%%# | 2421 | set _preview= |
2422 | set _License=%%# | ||
2423 | |||
2424 | echo %%# | find /i "2024" %nul% && ( | ||
2425 | if exist "!_oLPath!\ProPlus2024PreviewVL_*.xrm-ms" if not exist "!_oLPath!\ProPlus2024VL_*.xrm-ms" set _preview=-Preview | ||
2426 | ) | ||
2427 | set _prod=%%#!_preview! | ||
2288 | 2428 | ||
2289 | call :ohookdata getinfo %%# | 2429 | call :ohookdata getinfo !_prod! |
2290 | 2430 | ||
2291 | if not [!_key!]==[] ( | 2431 | if not [!_key!]==[] ( |
2292 | echo "!oapplist!" | find /i "!_actid!" %nul1% || call :oh_installlic | 2432 | echo "!oapplist!" | find /i "!_actid!" %nul1% || call :oh_installlic |
2293 | call :oh_installkey | 2433 | call :oh_installkey |
2294 | ) else ( | 2434 | ) else ( |
2295 | set error=1 | 2435 | set error=1 |
2296 | call :dk_color %Red% "Checking Product In Script [Office %oVer%.0 %%# not found in script]" | 2436 | call :dk_color %Red% "Checking Product In Script [Office %oVer%.0 !_prod! not found in script]" |
2297 | echo Make sure you are using Latest MAS script. | 2437 | call :dk_color %Blue% "Make sure you are using Latest MAS script." |
2298 | ) | 2438 | ) |
2299 | ) | 2439 | ) |
2300 | 2440 | ||
@@ -2544,6 +2684,9 @@ for %%# in ( | |||
2544 | 16_d55f90ee-4ba2-4d02-b216-1300ee50e2af_BW%f%43B-4P%f%NFP-V63%f%7F-23%f%TR2-J47%f%TX_MAK-AE________VisioStd2021Volume | 2684 | 16_d55f90ee-4ba2-4d02-b216-1300ee50e2af_BW%f%43B-4P%f%NFP-V63%f%7F-23%f%TR2-J47%f%TX_MAK-AE________VisioStd2021Volume |
2545 | 16_fb33d997-4aa3-494e-8b58-03e9ab0f181d_VN%f%CC4-CJ%f%QVK-BKX%f%34-77%f%Y8H-CYX%f%MR_Retail________Word2021Retail | 2685 | 16_fb33d997-4aa3-494e-8b58-03e9ab0f181d_VN%f%CC4-CJ%f%QVK-BKX%f%34-77%f%Y8H-CYX%f%MR_Retail________Word2021Retail |
2546 | 16_0c728382-95fb-4a55-8f12-62e605f91727_BJ%f%G97-NW%f%3GM-8QQ%f%Q7-FH%f%76G-686%f%XM_MAK-AE________Word2021Volume | 2686 | 16_0c728382-95fb-4a55-8f12-62e605f91727_BJ%f%G97-NW%f%3GM-8QQ%f%Q7-FH%f%76G-686%f%XM_MAK-AE________Word2021Volume |
2687 | 16_8fdb1f1e-663f-4f2e-8fdb-7c35aee7d5ea_GN%f%XWX-DF%f%797-B2J%f%T3-82%f%W27-KHP%f%XT_MAK-AE________ProPlus2024Volume-Preview | ||
2688 | 16_33b11b14-91fd-4f7b-b704-e64a055cf601_X8%f%6XX-N3%f%QMW-B4W%f%GQ-QC%f%B69-V26%f%KW_MAK_AE________ProjectPro2024Volume-Preview | ||
2689 | 16_eb074198-7384-4bdd-8e6c-c3342dac8435_DW%f%99Y-H7%f%NT6-6B2%f%9D-8J%f%Q8F-R3Q%f%T7_MAK_AE________VisioPro2024Volume-Preview | ||
2547 | 16_6337137e-7c07-4197-8986-bece6a76fc33_2P%f%3C9-BQ%f%NJH-VCV%f%PH-YD%f%Y6M-43J%f%PQ_Subscription__O365BusinessRetail | 2690 | 16_6337137e-7c07-4197-8986-bece6a76fc33_2P%f%3C9-BQ%f%NJH-VCV%f%PH-YD%f%Y6M-43J%f%PQ_Subscription__O365BusinessRetail |
2548 | 16_2f5c71b4-5b7a-4005-bb68-f9fac26f2ea3_W6%f%2NQ-26%f%7QR-RTF%f%74-PF%f%2MH-JQM%f%TH_Subscription__O365EduCloudRetail | 2691 | 16_2f5c71b4-5b7a-4005-bb68-f9fac26f2ea3_W6%f%2NQ-26%f%7QR-RTF%f%74-PF%f%2MH-JQM%f%TH_Subscription__O365EduCloudRetail |
2549 | 16_537ea5b5-7d50-4876-bd38-a53a77caca32_J2%f%W28-TN%f%9C8-26P%f%WV-F7%f%J4G-72X%f%CB_Subscription1_O365HomePremRetail | 2692 | 16_537ea5b5-7d50-4876-bd38-a53a77caca32_J2%f%W28-TN%f%9C8-26P%f%WV-F7%f%J4G-72X%f%CB_Subscription1_O365HomePremRetail |
@@ -2822,8 +2965,6 @@ set _NoEditionChange=0 | |||
2822 | 2965 | ||
2823 | :: If value is changed in above lines or parameter is used then script will run in unattended mode | 2966 | :: If value is changed in above lines or parameter is used then script will run in unattended mode |
2824 | 2967 | ||
2825 | |||
2826 | |||
2827 | ::======================================================================================================================================== | 2968 | ::======================================================================================================================================== |
2828 | 2969 | ||
2829 | cls | 2970 | cls |
@@ -2958,11 +3099,28 @@ goto :k_menu | |||
2958 | :k_menu2 | 3099 | :k_menu2 |
2959 | 3100 | ||
2960 | cls | 3101 | cls |
2961 | mode 108, 34 | 3102 | mode 110, 34 |
3103 | if exist "%Systemdrive%\Windows\System32\spp\store_test\" mode 134, 34 | ||
2962 | title KMS38 Activation %masver% | 3104 | title KMS38 Activation %masver% |
2963 | 3105 | ||
2964 | echo: | 3106 | echo: |
2965 | echo Initializing... | 3107 | echo Initializing... |
3108 | |||
3109 | :: Check PowerShell | ||
3110 | |||
3111 | %psc% $ExecutionContext.SessionState.LanguageMode %nul2% | find /i "Full" %nul1% || ( | ||
3112 | %eline% | ||
3113 | %psc% $ExecutionContext.SessionState.LanguageMode | ||
3114 | echo: | ||
3115 | echo PowerShell is not working. Aborting... | ||
3116 | echo If you have applied restrictions on Powershell then undo those changes. | ||
3117 | echo: | ||
3118 | echo Check this page for help. %mas%troubleshoot | ||
3119 | goto dk_done | ||
3120 | ) | ||
3121 | |||
3122 | ::======================================================================================================================================== | ||
3123 | |||
2966 | call :dk_product | 3124 | call :dk_product |
2967 | call :dk_ckeckwmic | 3125 | call :dk_ckeckwmic |
2968 | 3126 | ||
@@ -3045,27 +3203,7 @@ goto dk_done | |||
3045 | 3203 | ||
3046 | ::======================================================================================================================================== | 3204 | ::======================================================================================================================================== |
3047 | 3205 | ||
3048 | :: Check SKU value / Check in multiple places to find Edition change corruption | 3206 | call :dk_checksku |
3049 | |||
3050 | set osSKU= | ||
3051 | set slcSKU= | ||
3052 | set wmiSKU= | ||
3053 | set regSKU= | ||
3054 | |||
3055 | if %winbuild% GEQ 14393 (set info=Kernel-BrandingInfo) else (set info=Kernel-ProductInfo) | ||
3056 | set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('SLGetWindowsInformationDWORD', 'slc.dll', 'Public, Static', 1, [int], @([String], [int].MakeByRefType()), 1, 3); | ||
3057 | set d1=%d1% $Sku = 0; [void]$TypeBuilder.CreateType()::SLGetWindowsInformationDWORD('%info%', [ref]$Sku); $Sku | ||
3058 | for /f "delims=" %%s in ('"%psc% %d1%"') do if not errorlevel 1 (set slcSKU=%%s) | ||
3059 | if "%slcSKU%"=="0" set slcSKU= | ||
3060 | if 1%slcSKU% NEQ +1%slcSKU% set slcSKU= | ||
3061 | |||
3062 | for /f "tokens=3 delims=." %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions" /v OSProductPfn %nul6%') do set "regSKU=%%a" | ||
3063 | if %_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" | ||
3064 | if %_wmic% EQU 0 for /f "tokens=1" %%a in ('%psc% "([WMI]'Win32_OperatingSystem=@').OperatingSystemSKU" %nul6%') do if not errorlevel 1 set "wmiSKU=%%a" | ||
3065 | |||
3066 | set osSKU=%slcSKU% | ||
3067 | if not defined osSKU set osSKU=%wmiSKU% | ||
3068 | if not defined osSKU set osSKU=%regSKU% | ||
3069 | 3207 | ||
3070 | if not defined osSKU ( | 3208 | if not defined osSKU ( |
3071 | %eline% | 3209 | %eline% |
@@ -3124,11 +3262,11 @@ if /i "Volume:GVLK"=="%_channel%" set _gvlk=1 | |||
3124 | set key= | 3262 | set key= |
3125 | set pkey= | 3263 | set pkey= |
3126 | set altkey= | 3264 | set altkey= |
3265 | set skufound= | ||
3127 | set changekey= | 3266 | set changekey= |
3128 | set altedition= | 3267 | set altedition= |
3129 | 3268 | ||
3130 | if defined applist call :kms38data getkey | 3269 | call :kms38data getkey |
3131 | |||
3132 | if not defined key call :dk_gvlk %nul% | 3270 | if not defined key call :dk_gvlk %nul% |
3133 | if defined applist if not defined key call :kms38fallback | 3271 | if defined applist if not defined key call :kms38fallback |
3134 | 3272 | ||
@@ -3149,7 +3287,11 @@ call :dk_color %Red% "Checking Alternate Edition For KMS38 [%altedition% Acti | |||
3149 | if not defined key if not defined _gvlk ( | 3287 | if not defined key if not defined _gvlk ( |
3150 | %eline% | 3288 | %eline% |
3151 | echo [%winos% ^| %winbuild% ^| SKU:%osSKU%] | 3289 | echo [%winos% ^| %winbuild% ^| SKU:%osSKU%] |
3290 | if not defined skufound ( | ||
3152 | echo Unable to find this product in the supported product list. | 3291 | echo Unable to find this product in the supported product list. |
3292 | ) else ( | ||
3293 | echo Required License files not installed. | ||
3294 | ) | ||
3153 | echo Make sure you are using updated version of the script. | 3295 | echo Make sure you are using updated version of the script. |
3154 | echo %mas% | 3296 | echo %mas% |
3155 | echo: | 3297 | echo: |
@@ -3293,9 +3435,7 @@ set "_xmlexist=if exist "%tdir%\GenuineTicket.xml"" | |||
3293 | 3435 | ||
3294 | :: Stop sppsvc | 3436 | :: Stop sppsvc |
3295 | 3437 | ||
3296 | net stop sppsvc /y %nul% | 3438 | %psc% Stop-Service sppsvc %nul% |
3297 | net stop sppsvc /y %nul% | ||
3298 | net stop sppsvc /y %nul% | ||
3299 | 3439 | ||
3300 | sc query sppsvc | find /i "STOPPED" %nul% && ( | 3440 | sc query sppsvc | find /i "STOPPED" %nul% && ( |
3301 | echo Stopping sppsvc Service [Successful] | 3441 | echo Stopping sppsvc Service [Successful] |
@@ -3304,8 +3444,7 @@ call :dk_color %Gray% "Stopping sppsvc Service [Failed]" | |||
3304 | ) | 3444 | ) |
3305 | 3445 | ||
3306 | %_xmlexist% ( | 3446 | %_xmlexist% ( |
3307 | net stop ClipSVC /y %nul% | 3447 | %psc% Restart-Service ClipSVC %nul% |
3308 | net start ClipSVC /y %nul% | ||
3309 | %_xmlexist% timeout /t 2 %nul% | 3448 | %_xmlexist% timeout /t 2 %nul% |
3310 | %_xmlexist% timeout /t 2 %nul% | 3449 | %_xmlexist% timeout /t 2 %nul% |
3311 | 3450 | ||
@@ -3572,57 +3711,62 @@ exit /b | |||
3572 | 3711 | ||
3573 | set f= | 3712 | set f= |
3574 | for %%# in ( | 3713 | for %%# in ( |
3575 | 73111121-5638-40f6-bc11-f1d7b0d64300_NPP%f%R9-FW%f%DCX-D2C%f%8J-H8%f%72K-2Y%f%T43___4_Enterprise | 3714 | 73111121-5638-40f6-bc11-f1d7b0d64300_NP%f%PR9-FWD%f%CX-D2%f%C8J-H872%f%K-2Y%f%T43___4_Enterprise |
3576 | 9bd77860-9b31-4b7b-96ad-2564017315bf_VDY%f%BN-27%f%WPP-V4H%f%QT-9V%f%MD4-VM%f%K7H___7_ServerStandard_FE | 3715 | 7dc26449-db21-4e09-ba37-28f2958506a6_DP%f%NXD-67Y%f%Y9-WW%f%FJJ-RYH9%f%9-RM%f%832___7_ServerStandard_Ge |
3577 | de32eafd-aaee-4662-9444-c1befb41bde2_N69%f%G4-B8%f%9J2-4G8%f%F4-WW%f%YCC-J4%f%64C___7_ServerStandard_RS5 | 3716 | 9bd77860-9b31-4b7b-96ad-2564017315bf_VD%f%YBN-27W%f%PP-V4%f%HQT-9VMD%f%4-VM%f%K7H___7_ServerStandard_FE |
3578 | 8c1c5410-9f39-4805-8c9d-63a07706358f_WC2%f%BQ-8N%f%RM3-FDD%f%YY-2B%f%FGV-KH%f%KQY___7_ServerStandard_RS1 | 3717 | de32eafd-aaee-4662-9444-c1befb41bde2_N6%f%9G4-B89%f%J2-4G%f%8F4-WWYC%f%C-J4%f%64C___7_ServerStandard_RS5 |
3579 | ef6cfc9f-8c5d-44ac-9aad-de6a2ea0ae03_WX4%f%NM-KY%f%WYW-QJJ%f%R4-XV%f%3QB-6V%f%M33___8_ServerDatacenter_FE | 3718 | 8c1c5410-9f39-4805-8c9d-63a07706358f_WC%f%2BQ-8NR%f%M3-FD%f%DYY-2BFG%f%V-KH%f%KQY___7_ServerStandard_RS1 |
3580 | 34e1ae55-27f8-4950-8877-7a03be5fb181_WMD%f%GN-G9%f%PQG-XVV%f%XX-R3%f%X43-63%f%DFG___8_ServerDatacenter_RS5 | 3719 | c052f164-cdf6-409a-a0cb-853ba0f0f55a_CN%f%FDQ-2BW%f%8H-9V%f%4WM-TKCP%f%D-MD%f%2QF___8_ServerDatacenter_Ge |
3581 | 21c56779-b449-4d20-adfc-eece0e1ad74b_CB7%f%KF-BW%f%N84-R7R%f%2Y-79%f%3K2-8X%f%DDG___8_ServerDatacenter_RS1 | 3720 | ef6cfc9f-8c5d-44ac-9aad-de6a2ea0ae03_WX%f%4NM-KYW%f%YW-QJ%f%JR4-XV3Q%f%B-6V%f%M33___8_ServerDatacenter_FE |
3582 | e272e3e2-732f-4c65-a8f0-484747d0d947_DPH%f%2V-TT%f%NVB-4X9%f%Q3-TJ%f%R4H-KH%f%JW4__27_EnterpriseN | 3721 | 34e1ae55-27f8-4950-8877-7a03be5fb181_WM%f%DGN-G9P%f%QG-XV%f%VXX-R3X4%f%3-63%f%DFG___8_ServerDatacenter_RS5 |
3583 | 2de67392-b7a7-462a-b1ca-108dd189f588_W26%f%9N-WF%f%GWX-YVC%f%9B-4J%f%6C9-T8%f%3GX__48_Professional | 3722 | 21c56779-b449-4d20-adfc-eece0e1ad74b_CB%f%7KF-BWN%f%84-R7%f%R2Y-793K%f%2-8X%f%DDG___8_ServerDatacenter_RS1 |
3584 | a80b5abf-76ad-428b-b05d-a47d2dffeebf_MH3%f%7W-N4%f%7XK-V7X%f%M9-C7%f%227-GC%f%QG9__49_ProfessionalN | 3723 | e272e3e2-732f-4c65-a8f0-484747d0d947_DP%f%H2V-TTN%f%VB-4X%f%9Q3-TJR4%f%H-KH%f%JW4__27_EnterpriseN |
3585 | 034d3cbb-5d4b-4245-b3f8-f84571314078_WVD%f%HN-86%f%M7X-466%f%P6-VH%f%XV7-YY%f%726__50_ServerSolution_RS5 | 3724 | 2de67392-b7a7-462a-b1ca-108dd189f588_W2%f%69N-WFG%f%WX-YV%f%C9B-4J6C%f%9-T8%f%3GX__48_Professional |
3586 | 2b5a1b0f-a5ab-4c54-ac2f-a6d94824a283_JCK%f%RF-N3%f%7P4-C2D%f%82-9Y%f%XRT-4M%f%63B__50_ServerSolution_RS1 | 3725 | a80b5abf-76ad-428b-b05d-a47d2dffeebf_MH%f%37W-N47%f%XK-V7%f%XM9-C722%f%7-GC%f%QG9__49_ProfessionalN |
3587 | 7b9e1751-a8da-4f75-9560-5fadfe3d8e38_3KH%f%Y7-WN%f%T83-DGQ%f%KR-F7%f%HPR-84%f%4BM__98_CoreN | 3726 | 034d3cbb-5d4b-4245-b3f8-f84571314078_WV%f%DHN-86M%f%7X-46%f%6P6-VHXV%f%7-YY%f%726__50_ServerSolution_RS5 |
3588 | a9107544-f4a0-4053-a96a-1479abdef912_PVM%f%JN-6D%f%FY6-9CC%f%P6-7B%f%KTT-D3%f%WVR__99_CoreCountrySpecific | 3727 | 2b5a1b0f-a5ab-4c54-ac2f-a6d94824a283_JC%f%KRF-N37%f%P4-C2%f%D82-9YXR%f%T-4M%f%63B__50_ServerSolution_RS1 |
3589 | cd918a57-a41b-4c82-8dce-1a538e221a83_7HN%f%RX-D7%f%KGG-3K4%f%RQ-4W%f%PJ4-YT%f%DFH_100_CoreSingleLanguage | 3728 | 7b9e1751-a8da-4f75-9560-5fadfe3d8e38_3K%f%HY7-WNT%f%83-DG%f%QKR-F7HP%f%R-84%f%4BM__98_CoreN |
3590 | 58e97c99-f377-4ef1-81d5-4ad5522b5fd8_TX9%f%XD-98%f%N7V-6WM%f%Q6-BX%f%7FG-H8%f%Q99_101_Core | 3729 | a9107544-f4a0-4053-a96a-1479abdef912_PV%f%MJN-6DF%f%Y6-9C%f%CP6-7BKT%f%T-D3%f%WVR__99_CoreCountrySpecific |
3591 | 7b4433f4-b1e7-4788-895a-c45378d38253_QN4%f%C6-GB%f%JD2-FB4%f%22-GH%f%WJK-GJ%f%G2R_110_ServerCloudStorage | 3730 | cd918a57-a41b-4c82-8dce-1a538e221a83_7H%f%NRX-D7K%f%GG-3K%f%4RQ-4WPJ%f%4-YT%f%DFH_100_CoreSingleLanguage |
3592 | 8de8eb62-bbe0-40ac-ac17-f75595071ea3_GRF%f%BW-QN%f%DC4-6QB%f%HG-CC%f%K3B-2P%f%R88_120_ServerARM64_RS5 | 3731 | 58e97c99-f377-4ef1-81d5-4ad5522b5fd8_TX%f%9XD-98N%f%7V-6W%f%MQ6-BX7F%f%G-H8%f%Q99_101_Core |
3593 | 43d9af6e-5e86-4be8-a797-d072a046896c_K9F%f%YF-G6%f%NCK-73M%f%32-XM%f%VPY-F9%f%DRR_120_ServerARM64_RS4 | 3732 | 7b4433f4-b1e7-4788-895a-c45378d38253_QN%f%4C6-GBJ%f%D2-FB%f%422-GHWJ%f%K-GJ%f%G2R_110_ServerCloudStorage |
3594 | e0c42288-980c-4788-a014-c080d2e1926e_NW6%f%C2-QM%f%PVW-D7K%f%KK-3G%f%KT6-VC%f%FB2_121_Education | 3733 | 8de8eb62-bbe0-40ac-ac17-f75595071ea3_GR%f%FBW-QND%f%C4-6Q%f%BHG-CCK3%f%B-2P%f%R88_120_ServerARM64_RS5 |
3595 | 3c102355-d027-42c6-ad23-2e7ef8a02585_2WH%f%4N-8Q%f%GBV-H22%f%JP-CT%f%43Q-MD%f%WWJ_122_EducationN | 3734 | 43d9af6e-5e86-4be8-a797-d072a046896c_K9%f%FYF-G6N%f%CK-73%f%M32-XMVP%f%Y-F9%f%DRR_120_ServerARM64_RS4 |
3596 | 32d2fab3-e4a8-42c2-923b-4bf4fd13e6ee_M7X%f%TQ-FN%f%8P6-TTK%f%YV-9D%f%4CC-J4%f%62D_125_EnterpriseS_RS5,VB,Ge | 3735 | e0c42288-980c-4788-a014-c080d2e1926e_NW%f%6C2-QMP%f%VW-D7%f%KKK-3GKT%f%6-VC%f%FB2_121_Education |
3597 | 2d5a5a60-3040-48bf-beb0-fcd770c20ce0_DCP%f%HK-NF%f%MTC-H88%f%MJ-PF%f%HPY-QJ%f%4BJ_125_EnterpriseS_RS1 | 3736 | 3c102355-d027-42c6-ad23-2e7ef8a02585_2W%f%H4N-8QG%f%BV-H2%f%2JP-CT43%f%Q-MD%f%WWJ_122_EducationN |
3598 | 7b51a46c-0c04-4e8f-9af4-8496cca90d5e_WNM%f%TR-4C%f%88C-JK8%f%YV-HQ%f%7T2-76%f%DF9_125_EnterpriseS_TH1 | 3737 | 32d2fab3-e4a8-42c2-923b-4bf4fd13e6ee_M7%f%XTQ-FN8%f%P6-TT%f%KYV-9D4C%f%C-J4%f%62D_125_EnterpriseS_RS5,VB,Ge |
3599 | 7103a333-b8c8-49cc-93ce-d37c09687f92_92N%f%FX-8D%f%JQP-P6B%f%BQ-TH%f%F9C-7C%f%G2H_126_EnterpriseSN_RS5,VB,Ge | 3738 | 2d5a5a60-3040-48bf-beb0-fcd770c20ce0_DC%f%PHK-NFM%f%TC-H8%f%8MJ-PFHP%f%Y-QJ%f%4BJ_125_EnterpriseS_RS1 |
3600 | 9f776d83-7156-45b2-8a5c-359b9c9f22a3_QFF%f%DN-GR%f%T3P-VKW%f%WX-X7%f%T3R-8B%f%639_126_EnterpriseSN_RS1 | 3739 | 7b51a46c-0c04-4e8f-9af4-8496cca90d5e_WN%f%MTR-4C8%f%8C-JK%f%8YV-HQ7T%f%2-76%f%DF9_125_EnterpriseS_TH1 |
3601 | 87b838b7-41b6-4590-8318-5797951d8529_2F7%f%7B-TN%f%FGY-69Q%f%QF-B8%f%YKP-D6%f%9TJ_126_EnterpriseSN_TH1 | 3740 | 7103a333-b8c8-49cc-93ce-d37c09687f92_92%f%NFX-8DJ%f%QP-P6%f%BBQ-THF9%f%C-7C%f%G2H_126_EnterpriseSN_RS5,VB,Ge |
3602 | 39e69c41-42b4-4a0a-abad-8e3c10a797cc_QFN%f%D9-D3%f%Y9C-J3K%f%KY-6R%f%PVP-2D%f%PYV_145_ServerDatacenterACor_FE | 3741 | 9f776d83-7156-45b2-8a5c-359b9c9f22a3_QF%f%FDN-GRT%f%3P-VK%f%WWX-X7T3%f%R-8B%f%639_126_EnterpriseSN_RS1 |
3603 | 90c362e5-0da1-4bfd-b53b-b87d309ade43_6NM%f%RW-2C%f%8FM-D24%f%W7-TQ%f%WMY-CW%f%H2D_145_ServerDatacenterACor_RS5 | 3742 | 87b838b7-41b6-4590-8318-5797951d8529_2F%f%77B-TNF%f%GY-69%f%QQF-B8YK%f%P-D6%f%9TJ_126_EnterpriseSN_TH1 |
3604 | e49c08e7-da82-42f8-bde2-b570fbcae76c_2HX%f%DN-KR%f%XHB-GPY%f%C7-YC%f%KFJ-7F%f%VDG_145_ServerDatacenterACor_RS3 | 3743 | 39e69c41-42b4-4a0a-abad-8e3c10a797cc_QF%f%ND9-D3Y%f%9C-J3%f%KKY-6RPV%f%P-2D%f%PYV_145_ServerDatacenterACor_FE |
3605 | f5e9429c-f50b-4b98-b15c-ef92eb5cff39_67K%f%N8-4F%f%YJW-248%f%7Q-MQ%f%2J7-4C%f%4RG_146_ServerStandardACor_FE | 3744 | 90c362e5-0da1-4bfd-b53b-b87d309ade43_6N%f%MRW-2C8%f%FM-D2%f%4W7-TQWM%f%Y-CW%f%H2D_145_ServerDatacenterACor_RS5 |
3606 | 73e3957c-fc0c-400d-9184-5f7b6f2eb409_N2K%f%JX-J9%f%4YW-TQV%f%FB-DG%f%9YT-72%f%4CC_146_ServerStandardACor_RS5 | 3745 | e49c08e7-da82-42f8-bde2-b570fbcae76c_2H%f%XDN-KRX%f%HB-GP%f%YC7-YCKF%f%J-7F%f%VDG_145_ServerDatacenterACor_RS3 |
3607 | 61c5ef22-f14f-4553-a824-c4b31e84b100_PTX%f%N8-JF%f%HJM-4WC%f%78-MP%f%CBR-9W%f%4KR_146_ServerStandardACor_RS3 | 3746 | f5e9429c-f50b-4b98-b15c-ef92eb5cff39_67%f%KN8-4FY%f%JW-24%f%87Q-MQ2J%f%7-4C%f%4RG_146_ServerStandardACor_FE |
3608 | 82bbc092-bc50-4e16-8e18-b74fc486aec3_NRG%f%8B-VK%f%K3Q-CXV%f%CJ-9G%f%2XF-6Q%f%84J_161_ProfessionalWorkstation | 3747 | 73e3957c-fc0c-400d-9184-5f7b6f2eb409_N2%f%KJX-J94%f%YW-TQ%f%VFB-DG9Y%f%T-72%f%4CC_146_ServerStandardACor_RS5 |
3609 | 4b1571d3-bafb-4b40-8087-a961be2caf65_9FN%f%HH-K3%f%HBT-3W4%f%TD-63%f%83H-6X%f%YWF_162_ProfessionalWorkstationN | 3748 | 61c5ef22-f14f-4553-a824-c4b31e84b100_PT%f%XN8-JFH%f%JM-4W%f%C78-MPCB%f%R-9W%f%4KR_146_ServerStandardACor_RS3 |
3610 | 3f1afc82-f8ac-4f6c-8005-1d233e606eee_6TP%f%4R-GN%f%PTD-KYY%f%HQ-7B%f%7DP-J4%f%47Y_164_ProfessionalEducation | 3749 | 82bbc092-bc50-4e16-8e18-b74fc486aec3_NR%f%G8B-VKK%f%3Q-CX%f%VCJ-9G2X%f%F-6Q%f%84J_161_ProfessionalWorkstation |
3611 | 5300b18c-2e33-4dc2-8291-47ffcec746dd_YVW%f%GF-BX%f%NMC-HTQ%f%YQ-CP%f%Q99-66%f%QFC_165_ProfessionalEducationN | 3750 | 4b1571d3-bafb-4b40-8087-a961be2caf65_9F%f%NHH-K3H%f%BT-3W%f%4TD-6383%f%H-6X%f%YWF_162_ProfessionalWorkstationN |
3612 | 8c8f0ad3-9a43-4e05-b840-93b8d1475cbc_6N3%f%79-GG%f%TMK-23C%f%6M-XV%f%VTC-CK%f%FRQ_168_ServerAzureCor_FE | 3751 | 3f1afc82-f8ac-4f6c-8005-1d233e606eee_6T%f%P4R-GNP%f%TD-KY%f%YHQ-7B7D%f%P-J4%f%47Y_164_ProfessionalEducation |
3613 | a99cc1f0-7719-4306-9645-294102fbff95_FDN%f%H6-VW%f%9RW-BXP%f%J7-4X%f%TYG-23%f%9TB_168_ServerAzureCor_RS5 | 3752 | 5300b18c-2e33-4dc2-8291-47ffcec746dd_YV%f%WGF-BXN%f%MC-HT%f%QYQ-CPQ9%f%9-66%f%QFC_165_ProfessionalEducationN |
3614 | 3dbf341b-5f6c-4fa7-b936-699dce9e263f_VP3%f%4G-4N%f%PPG-79J%f%TQ-86%f%4T4-R3%f%MQX_168_ServerAzureCor_RS1 | 3753 | 45b5aff2-60a0-42f2-bc4b-ec6e5f7b527e_QN%f%7G3-4RM%f%92-MT%f%6QR-PR96%f%6-FV%f%YV7_168_ServerAzureCor_Ge |
3615 | e0b2d383-d112-413f-8a80-97f373a5820c_YYV%f%X9-NT%f%FWV-6MD%f%M3-9P%f%T4T-4M%f%68B_171_EnterpriseG | 3754 | 8c8f0ad3-9a43-4e05-b840-93b8d1475cbc_6N%f%379-GGT%f%MK-23%f%C6M-XVVT%f%C-CK%f%FRQ_168_ServerAzureCor_FE |
3616 | e38454fb-41a4-4f59-a5dc-25080e354730_44R%f%PN-FT%f%Y23-9VT%f%TB-MP%f%9BX-T8%f%4FV_172_EnterpriseGN | 3755 | a99cc1f0-7719-4306-9645-294102fbff95_FD%f%NH6-VW9%f%RW-BX%f%PJ7-4XTY%f%G-23%f%9TB_168_ServerAzureCor_RS5 |
3617 | ec868e65-fadf-4759-b23e-93fe37f2cc29_CPW%f%HC-NT%f%2C7-VYW%f%78-DH%f%DB2-PG%f%3GK_175_ServerRdsh_RS5 | 3756 | 3dbf341b-5f6c-4fa7-b936-699dce9e263f_VP%f%34G-4NP%f%PG-79%f%JTQ-864T%f%4-R3%f%MQX_168_ServerAzureCor_RS1 |
3618 | e4db50ea-bda1-4566-b047-0ca50abc6f07_7NB%f%T4-WG%f%BQX-MP4%f%H7-QX%f%FF8-YP%f%3KX_175_ServerRdsh_RS3 | 3757 | e0b2d383-d112-413f-8a80-97f373a5820c_YY%f%VX9-NTF%f%WV-6M%f%DM3-9PT4%f%T-4M%f%68B_171_EnterpriseG |
3619 | 0df4f814-3f57-4b8b-9a9d-fddadcd69fac_NBT%f%WJ-3D%f%R69-3C4%f%V8-C2%f%6MC-GQ%f%9M6_183_CloudE | 3758 | e38454fb-41a4-4f59-a5dc-25080e354730_44%f%RPN-FTY%f%23-9V%f%TTB-MP9B%f%X-T8%f%4FV_172_EnterpriseGN |
3620 | 59eb965c-9150-42b7-a0ec-22151b9897c5_KBN%f%8V-HF%f%GQ4-MGX%f%VD-34%f%7P6-PD%f%QGT_191_IoTEnterpriseS_VB,NI | 3759 | ec868e65-fadf-4759-b23e-93fe37f2cc29_CP%f%WHC-NT2%f%C7-VY%f%W78-DHDB%f%2-PG%f%3GK_175_ServerRdsh_RS5 |
3621 | d30136fc-cb4b-416e-a23d-87207abc44a9_6XN%f%7V-PC%f%BDC-BDB%f%RH-8D%f%QY7-G6%f%R44_202_CloudEditionN | 3760 | e4db50ea-bda1-4566-b047-0ca50abc6f07_7N%f%BT4-WGB%f%QX-MP%f%4H7-QXFF%f%8-YP%f%3KX_175_ServerRdsh_RS3 |
3622 | ca7df2e3-5ea0-47b8-9ac1-b1be4d8edd69_37D%f%7F-N4%f%9CB-WQR%f%8W-TB%f%J73-FM%f%8RX_203_CloudEdition | 3761 | 0df4f814-3f57-4b8b-9a9d-fddadcd69fac_NB%f%TWJ-3DR%f%69-3C%f%4V8-C26M%f%C-GQ%f%9M6_183_CloudE |
3623 | 19b5e0fb-4431-46bc-bac1-2f1873e4ae73_NTB%f%V8-9K%f%7Q8-V27%f%C6-M2%f%BTV-KH%f%MXV_407_ServerTurbine | 3762 | 59eb965c-9150-42b7-a0ec-22151b9897c5_KB%f%N8V-HFG%f%Q4-MG%f%XVD-347P%f%6-PD%f%QGT_191_IoTEnterpriseS_VB,NI |
3763 | d30136fc-cb4b-416e-a23d-87207abc44a9_6X%f%N7V-PCB%f%DC-BD%f%BRH-8DQY%f%7-G6%f%R44_202_CloudEditionN | ||
3764 | ca7df2e3-5ea0-47b8-9ac1-b1be4d8edd69_37%f%D7F-N49%f%CB-WQ%f%R8W-TBJ7%f%3-FM%f%8RX_203_CloudEdition | ||
3765 | c2e946d1-cfa2-4523-8c87-30bc696ee584_NQ%f%8HH-FTD%f%TM-6V%f%GY7-TQ3D%f%V-XF%f%BV2_407_ServerTurbine_Ge | ||
3766 | 19b5e0fb-4431-46bc-bac1-2f1873e4ae73_NT%f%BV8-9K7%f%Q8-V2%f%7C6-M2BT%f%V-KH%f%MXV_407_ServerTurbine_RS5 | ||
3624 | ) do ( | 3767 | ) do ( |
3625 | for /f "tokens=1-5 delims=_" %%A in ("%%#") do if %osSKU%==%%C ( | 3768 | for /f "tokens=1-5 delims=_" %%A in ("%%#") do if %osSKU%==%%C ( |
3769 | set skufound=1 | ||
3626 | if %1==getkey if not defined key echo "!applist!" | find /i "%%A" %nul1% && set key=%%B | 3770 | if %1==getkey if not defined key echo "!applist!" | find /i "%%A" %nul1% && set key=%%B |
3627 | ) | 3771 | ) |
3628 | ) | 3772 | ) |
@@ -3648,6 +3792,7 @@ if %_NoEditionChange%==1 exit /b | |||
3648 | 3792 | ||
3649 | for %%# in ( | 3793 | for %%# in ( |
3650 | 188_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 | 3794 | 188_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 |
3795 | 206_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 | ||
3651 | 191_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 | 3796 | 191_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 |
3652 | 205_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 | 3797 | 205_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 |
3653 | 138_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 | 3798 | 138_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 |
@@ -8329,7 +8474,7 @@ if defined DiscoveredKeyManagementServiceMachineIpAddress echo. KMS machine I | |||
8329 | echo. KMS machine extended PID: %KeyManagementServiceProductKeyID% | 8474 | echo. KMS machine extended PID: %KeyManagementServiceProductKeyID% |
8330 | echo. Activation interval: %VLActivationInterval% minutes | 8475 | echo. Activation interval: %VLActivationInterval% minutes |
8331 | echo. Renewal interval: %VLRenewalInterval% minutes | 8476 | echo. Renewal interval: %VLRenewalInterval% minutes |
8332 | echo. K.M.S host caching: %KeyManagementServiceHostCaching% | 8477 | echo. K.M.S. host caching: %KeyManagementServiceHostCaching% |
8333 | if defined KeyManagementServiceLookupDomain echo. KMS SRV record lookup domain: %KeyManagementServiceLookupDomain% | 8478 | if defined KeyManagementServiceLookupDomain echo. KMS SRV record lookup domain: %KeyManagementServiceLookupDomain% |
8334 | if defined ExpireMsg echo.&echo. %ExpireMsg% | 8479 | if defined ExpireMsg echo.&echo. %ExpireMsg% |
8335 | exit /b | 8480 | exit /b |
@@ -8534,6 +8679,8 @@ PrintLicensesInformation -Mode "Device" | |||
8534 | @setlocal DisableDelayedExpansion | 8679 | @setlocal DisableDelayedExpansion |
8535 | @echo off | 8680 | @echo off |
8536 | 8681 | ||
8682 | ::======================================================================================================================================== | ||
8683 | |||
8537 | cls | 8684 | cls |
8538 | color 07 | 8685 | color 07 |
8539 | title Troubleshoot %masver% | 8686 | title Troubleshoot %masver% |
@@ -8684,7 +8831,7 @@ if %errorlevel%==1 goto at_menu | |||
8684 | 8831 | ||
8685 | cls | 8832 | cls |
8686 | mode 110, 30 | 8833 | mode 110, 30 |
8687 | call :_stopservice TrustedInstaller | 8834 | %psc% Stop-Service TrustedInstaller -force %nul% |
8688 | 8835 | ||
8689 | set _time= | 8836 | set _time= |
8690 | for /f %%a in ('%psc% "Get-Date -format HH_mm_ss"') do set _time=%%a | 8837 | for /f %%a in ('%psc% "Get-Date -format HH_mm_ss"') do set _time=%%a |
@@ -8693,7 +8840,7 @@ echo Applying the command, | |||
8693 | echo dism /english /online /cleanup-image /restorehealth | 8840 | echo dism /english /online /cleanup-image /restorehealth |
8694 | dism /english /online /cleanup-image /restorehealth | 8841 | dism /english /online /cleanup-image /restorehealth |
8695 | 8842 | ||
8696 | call :_stopservice TrustedInstaller | 8843 | %psc% Stop-Service TrustedInstaller -force %nul% |
8697 | 8844 | ||
8698 | if not exist "!desktop!\AT_Logs\" md "!desktop!\AT_Logs\" %nul% | 8845 | if not exist "!desktop!\AT_Logs\" md "!desktop!\AT_Logs\" %nul% |
8699 | 8846 | ||
@@ -8736,7 +8883,7 @@ choice /C:09 /N /M "> [9] Continue [0] Go back : " | |||
8736 | if %errorlevel%==1 goto at_menu | 8883 | if %errorlevel%==1 goto at_menu |
8737 | 8884 | ||
8738 | cls | 8885 | cls |
8739 | call :_stopservice TrustedInstaller | 8886 | %psc% Stop-Service TrustedInstaller -force %nul% |
8740 | 8887 | ||
8741 | set _time= | 8888 | set _time= |
8742 | for /f %%a in ('%psc% "Get-Date -format HH_mm_ss"') do set _time=%%a | 8889 | for /f %%a in ('%psc% "Get-Date -format HH_mm_ss"') do set _time=%%a |
@@ -8745,7 +8892,7 @@ echo Applying the command, | |||
8745 | echo sfc /scannow | 8892 | echo sfc /scannow |
8746 | sfc /scannow | 8893 | sfc /scannow |
8747 | 8894 | ||
8748 | call :_stopservice TrustedInstaller | 8895 | %psc% Stop-Service TrustedInstaller -force %nul% |
8749 | 8896 | ||
8750 | if not exist "!desktop!\AT_Logs\" md "!desktop!\AT_Logs\" %nul% | 8897 | if not exist "!desktop!\AT_Logs\" md "!desktop!\AT_Logs\" %nul% |
8751 | 8898 | ||
@@ -8816,7 +8963,7 @@ goto :cleanvnext | |||
8816 | ) | 8963 | ) |
8817 | 8964 | ||
8818 | echo Stopping ClipSVC service... | 8965 | echo Stopping ClipSVC service... |
8819 | call :_stopservice ClipSVC | 8966 | %psc% Stop-Service ClipSVC -force %nul% |
8820 | timeout /t 2 %nul% | 8967 | timeout /t 2 %nul% |
8821 | 8968 | ||
8822 | echo: | 8969 | echo: |
@@ -8866,7 +9013,7 @@ call :_color %Red% "[Failed]" | |||
8866 | echo [Successful] | 9013 | echo [Successful] |
8867 | ) | 9014 | ) |
8868 | 9015 | ||
8869 | call :_stopservice ClipSVC | 9016 | %psc% Stop-Service ClipSVC -force %nul% |
8870 | 9017 | ||
8871 | :: Rebuild ClipSVC folder to fix permission issues | 9018 | :: Rebuild ClipSVC folder to fix permission issues |
8872 | 9019 | ||
@@ -8883,7 +9030,7 @@ echo [Successful] | |||
8883 | 9030 | ||
8884 | echo: | 9031 | echo: |
8885 | echo Rebuilding Folder %ProgramData%\Microsoft\Windows\ClipSVC\ | 9032 | echo Rebuilding Folder %ProgramData%\Microsoft\Windows\ClipSVC\ |
8886 | net start ClipSVC /y %nul% | 9033 | %psc% Start-Service ClipSVC %nul% |
8887 | timeout /t 3 %nul% | 9034 | timeout /t 3 %nul% |
8888 | if not exist "%ProgramData%\Microsoft\Windows\ClipSVC\" timeout /t 5 %nul% | 9035 | if not exist "%ProgramData%\Microsoft\Windows\ClipSVC\" timeout /t 5 %nul% |
8889 | if not exist "%ProgramData%\Microsoft\Windows\ClipSVC\" ( | 9036 | if not exist "%ProgramData%\Microsoft\Windows\ClipSVC\" ( |
@@ -8895,7 +9042,7 @@ echo [Successful] | |||
8895 | 9042 | ||
8896 | echo: | 9043 | echo: |
8897 | echo Restarting [wlidsvc LicenseManager] services... | 9044 | echo Restarting [wlidsvc LicenseManager] services... |
8898 | for %%# in (wlidsvc LicenseManager) do (net stop %%# /y %nul% & net start %%# /y %nul%) | 9045 | for %%# in (wlidsvc LicenseManager) do (%psc% Restart-Service %%# %nul%) |
8899 | 9046 | ||
8900 | ::======================================================================================================================================== | 9047 | ::======================================================================================================================================== |
8901 | 9048 | ||
@@ -8941,7 +9088,7 @@ echo Not Found - !_Local!\Microsoft\Office\Licenses\ | |||
8941 | 9088 | ||
8942 | 9089 | ||
8943 | echo: | 9090 | echo: |
8944 | for /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")) | 9091 | for /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")) |
8945 | 9092 | ||
8946 | set regfound= | 9093 | set regfound= |
8947 | for %%# in (HKCU !_sid!) do ( | 9094 | for %%# in (HKCU !_sid!) do ( |
@@ -8980,19 +9127,13 @@ call :_color %Red% "tokens.dat file not found." | |||
8980 | echo tokens.dat file: [%token%] | 9127 | echo tokens.dat file: [%token%] |
8981 | ) | 9128 | ) |
8982 | 9129 | ||
8983 | if %winbuild% GEQ 14393 ( | ||
8984 | set wpaerror= | ||
8985 | set /a count=0 | ||
8986 | for /f %%a in ('reg query "HKLM\SYSTEM\WPA" %nul6%') do set /a count+=1 | ||
8987 | for /L %%# in (1,1,!count!) do ( | ||
8988 | reg query "HKLM\SYSTEM\WPA\8DEC0AF1-0341-4b93-85CD-72606C2DF94C-7P-%%#" /ve /t REG_BINARY %nul% || set wpaerror=1 | ||
8989 | ) | ||
8990 | |||
8991 | if defined wpaerror ( | ||
8992 | echo: | 9130 | echo: |
8993 | echo Checking WPA Registry Keys... | 9131 | set wpainfo= |
8994 | call :_color %Red% "[Error Found] [Registry Count - !count!]" | 9132 | for /f "delims=" %%a in ('%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':wpatest\:.*';iex ($f[1]);" %nul6%') do (set wpainfo=%%a) |
8995 | ) | 9133 | echo "%wpainfo%" | find /i "Error Found" %nul% && ( |
9134 | call :_color %Red% "WPA Registry Error: %wpainfo%" | ||
9135 | ) || ( | ||
9136 | echo WPA Registry Count: %wpainfo% | ||
8996 | ) | 9137 | ) |
8997 | 9138 | ||
8998 | set tokenstore= | 9139 | set tokenstore= |
@@ -9040,7 +9181,7 @@ echo [No Error Found] | |||
9040 | 9181 | ||
9041 | echo: | 9182 | echo: |
9042 | echo Stopping sppsvc service... | 9183 | echo Stopping sppsvc service... |
9043 | call :_stopservice sppsvc | 9184 | %psc% Stop-Service sppsvc -force %nul% |
9044 | 9185 | ||
9045 | echo: | 9186 | echo: |
9046 | call :scandat delete | 9187 | call :scandat delete |
@@ -9097,7 +9238,7 @@ echo tokens.dat file: [%token%] | |||
9097 | 9238 | ||
9098 | echo: | 9239 | echo: |
9099 | echo Stopping osppsvc service... | 9240 | echo Stopping osppsvc service... |
9100 | call :_stopservice osppsvc | 9241 | %psc% Stop-Service osppsvc -force %nul% |
9101 | 9242 | ||
9102 | echo: | 9243 | echo: |
9103 | call :scandatospp delete | 9244 | call :scandatospp delete |
@@ -9111,11 +9252,11 @@ echo: | |||
9111 | 9252 | ||
9112 | echo: | 9253 | echo: |
9113 | echo Starting osppsvc service to generate tokens.dat | 9254 | echo Starting osppsvc service to generate tokens.dat |
9114 | call :_startservice osppsvc | 9255 | %psc% Start-Service osppsvc %nul% |
9115 | call :scandatospp check | 9256 | call :scandatospp check |
9116 | if not defined token ( | 9257 | if not defined token ( |
9117 | call :_stopservice osppsvc | 9258 | %psc% Stop-Service osppsvc -force %nul% |
9118 | call :_startservice osppsvc | 9259 | %psc% Start-Service osppsvc %nul% |
9119 | timeout /t 3 %nul% | 9260 | timeout /t 3 %nul% |
9120 | ) | 9261 | ) |
9121 | 9262 | ||
@@ -9162,18 +9303,20 @@ for %%A in (msi14 msi15 msi16 c2r14 c2r15 c2r16) do (set %%A_%%#=&set %%Arepair% | |||
9162 | set _68=HKLM\SOFTWARE\Microsoft\Office | 9303 | set _68=HKLM\SOFTWARE\Microsoft\Office |
9163 | set _86=HKLM\SOFTWARE\Wow6432Node\Microsoft\Office | 9304 | set _86=HKLM\SOFTWARE\Wow6432Node\Microsoft\Office |
9164 | 9305 | ||
9165 | %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") | 9306 | reg query %_68%\14.0\CVH /f Click2run /k %nul% && (set "c2r14_68=Office 14.0 C2R x86/x64" & set "c2r14repair68=") |
9166 | %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") | 9307 | reg query %_86%\14.0\CVH /f Click2run /k %nul% && (set "c2r14_86=Office 14.0 C2R x86" & set "c2r14repair86=") |
9167 | %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") | 9308 | |
9168 | %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") | 9309 | for /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") |
9169 | %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") | 9310 | for /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") |
9170 | %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") | 9311 | for /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") |
9171 | %nul% reg query %_68%\14.0\CVH /f Click2run /k && (set "c2r14_68=Office 14.0 C2R x86/x64" & set "c2r14repair68=") | 9312 | for /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") |
9172 | %nul% reg query %_86%\14.0\CVH /f Click2run /k && (set "c2r14_86=Office 14.0 C2R x86" & set "c2r14repair86=") | 9313 | for /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") |
9173 | %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") | 9314 | for /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") |
9174 | %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") | 9315 | |
9175 | %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") | 9316 | for /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") |
9176 | %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") | 9317 | for /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") |
9318 | for /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") | ||
9319 | for /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") | ||
9177 | 9320 | ||
9178 | set uwp16= | 9321 | set uwp16= |
9179 | if %winbuild% GEQ 10240 ( | 9322 | if %winbuild% GEQ 10240 ( |
@@ -9299,7 +9442,7 @@ call :checkwmi | |||
9299 | :: Apply basic fix first and check | 9442 | :: Apply basic fix first and check |
9300 | 9443 | ||
9301 | if defined error ( | 9444 | if defined error ( |
9302 | call :_stopservice Winmgmt | 9445 | %psc% Stop-Service Winmgmt -force %nul% |
9303 | winmgmt /salvagerepository %nul% | 9446 | winmgmt /salvagerepository %nul% |
9304 | call :checkwmi | 9447 | call :checkwmi |
9305 | ) | 9448 | ) |
@@ -9337,9 +9480,9 @@ goto :at_back | |||
9337 | 9480 | ||
9338 | echo: | 9481 | echo: |
9339 | echo Stopping Winmgmt service | 9482 | echo Stopping Winmgmt service |
9340 | call :_stopservice Winmgmt | 9483 | %psc% Stop-Service Winmgmt -force %nul% |
9341 | call :_stopservice Winmgmt | 9484 | %psc% Stop-Service Winmgmt -force %nul% |
9342 | call :_stopservice Winmgmt | 9485 | %psc% Stop-Service Winmgmt -force %nul% |
9343 | sc query Winmgmt | find /i "STOPPED" %nul% && ( | 9486 | sc query Winmgmt | find /i "STOPPED" %nul% && ( |
9344 | echo [Successful] | 9487 | echo [Successful] |
9345 | ) || ( | 9488 | ) || ( |
@@ -9403,7 +9546,7 @@ goto :at_back | |||
9403 | 9546 | ||
9404 | :: https://eskonr.com/2012/01/how-to-fix-wmi-issues-automatically/ | 9547 | :: https://eskonr.com/2012/01/how-to-fix-wmi-issues-automatically/ |
9405 | 9548 | ||
9406 | call :_stopservice Winmgmt | 9549 | %psc% Stop-Service Winmgmt -force %nul% |
9407 | cd /d %systemroot%\system32\wbem\ | 9550 | cd /d %systemroot%\system32\wbem\ |
9408 | regsvr32 /s %systemroot%\system32\scecli.dll | 9551 | regsvr32 /s %systemroot%\system32\scecli.dll |
9409 | regsvr32 /s %systemroot%\system32\userenv.dll | 9552 | regsvr32 /s %systemroot%\system32\userenv.dll |
@@ -9489,24 +9632,6 @@ exit /b | |||
9489 | 9632 | ||
9490 | ::======================================================================================================================================== | 9633 | ::======================================================================================================================================== |
9491 | 9634 | ||
9492 | :_stopservice | ||
9493 | |||
9494 | for %%# in (%1) do ( | ||
9495 | sc query %%# | find /i "STOPPED" %nul% || net stop %%# /y %nul% | ||
9496 | sc query %%# | find /i "STOPPED" %nul% || sc stop %%# %nul% | ||
9497 | ) | ||
9498 | exit /b | ||
9499 | |||
9500 | :_startservice | ||
9501 | |||
9502 | for %%# in (%1) do ( | ||
9503 | sc query %%# | find /i "RUNNING" %nul% || net start %%# /y %nul% | ||
9504 | sc query %%# | find /i "RUNNING" %nul% || sc start %%# %nul% | ||
9505 | ) | ||
9506 | exit /b | ||
9507 | |||
9508 | ::======================================================================================================================================== | ||
9509 | |||
9510 | :checkperms | 9635 | :checkperms |
9511 | 9636 | ||
9512 | set permerror= | 9637 | set permerror= |
@@ -9727,24 +9852,7 @@ goto ced_done | |||
9727 | 9852 | ||
9728 | ::======================================================================================================================================== | 9853 | ::======================================================================================================================================== |
9729 | 9854 | ||
9730 | :: Check SKU value | 9855 | call :dk_checksku |
9731 | |||
9732 | set osSKU= | ||
9733 | set slcSKU= | ||
9734 | set wmiSKU= | ||
9735 | |||
9736 | if %winbuild% GEQ 14393 (set info=Kernel-BrandingInfo) else (set info=Kernel-ProductInfo) | ||
9737 | set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('SLGetWindowsInformationDWORD', 'slc.dll', 'Public, Static', 1, [int], @([String], [int].MakeByRefType()), 1, 3); | ||
9738 | set d1=%d1% $Sku = 0; [void]$TypeBuilder.CreateType()::SLGetWindowsInformationDWORD('%info%', [ref]$Sku); $Sku | ||
9739 | for /f "delims=" %%s in ('"%psc% %d1%"') do if not errorlevel 1 (set slcSKU=%%s) | ||
9740 | if "%slcSKU%"=="0" set slcSKU= | ||
9741 | if 1%slcSKU% NEQ +1%slcSKU% set slcSKU= | ||
9742 | |||
9743 | if %_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" | ||
9744 | if %_wmic% EQU 0 for /f "tokens=1" %%a in ('%psc% "([WMI]'Win32_OperatingSystem=@').OperatingSystemSKU" %nul6%') do if not errorlevel 1 set "wmiSKU=%%a" | ||
9745 | |||
9746 | set osSKU=%slcSKU% | ||
9747 | if not defined osSKU set osSKU=%wmiSKU% | ||
9748 | 9856 | ||
9749 | if not defined osSKU ( | 9857 | if not defined osSKU ( |
9750 | %eline% | 9858 | %eline% |
@@ -9769,7 +9877,7 @@ if not defined osedition ( | |||
9769 | for /f "skip=2 tokens=3" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul6%') do set "osedition=%%a" | 9877 | for /f "skip=2 tokens=3" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul6%') do set "osedition=%%a" |
9770 | ) | 9878 | ) |
9771 | 9879 | ||
9772 | :: Workaround for a Windows bug in builds between 1607 and 1709 where ProfessionalEducation is shown as Professional | 9880 | :: Workaround for an issue in builds between 1607 and 1709 where ProfessionalEducation is shown as Professional |
9773 | 9881 | ||
9774 | if %osSKU%==164 set osedition=ProfessionalEducation | 9882 | if %osSKU%==164 set osedition=ProfessionalEducation |
9775 | if %osSKU%==165 set osedition=ProfessionalEducationN | 9883 | if %osSKU%==165 set osedition=ProfessionalEducationN |
@@ -9799,7 +9907,10 @@ for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT | |||
9799 | 9907 | ||
9800 | %psc% $ExecutionContext.SessionState.LanguageMode %nul2% | find /i "Full" %nul1% || ( | 9908 | %psc% $ExecutionContext.SessionState.LanguageMode %nul2% | find /i "Full" %nul1% || ( |
9801 | %eline% | 9909 | %eline% |
9802 | echo PowerShell is not responding properly. Aborting... | 9910 | %psc% $ExecutionContext.SessionState.LanguageMode |
9911 | echo: | ||
9912 | echo PowerShell is not working. Aborting... | ||
9913 | echo If you have applied restrictions on Powershell then undo those changes. | ||
9803 | echo: | 9914 | echo: |
9804 | echo Check this page for help. %mas%troubleshoot | 9915 | echo Check this page for help. %mas%troubleshoot |
9805 | goto ced_done | 9916 | goto ced_done |
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% | |||
257 | echo ________________________________________________ | 257 | echo ________________________________________________ |
258 | echo: | 258 | echo: |
259 | if not %_unattended%==1 ( | 259 | if not %_unattended%==1 ( |
260 | echo [1] Download Latest MAS | 260 | echo [1] Get Latest MAS |
261 | echo [0] Continue Anyway | 261 | echo [0] Continue Anyway |
262 | echo: | 262 | echo: |
263 | call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" | 263 | call :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 | ||
272 | cls | 272 | cls |
273 | mode 108, 34 | 273 | mode 110, 34 |
274 | if exist "%Systemdrive%\Windows\System32\spp\store_test\" mode 134, 34 | ||
274 | title HWID Activation %masver% | 275 | title 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 | 277 | echo: |
278 | echo Initializing... | ||
277 | 279 | ||
278 | sc 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 | ||
280 | echo: | 285 | echo: |
281 | echo Initializing... | 286 | echo PowerShell is not working. Aborting... |
287 | echo If you have applied restrictions on Powershell then undo those changes. | ||
288 | echo: | ||
289 | echo Check this page for help. %mas%troubleshoot | ||
290 | goto dk_done | ||
291 | ) | ||
292 | |||
293 | ::======================================================================================================================================== | ||
294 | |||
282 | call :dk_product | 295 | call :dk_product |
283 | call :dk_ckeckwmic | 296 | call :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 | 347 | call :dk_checksku |
335 | |||
336 | set osSKU= | ||
337 | set slcSKU= | ||
338 | set wmiSKU= | ||
339 | set regSKU= | ||
340 | |||
341 | if %winbuild% GEQ 14393 (set info=Kernel-BrandingInfo) else (set info=Kernel-ProductInfo) | ||
342 | set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('SLGetWindowsInformationDWORD', 'slc.dll', 'Public, Static', 1, [int], @([String], [int].MakeByRefType()), 1, 3); | ||
343 | set d1=%d1% $Sku = 0; [void]$TypeBuilder.CreateType()::SLGetWindowsInformationDWORD('%info%', [ref]$Sku); $Sku | ||
344 | for /f "delims=" %%s in ('"%psc% %d1%"') do if not errorlevel 1 (set slcSKU=%%s) | ||
345 | if "%slcSKU%"=="0" set slcSKU= | ||
346 | if 1%slcSKU% NEQ +1%slcSKU% set slcSKU= | ||
347 | |||
348 | for /f "tokens=3 delims=." %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions" /v OSProductPfn %nul6%') do set "regSKU=%%a" | ||
349 | if %_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" | ||
350 | if %_wmic% EQU 0 for /f "tokens=1" %%a in ('%psc% "([WMI]'Win32_OperatingSystem=@').OperatingSystemSKU" %nul6%') do if not errorlevel 1 set "wmiSKU=%%a" | ||
351 | |||
352 | set osSKU=%slcSKU% | ||
353 | if not defined osSKU set osSKU=%wmiSKU% | ||
354 | if not defined osSKU set osSKU=%regSKU% | ||
355 | 348 | ||
356 | if not defined osSKU ( | 349 | if 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 | ||
379 | if not defined _int ( | 372 | if 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}" |
381 | if !errorlevel!==0 set _int=1 | 374 | if !errorlevel!==0 (set _int=1&set ping_f= But Ping Failed) |
382 | ) | 375 | ) |
383 | 376 | ||
384 | if defined _int ( | 377 | if defined _int ( |
385 | echo Checking Internet Connection [Connected] | 378 | echo Checking Internet Connection [Connected%ping_f%] |
386 | ) else ( | 379 | ) else ( |
387 | set error=1 | 380 | set error=1 |
388 | call :dk_color %Red% "Checking Internet Connection [Not Connected]" | 381 | call :dk_color %Red% "Checking Internet Connection [Not Connected]" |
@@ -407,7 +400,8 @@ echo Enabling Windows Script Host [Successful] | |||
407 | 400 | ||
408 | echo Initiating Diagnostic Tests... | 401 | echo Initiating Diagnostic Tests... |
409 | 402 | ||
410 | set "_serv=ClipSVC wlidsvc sppsvc KeyIso LicenseManager Winmgmt wuauserv" | 403 | set "_serv=ClipSVC wlidsvc sppsvc KeyIso LicenseManager Winmgmt DoSvc UsoSvc CryptSvc BITS TrustedInstaller wuauserv" |
404 | if %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 | ||
420 | call :dk_errorcheck | 420 | call :dk_errorcheck |
421 | 421 | ||
422 | :: Check Windows updates and store app blockers | 422 | :: Check Windows updates and store app blockers |
423 | 423 | ||
424 | set updatesblock= | 424 | set updatesblock= |
425 | echo: %serv_cor% %serv_ste% | findstr /i "wuauserv" %nul% && set updatesblock=1 | ||
426 | |||
427 | sc start UsoSvc %nul% | ||
428 | if %errorlevel% NEQ 1056 if %errorlevel% NEQ 0 set updatesblock=1 | ||
429 | |||
430 | if %winbuild% GEQ 17134 ( | ||
431 | sc start WaaSMedicSvc %nul% | ||
432 | if !errorlevel! NEQ 1056 if !errorlevel! NEQ 0 set updatesblock=1 | ||
433 | ) | ||
434 | |||
435 | reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer /v SettingsPageVisibility %nul2% | find /i "windowsupdate" %nul% && set updatesblock=1 | 425 | reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer /v SettingsPageVisibility %nul2% | find /i "windowsupdate" %nul% && set updatesblock=1 |
436 | reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdateSysprepInProgress %nul% && set updatesblock=1 | 426 | reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdateSysprepInProgress %nul% && set updatesblock=1 |
437 | reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate /s %nul2% | findstr /i "NoAutoUpdate DisableWindowsUpdateAccess" %nul% && set updatesblock=1 | 427 | reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate /s %nul2% | findstr /i "NoAutoUpdate DisableWindowsUpdateAccess" %nul% && set updatesblock=1 |
438 | 428 | ||
439 | if defined updatesblock ( | 429 | if defined updatesblock call :dk_color %Gray% "Checking Update Blocker In Registry [Found]" |
440 | call :dk_color %Gray% "Checking Windows Update Blockers [Found]" | 430 | |
441 | if defined applist echo: %serv_e% | find /i "wuauserv" %nul% && ( | 431 | if defined applist echo: %serv_e% | find /i "wuauserv" %nul% && ( |
442 | call :dk_color %Blue% "Windows Update is not working. Enable it incase if you have disabled it." | 432 | call :dk_color %Blue% "Windows Update is not working. Enable it incase if you have disabled it." |
443 | reg query HKLM\SYSTEM\CurrentControlSet\Services\wuauserv /v WubLock %nul% && call :dk_color %Blue% "Sordum Windows Update Blocker tool has been used to block updates." | 433 | reg 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 | ||
447 | reg query "HKLM\SOFTWARE\Policies\Microsoft\WindowsStore" /v DisableStoreApps %nul2% | find /i "0x1" %nul% && ( | 436 | reg query "HKLM\SOFTWARE\Policies\Microsoft\WindowsStore" /v DisableStoreApps %nul2% | find /i "0x1" %nul% && ( |
448 | call :dk_color %Gray% "Checking Store App Blocker [Found]" | 437 | call :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 | ||
455 | set key= | 444 | set key= |
456 | set altkey= | 445 | set altkey= |
446 | set skufound= | ||
457 | set changekey= | 447 | set changekey= |
458 | set altapplist= | 448 | set altapplist= |
459 | set altedition= | 449 | set altedition= |
@@ -477,7 +467,11 @@ call :dk_color %Red% "Checking Alternate Edition For HWID [%altedition% Acti | |||
477 | if not defined key ( | 467 | if not defined key ( |
478 | %eline% | 468 | %eline% |
479 | echo [%winos% ^| %winbuild% ^| SKU:%osSKU%] | 469 | echo [%winos% ^| %winbuild% ^| SKU:%osSKU%] |
470 | if not defined skufound ( | ||
480 | echo Unable to find this product in the supported product list. | 471 | echo Unable to find this product in the supported product list. |
472 | ) else ( | ||
473 | echo Required License files not found in %SystemRoot%\System32\spp\tokens\skus\ | ||
474 | ) | ||
481 | echo Make sure you are using updated version of the script. | 475 | echo Make sure you are using updated version of the script. |
482 | echo %mas% | 476 | echo %mas% |
483 | echo: | 477 | echo: |
@@ -569,8 +563,7 @@ echo Generating GenuineTicket.xml [Successful] | |||
569 | set "_xmlexist=if exist "%tdir%\GenuineTicket.xml"" | 563 | set "_xmlexist=if exist "%tdir%\GenuineTicket.xml"" |
570 | 564 | ||
571 | %_xmlexist% ( | 565 | %_xmlexist% ( |
572 | net stop ClipSVC /y %nul% | 566 | %psc% Restart-Service ClipSVC %nul% |
573 | net 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 | ||
676 | REM Refresh some services and license status | 669 | REM Refresh some services and license status |
677 | 670 | ||
678 | for %%# in (wlidsvc LicenseManager sppsvc) do (net stop %%# /y %nul% & net start %%# /y %nul%) | 671 | for %%# in (wlidsvc LicenseManager sppsvc) do (%psc% Restart-Service %%# %nul%) |
679 | call :dk_refresh | 672 | call :dk_refresh |
680 | call :dk_act | 673 | call :dk_act |
681 | call :dk_checkperm | 674 | call :dk_checkperm |
@@ -684,7 +677,7 @@ call :dk_checkperm | |||
684 | REM Check Internet related error codes | 677 | REM Check Internet related error codes |
685 | 678 | ||
686 | if not defined error if not defined _perm ( | 679 | if not defined error if not defined _perm ( |
687 | echo "%error_code%" | findstr /i "0x80072e 0x80072f" %nul% && ( | 680 | echo "%error_code%" | findstr /i "0x80072e 0x80072f 0x800704cf" %nul% && ( |
688 | set error=1 | 681 | set error=1 |
689 | echo: | 682 | echo: |
690 | call :dk_color %Red% "Checking Internet Issues [Found] %error_code%" | 683 | call :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 | |||
729 | set osSKU= | ||
730 | set slcSKU= | ||
731 | set wmiSKU= | ||
732 | set regSKU= | ||
733 | |||
734 | if %winbuild% GEQ 14393 (set info=Kernel-BrandingInfo) else (set info=Kernel-ProductInfo) | ||
735 | set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('SLGetWindowsInformationDWORD', 'slc.dll', 'Public, Static', 1, [int], @([String], [int].MakeByRefType()), 1, 3); | ||
736 | set d1=%d1% $Sku = 0; [void]$TypeBuilder.CreateType()::SLGetWindowsInformationDWORD('%info%', [ref]$Sku); $Sku | ||
737 | for /f "delims=" %%s in ('"%psc% %d1%"') do if not errorlevel 1 (set slcSKU=%%s) | ||
738 | if "%slcSKU%"=="0" set slcSKU= | ||
739 | if 1%slcSKU% NEQ +1%slcSKU% set slcSKU= | ||
740 | |||
741 | for /f "tokens=3 delims=." %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions" /v OSProductPfn %nul6%') do set "regSKU=%%a" | ||
742 | if %_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" | ||
743 | if %_wmic% EQU 0 for /f "tokens=1" %%a in ('%psc% "([WMI]'Win32_OperatingSystem=@').OperatingSystemSKU" %nul6%') do if not errorlevel 1 set "wmiSKU=%%a" | ||
744 | |||
745 | set osSKU=%slcSKU% | ||
746 | if not defined osSKU set osSKU=%wmiSKU% | ||
747 | if not defined osSKU set osSKU=%regSKU% | ||
748 | exit /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= | |||
838 | sc start %%# %nul% | 856 | sc start %%# %nul% |
839 | if !errorlevel! EQU 1060 set _corrupt=1 | 857 | if !errorlevel! EQU 1060 set _corrupt=1 |
840 | sc query %%# %nul% || set _corrupt=1 | 858 | sc query %%# %nul% || set _corrupt=1 |
841 | for %%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) | 859 | for %%G in (DependOnService Description DisplayName ErrorControl ImagePath ObjectName Start Type) do if not defined _corrupt ( |
860 | reg query HKLM\SYSTEM\CurrentControlSet\Services\%%# /v %%G %nul% || set _corrupt=1 | ||
861 | if /i %%#==TrustedInstaller if /i %%G==DependOnService set _corrupt= | ||
862 | ) | ||
863 | |||
842 | if defined _corrupt (if defined serv_cor (set "serv_cor=!serv_cor! %%#") else (set "serv_cor=%%#")) | 864 | if 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 | ||
865 | if defined serv_ste ( | 887 | if defined serv_ste ( |
866 | for %%# in (%serv_ste%) do ( | 888 | for %%# in (%serv_ste%) do ( |
867 | if /i %%#==ClipSVC (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "3" /f %nul% & sc config %%# start= demand %nul%) | 889 | if /i %%#==ClipSVC (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "3" /f %nul% & sc config %%# start= demand %nul%) |
868 | if /i %%#==wlidsvc sc config %%# start= demand %nul% | 890 | if /i %%#==wlidsvc sc config %%# start= demand %nul% |
869 | if /i %%#==sppsvc (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "2" /f %nul% & sc config %%# start= delayed-auto %nul%) | 891 | if /i %%#==sppsvc (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "2" /f %nul% & sc config %%# start= delayed-auto %nul%) |
870 | if /i %%#==KeyIso sc config %%# start= demand %nul% | 892 | if /i %%#==KeyIso sc config %%# start= demand %nul% |
871 | if /i %%#==LicenseManager sc config %%# start= demand %nul% | 893 | if /i %%#==LicenseManager sc config %%# start= demand %nul% |
872 | if /i %%#==Winmgmt sc config %%# start= auto %nul% | 894 | if /i %%#==Winmgmt sc config %%# start= auto %nul% |
873 | if /i %%#==wuauserv sc config %%# start= demand %nul% | 895 | if /i %%#==DoSvc sc config %%# start= delayed-auto %nul% |
896 | if /i %%#==UsoSvc sc config %%# start= delayed-auto %nul% | ||
897 | if /i %%#==CryptSvc sc config %%# start= auto %nul% | ||
898 | if /i %%#==BITS sc config %%# start= delayed-auto %nul% | ||
899 | if /i %%#==wuauserv sc config %%# start= demand %nul% | ||
900 | if /i %%#==WaaSMedicSvc sc config %%# start= demand %nul% | ||
874 | if !errorlevel!==0 ( | 901 | if !errorlevel!==0 ( |
875 | if defined serv_csts (set "serv_csts=!serv_csts! %%#") else (set "serv_csts=%%#") | 902 | if defined serv_csts (set "serv_csts=!serv_csts! %%#") else (set "serv_csts=%%#") |
876 | ) else ( | 903 | ) else ( |
@@ -895,9 +922,12 @@ set serv_e= | |||
895 | for %%# in (%_serv%) do ( | 922 | for %%# in (%_serv%) do ( |
896 | set errorcode= | 923 | set errorcode= |
897 | set checkerror= | 924 | set checkerror= |
898 | net start %%# /y %nul% | 925 | |
926 | sc query %%# | find /i "RUNNING" %nul% || ( | ||
927 | %psc% Start-Service %%# %nul% | ||
899 | set errorcode=!errorlevel! | 928 | set errorcode=!errorlevel! |
900 | sc query %%# | find /i "RUNNING" %nul% || set checkerror=1 | 929 | sc query %%# | find /i "RUNNING" %nul% || set checkerror=1 |
930 | ) | ||
901 | 931 | ||
902 | sc start %%# %nul% | 932 | sc start %%# %nul% |
903 | if !errorlevel! NEQ 1056 if !errorlevel! NEQ 0 (set errorcode=!errorlevel!&set checkerror=1) | 933 | if !errorlevel! NEQ 1056 if !errorlevel! NEQ 0 (set errorcode=!errorlevel!&set checkerror=1) |
@@ -908,7 +938,7 @@ if defined serv_e ( | |||
908 | set error=1 | 938 | set error=1 |
909 | call :dk_color %Red% "Starting Services [Failed] [%serv_e%]" | 939 | call :dk_color %Red% "Starting Services [Failed] [%serv_e%]" |
910 | echo %serv_e% | findstr /i "ClipSVC-1058 sppsvc-1058" %nul% && ( | 940 | echo %serv_e% | findstr /i "ClipSVC-1058 sppsvc-1058" %nul% && ( |
911 | call :dk_color %Blue% "Restart the system to fix disabled service error 1058." | 941 | call :dk_color %Blue% "Restart the system to fix this error." |
912 | set showfix=1 | 942 | set showfix=1 |
913 | ) | 943 | ) |
914 | ) | 944 | ) |
@@ -920,14 +950,18 @@ set showfix=1 | |||
920 | if defined safeboot_option ( | 950 | if defined safeboot_option ( |
921 | set error=1 | 951 | set error=1 |
922 | set showfix=1 | 952 | set showfix=1 |
923 | call :dk_color2 %Red% "Checking Boot Mode " %Blue% "[Safe mode found. Run in normal mode.]" | 953 | call :dk_color2 %Red% "Checking Boot Mode [%safeboot_option%] " %Blue% "[Safe mode found. Run in normal mode.]" |
924 | ) | 954 | ) |
925 | 955 | ||
926 | 956 | ||
927 | reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State" %nul2% | find /i "IMAGE_STATE_COMPLETE" %nul1% || ( | 957 | for /f "skip=2 tokens=2*" %%A in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State" /v ImageState') do (set imagestate=%%B) |
958 | if /i not "%imagestate%"=="IMAGE_STATE_COMPLETE" ( | ||
928 | set error=1 | 959 | set error=1 |
960 | call :dk_color %Red% "Checking Windows Setup State [%imagestate%]" | ||
961 | echo "%imagestate%" | find /i "RESEAL" %nul% && ( | ||
929 | set showfix=1 | 962 | set showfix=1 |
930 | call :dk_color2 %Red% "Checking Audit Mode " %Blue% "[IMAGE_STATE_COMPLETE status not found. Run in normal mode.]" | 963 | call :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% || ( | 975 | set wpainfo= |
976 | set wpaerror= | ||
977 | for /f "delims=" %%a in ('%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':wpatest\:.*';iex ($f[1]);" %nul6%') do (set wpainfo=%%a) | ||
978 | echo "%wpainfo%" | find /i "Error Found" %nul% && ( | ||
942 | set error=1 | 979 | set error=1 |
943 | call :dk_color %Red% "Checking Powershell [Not Responding]" | 980 | set wpaerror=1 |
981 | call :dk_color %Red% "Checking WPA Registry Error [%wpainfo%]" | ||
982 | ) || ( | ||
983 | echo Checking WPA Registry Count [%wpainfo%] | ||
944 | ) | 984 | ) |
945 | 985 | ||
946 | 986 | ||
947 | DISM /English /Online /Get-CurrentEdition %nul% | 987 | DISM /English /Online /Get-CurrentEdition %nul% |
948 | set dism_error=%errorlevel% | 988 | set dism_error=%errorlevel% |
949 | cmd /c exit /b %dism_error% | 989 | cmd /c exit /b %dism_error% |
950 | if %dism_error% NEQ 0 set "dism_error=[0x%=ExitCode%]" | 990 | if %dism_error% NEQ 0 set "dism_error=0x%=ExitCode%" |
951 | if %dism_error% NEQ 0 ( | 991 | if %dism_error% NEQ 0 ( |
952 | call :dk_color %Red% "Checking DISM [Not Responding] %dism_error%" | 992 | call :dk_color %Red% "Checking DISM [Not Responding] [%dism_error%]" |
953 | ) | 993 | ) |
954 | 994 | ||
955 | 995 | ||
956 | if not defined officeact if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" ( | 996 | if not defined officeact if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" ( |
957 | set error=1 | 997 | set error=1 |
998 | set showfix=1 | ||
958 | call :dk_color %Red% "Checking Eval Packages [Non-Eval Licenses are installed in Eval Windows]" | 999 | call :dk_color %Red% "Checking Eval Packages [Non-Eval Licenses are installed in Eval Windows]" |
959 | if /i %dism_error%==[0x800F0805] ( | ||
960 | for %%# in (4 125 126 188 191 205) do if "%osSKU%"=="%%#" ( | ||
961 | call :dk_color %Blue% "Evaluation Windows can not be activated and different License install may lead to errors." | 1000 | call :dk_color %Blue% "Evaluation Windows can not be activated and different License install may lead to errors." |
962 | call :dk_color %Blue% "It is recommended to install full version of %winos%." | 1001 | call :dk_color %Blue% "It is recommended to install full version of %winos%." |
963 | call :dk_color %Blue% "You can download it from %mas%genuine-installation-media.html" | 1002 | call :dk_color %Blue% "You can download it from %mas%genuine-installation-media.html" |
964 | set showfix=1 | 1003 | ) |
1004 | |||
1005 | |||
1006 | set osedition= | ||
1007 | for /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 | |||
1011 | if "%osSKU%"=="164" set osedition=ProfessionalEducation | ||
1012 | if "%osSKU%"=="165" set osedition=ProfessionalEducationN | ||
1013 | |||
1014 | if not defined officeact ( | ||
1015 | if not defined osedition ( | ||
1016 | call :dk_color %Red% "Checking Edition Name [Not Found In Registry]" | ||
1017 | ) else ( | ||
1018 | |||
1019 | if not exist "%SystemRoot%\System32\spp\tokens\skus\%osedition%\%osedition%*.xrm-ms" ( | ||
1020 | set error=1 | ||
1021 | call :dk_color %Red% "Checking License Files [Not Found] [%osedition%]" | ||
1022 | ) | ||
1023 | |||
1024 | if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*-%osedition%-*.mum" ( | ||
1025 | set error=1 | ||
1026 | call :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 | |||
1020 | for /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 ( | 1082 | for /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 ( |
1021 | reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "SkipRearm" /t REG_DWORD /d "0" /f %nul% | 1083 | reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "SkipRearm" /t REG_DWORD /d "0" /f %nul% |
1022 | call :dk_color %Red% "Checking SkipRearm [Default 0 Value Not Found. Changing To 0]" | 1084 | call :dk_color %Red% "Checking SkipRearm [Default 0 Value Not Found. Changing To 0]" |
1023 | net stop sppsvc /y %nul% | 1085 | %psc% Restart-Service sppsvc %nul% |
1024 | net start sppsvc /y %nul% | ||
1025 | set error=1 | 1086 | set error=1 |
1026 | ) | 1087 | ) |
1027 | 1088 | ||
@@ -1051,7 +1112,7 @@ call :dk_color %Gray% "Checking SPP Token Folder [Not Found. Creat | |||
1051 | 1112 | ||
1052 | call :dk_actids | 1113 | call :dk_actids |
1053 | if not defined applist ( | 1114 | if not defined applist ( |
1054 | net stop sppsvc /y %nul% | 1115 | %psc% Stop-Service sppsvc %nul% |
1055 | cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% | 1116 | cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% |
1056 | if !errorlevel! NEQ 0 cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% | 1117 | if !errorlevel! NEQ 0 cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% |
1057 | call :dk_refresh | 1118 | call :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 | ||
1081 | set wpaerror= | ||
1082 | set permerror= | 1142 | set permerror= |
1083 | if not defined serv_cor if not defined serv_cste if defined error if /i not %error_code%==0 if not defined showfix ( | ||
1084 | |||
1085 | REM This code checks for invalid registry keys in HKLM\SYSTEM\WPA. This issue may appear even on healthy systems. | ||
1086 | |||
1087 | if %winbuild% GEQ 14393 ( | ||
1088 | set /a count=0 | ||
1089 | for /f %%a in ('reg query "HKLM\SYSTEM\WPA" %nul6%') do set /a count+=1 | ||
1090 | for /L %%# in (1,1,!count!) do ( | ||
1091 | reg query "HKLM\SYSTEM\WPA\8DEC0AF1-0341-4b93-85CD-72606C2DF94C-7P-%%#" /ve /t REG_BINARY %nul% || set wpaerror=1 | ||
1092 | ) | ||
1093 | if defined wpaerror call :dk_color %Red% "Checking WPA Registry Keys [Error Found] [Registry Count - !count!]" | ||
1094 | ) | ||
1095 | |||
1096 | REM 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 | |||
1098 | if not exist "%tokenstore%\" set permerror=1 | 1143 | if not exist "%tokenstore%\" set permerror=1 |
1099 | 1144 | ||
1100 | for %%# in ( | 1145 | for %%# 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% |
1106 | if !errorlevel!==2 set permerror=1 | 1151 | if !errorlevel!==2 set permerror=1 |
1107 | ) | 1152 | ) |
1108 | if defined permerror call :dk_color %Red% "Checking SPP Permissions [Error Found]" | 1153 | if defined permerror ( |
1154 | set error=1 | ||
1155 | set showfix=1 | ||
1156 | call :dk_color %Red% "Checking SPP Permissions [Error Found]" | ||
1157 | call :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 | |||
1163 | if not defined serv_cor if not defined serv_cste if defined error if /i not %error_code%==0 if not defined showfix ( | ||
1110 | set showfix=1 | 1164 | set showfix=1 |
1111 | call :dk_color %Blue% "%_fixmsg%" | 1165 | call :dk_color %Blue% "%_fixmsg%" |
1112 | if not defined permerror call :dk_color %Blue% "If activation still fails then run Fix WPA Registry option." | 1166 | if not defined permerror call :dk_color %Blue% "If activation still fails then run Fix WPA Registry option." |
1113 | ) | 1167 | ) |
1114 | 1168 | ||
1169 | if not defined showfix if defined wpaerror ( | ||
1170 | set showfix=1 | ||
1171 | call :dk_color %Blue% "If activation fails then go back to Main Menu, select Troubleshoot and run Fix WPA Registry option." | ||
1172 | ) | ||
1173 | |||
1115 | exit /b | 1174 | exit /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 | |||
1185 | if ($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 | ||
1163 | set f= | 1258 | set f= |
1164 | for %%# in ( | 1259 | for %%# in ( |
1165 | 8b351c9c-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 | 1260 | 8b351c9c-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 |
1166 | c83cef07-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 | 1261 | c83cef07-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 |
1167 | 4de7cb65-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 | 1262 | 4de7cb65-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 |
1168 | 9fbaf5d6-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 | 1263 | 9fbaf5d6-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 |
1169 | f742e4ff-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 | 1264 | f742e4ff-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 |
1170 | 1d1bac85-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 | 1265 | 1d1bac85-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 |
1171 | 3ae2cc14-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 | 1266 | 3ae2cc14-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 |
1172 | 2b1f36bb-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 | 1267 | 2b1f36bb-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 |
1173 | 2a6137f3-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 | 1268 | 2a6137f3-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 |
1174 | e558417a-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 | 1269 | e558417a-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 |
1175 | c5198a66-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 | 1270 | c5198a66-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 |
1176 | f6e29426-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 | 1271 | f6e29426-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 |
1177 | cce9d2de-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 | 1272 | cce9d2de-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 |
1178 | d06934ee-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 | 1273 | d06934ee-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 |
1179 | 706e0cfd-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 | 1274 | 706e0cfd-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 |
1180 | faa57748-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 | 1275 | faa57748-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 |
1181 | 837766ff-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 | 1276 | 837766ff-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 |
1182 | 2c060131-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 | 1277 | 2c060131-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 |
1183 | e8f74caa-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 | 1278 | e8f74caa-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 |
1184 | 3d1022d8-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 | 1279 | 3d1022d8-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 |
1185 | 60c243e1-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 | 1280 | 60c243e1-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 |
1186 | 01eb852c-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 | 1281 | 01eb852c-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 |
1187 | eb6d346f-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 | 1282 | eb6d346f-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 |
1188 | 89e87510-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 | 1283 | 89e87510-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 |
1189 | 62f0c100-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 | 1284 | 62f0c100-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 |
1190 | 13a38698-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 | 1285 | 13a38698-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 |
1191 | df96023b-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 | 1286 | df96023b-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 |
1192 | d4ef7282-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 | 1287 | d4ef7282-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 |
1193 | af5c9381-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 | 1288 | af5c9381-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 |
1194 | 8ab9bdd1-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 | 1289 | 8ab9bdd1-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 |
1195 | ed655016-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 | 1290 | ed655016-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 |
1196 | 6c4de1b8-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 | 1291 | 6c4de1b8-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 |
1197 | d4bdc678-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 | 1292 | d4bdc678-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 |
1198 | 92fb8726-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 | 1293 | 92fb8726-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 |
1199 | d4f9b41f-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 | 1294 | 5a85300a-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 |
1295 | 80083eae-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 ( |
1201 | for /f "tokens=1-9 delims=_" %%A in ("%%#") do ( | 1297 | for /f "tokens=1-9 delims=_" %%A in ("%%#") do ( |
1202 | 1298 | ||
1203 | REM Detect key | 1299 | REM Detect key |
1204 | 1300 | ||
1205 | if %1==key if %osSKU%==%%C if not defined key ( | 1301 | if %1==key if %osSKU%==%%C if not defined key ( |
1302 | set skufound=1 | ||
1206 | echo "!applist! !altapplist!" | find /i "%%A" %nul1% && ( | 1303 | echo "!applist! !altapplist!" | find /i "%%A" %nul1% && ( |
1207 | if %%F==1 set notworking=1 | 1304 | if %%F==1 set notworking=1 |
1208 | set key=%%B | 1305 | set 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% | |||
256 | echo ________________________________________________ | 256 | echo ________________________________________________ |
257 | echo: | 257 | echo: |
258 | if not %_unattended%==1 ( | 258 | if not %_unattended%==1 ( |
259 | echo [1] Download Latest MAS | 259 | echo [1] Get Latest MAS |
260 | echo [0] Continue Anyway | 260 | echo [0] Continue Anyway |
261 | echo: | 261 | echo: |
262 | call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" | 262 | call :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 | ||
308 | cls | 308 | cls |
309 | mode 108, 34 | 309 | mode 110, 34 |
310 | if exist "%Systemdrive%\Windows\System32\spp\store_test\" mode 134, 34 | ||
310 | title KMS38 Activation %masver% | 311 | title KMS38 Activation %masver% |
311 | 312 | ||
312 | echo: | 313 | echo: |
313 | echo Initializing... | 314 | echo Initializing... |
315 | |||
316 | :: Check PowerShell | ||
317 | |||
318 | %psc% $ExecutionContext.SessionState.LanguageMode %nul2% | find /i "Full" %nul1% || ( | ||
319 | %eline% | ||
320 | %psc% $ExecutionContext.SessionState.LanguageMode | ||
321 | echo: | ||
322 | echo PowerShell is not working. Aborting... | ||
323 | echo If you have applied restrictions on Powershell then undo those changes. | ||
324 | echo: | ||
325 | echo Check this page for help. %mas%troubleshoot | ||
326 | goto dk_done | ||
327 | ) | ||
328 | |||
329 | ::======================================================================================================================================== | ||
330 | |||
314 | call :dk_product | 331 | call :dk_product |
315 | call :dk_ckeckwmic | 332 | call :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 | 413 | call :dk_checksku |
397 | |||
398 | set osSKU= | ||
399 | set slcSKU= | ||
400 | set wmiSKU= | ||
401 | set regSKU= | ||
402 | |||
403 | if %winbuild% GEQ 14393 (set info=Kernel-BrandingInfo) else (set info=Kernel-ProductInfo) | ||
404 | set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('SLGetWindowsInformationDWORD', 'slc.dll', 'Public, Static', 1, [int], @([String], [int].MakeByRefType()), 1, 3); | ||
405 | set d1=%d1% $Sku = 0; [void]$TypeBuilder.CreateType()::SLGetWindowsInformationDWORD('%info%', [ref]$Sku); $Sku | ||
406 | for /f "delims=" %%s in ('"%psc% %d1%"') do if not errorlevel 1 (set slcSKU=%%s) | ||
407 | if "%slcSKU%"=="0" set slcSKU= | ||
408 | if 1%slcSKU% NEQ +1%slcSKU% set slcSKU= | ||
409 | |||
410 | for /f "tokens=3 delims=." %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions" /v OSProductPfn %nul6%') do set "regSKU=%%a" | ||
411 | if %_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" | ||
412 | if %_wmic% EQU 0 for /f "tokens=1" %%a in ('%psc% "([WMI]'Win32_OperatingSystem=@').OperatingSystemSKU" %nul6%') do if not errorlevel 1 set "wmiSKU=%%a" | ||
413 | |||
414 | set osSKU=%slcSKU% | ||
415 | if not defined osSKU set osSKU=%wmiSKU% | ||
416 | if not defined osSKU set osSKU=%regSKU% | ||
417 | 414 | ||
418 | if not defined osSKU ( | 415 | if not defined osSKU ( |
419 | %eline% | 416 | %eline% |
@@ -472,11 +469,11 @@ if /i "Volume:GVLK"=="%_channel%" set _gvlk=1 | |||
472 | set key= | 469 | set key= |
473 | set pkey= | 470 | set pkey= |
474 | set altkey= | 471 | set altkey= |
472 | set skufound= | ||
475 | set changekey= | 473 | set changekey= |
476 | set altedition= | 474 | set altedition= |
477 | 475 | ||
478 | if defined applist call :kms38data getkey | 476 | call :kms38data getkey |
479 | |||
480 | if not defined key call :dk_gvlk %nul% | 477 | if not defined key call :dk_gvlk %nul% |
481 | if defined applist if not defined key call :kms38fallback | 478 | if 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 | |||
497 | if not defined key if not defined _gvlk ( | 494 | if not defined key if not defined _gvlk ( |
498 | %eline% | 495 | %eline% |
499 | echo [%winos% ^| %winbuild% ^| SKU:%osSKU%] | 496 | echo [%winos% ^| %winbuild% ^| SKU:%osSKU%] |
497 | if not defined skufound ( | ||
500 | echo Unable to find this product in the supported product list. | 498 | echo Unable to find this product in the supported product list. |
499 | ) else ( | ||
500 | echo Required License files not installed. | ||
501 | ) | ||
501 | echo Make sure you are using updated version of the script. | 502 | echo Make sure you are using updated version of the script. |
502 | echo %mas% | 503 | echo %mas% |
503 | echo: | 504 | echo: |
@@ -641,9 +642,7 @@ set "_xmlexist=if exist "%tdir%\GenuineTicket.xml"" | |||
641 | 642 | ||
642 | :: Stop sppsvc | 643 | :: Stop sppsvc |
643 | 644 | ||
644 | net stop sppsvc /y %nul% | 645 | %psc% Stop-Service sppsvc %nul% |
645 | net stop sppsvc /y %nul% | ||
646 | net stop sppsvc /y %nul% | ||
647 | 646 | ||
648 | sc query sppsvc | find /i "STOPPED" %nul% && ( | 647 | sc query sppsvc | find /i "STOPPED" %nul% && ( |
649 | echo Stopping sppsvc Service [Successful] | 648 | echo Stopping sppsvc Service [Successful] |
@@ -652,8 +651,7 @@ call :dk_color %Gray% "Stopping sppsvc Service [Failed]" | |||
652 | ) | 651 | ) |
653 | 652 | ||
654 | %_xmlexist% ( | 653 | %_xmlexist% ( |
655 | net stop ClipSVC /y %nul% | 654 | %psc% Restart-Service ClipSVC %nul% |
656 | net 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 | |||
840 | set osSKU= | ||
841 | set slcSKU= | ||
842 | set wmiSKU= | ||
843 | set regSKU= | ||
844 | |||
845 | if %winbuild% GEQ 14393 (set info=Kernel-BrandingInfo) else (set info=Kernel-ProductInfo) | ||
846 | set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('SLGetWindowsInformationDWORD', 'slc.dll', 'Public, Static', 1, [int], @([String], [int].MakeByRefType()), 1, 3); | ||
847 | set d1=%d1% $Sku = 0; [void]$TypeBuilder.CreateType()::SLGetWindowsInformationDWORD('%info%', [ref]$Sku); $Sku | ||
848 | for /f "delims=" %%s in ('"%psc% %d1%"') do if not errorlevel 1 (set slcSKU=%%s) | ||
849 | if "%slcSKU%"=="0" set slcSKU= | ||
850 | if 1%slcSKU% NEQ +1%slcSKU% set slcSKU= | ||
851 | |||
852 | for /f "tokens=3 delims=." %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions" /v OSProductPfn %nul6%') do set "regSKU=%%a" | ||
853 | if %_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" | ||
854 | if %_wmic% EQU 0 for /f "tokens=1" %%a in ('%psc% "([WMI]'Win32_OperatingSystem=@').OperatingSystemSKU" %nul6%') do if not errorlevel 1 set "wmiSKU=%%a" | ||
855 | |||
856 | set osSKU=%slcSKU% | ||
857 | if not defined osSKU set osSKU=%wmiSKU% | ||
858 | if not defined osSKU set osSKU=%regSKU% | ||
859 | exit /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= | |||
985 | sc start %%# %nul% | 1008 | sc start %%# %nul% |
986 | if !errorlevel! EQU 1060 set _corrupt=1 | 1009 | if !errorlevel! EQU 1060 set _corrupt=1 |
987 | sc query %%# %nul% || set _corrupt=1 | 1010 | sc query %%# %nul% || set _corrupt=1 |
988 | for %%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) | 1011 | for %%G in (DependOnService Description DisplayName ErrorControl ImagePath ObjectName Start Type) do if not defined _corrupt ( |
1012 | reg query HKLM\SYSTEM\CurrentControlSet\Services\%%# /v %%G %nul% || set _corrupt=1 | ||
1013 | if /i %%#==TrustedInstaller if /i %%G==DependOnService set _corrupt= | ||
1014 | ) | ||
1015 | |||
989 | if defined _corrupt (if defined serv_cor (set "serv_cor=!serv_cor! %%#") else (set "serv_cor=%%#")) | 1016 | if 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 | ||
1012 | if defined serv_ste ( | 1039 | if defined serv_ste ( |
1013 | for %%# in (%serv_ste%) do ( | 1040 | for %%# in (%serv_ste%) do ( |
1014 | if /i %%#==ClipSVC (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "3" /f %nul% & sc config %%# start= demand %nul%) | 1041 | if /i %%#==ClipSVC (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "3" /f %nul% & sc config %%# start= demand %nul%) |
1015 | if /i %%#==wlidsvc sc config %%# start= demand %nul% | 1042 | if /i %%#==wlidsvc sc config %%# start= demand %nul% |
1016 | if /i %%#==sppsvc (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "2" /f %nul% & sc config %%# start= delayed-auto %nul%) | 1043 | if /i %%#==sppsvc (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "2" /f %nul% & sc config %%# start= delayed-auto %nul%) |
1017 | if /i %%#==KeyIso sc config %%# start= demand %nul% | 1044 | if /i %%#==KeyIso sc config %%# start= demand %nul% |
1018 | if /i %%#==LicenseManager sc config %%# start= demand %nul% | 1045 | if /i %%#==LicenseManager sc config %%# start= demand %nul% |
1019 | if /i %%#==Winmgmt sc config %%# start= auto %nul% | 1046 | if /i %%#==Winmgmt sc config %%# start= auto %nul% |
1020 | if /i %%#==wuauserv sc config %%# start= demand %nul% | 1047 | if /i %%#==DoSvc sc config %%# start= delayed-auto %nul% |
1048 | if /i %%#==UsoSvc sc config %%# start= delayed-auto %nul% | ||
1049 | if /i %%#==CryptSvc sc config %%# start= auto %nul% | ||
1050 | if /i %%#==BITS sc config %%# start= delayed-auto %nul% | ||
1051 | if /i %%#==wuauserv sc config %%# start= demand %nul% | ||
1052 | if /i %%#==WaaSMedicSvc sc config %%# start= demand %nul% | ||
1021 | if !errorlevel!==0 ( | 1053 | if !errorlevel!==0 ( |
1022 | if defined serv_csts (set "serv_csts=!serv_csts! %%#") else (set "serv_csts=%%#") | 1054 | if defined serv_csts (set "serv_csts=!serv_csts! %%#") else (set "serv_csts=%%#") |
1023 | ) else ( | 1055 | ) else ( |
@@ -1042,9 +1074,12 @@ set serv_e= | |||
1042 | for %%# in (%_serv%) do ( | 1074 | for %%# in (%_serv%) do ( |
1043 | set errorcode= | 1075 | set errorcode= |
1044 | set checkerror= | 1076 | set checkerror= |
1045 | net start %%# /y %nul% | 1077 | |
1078 | sc query %%# | find /i "RUNNING" %nul% || ( | ||
1079 | %psc% Start-Service %%# %nul% | ||
1046 | set errorcode=!errorlevel! | 1080 | set errorcode=!errorlevel! |
1047 | sc query %%# | find /i "RUNNING" %nul% || set checkerror=1 | 1081 | sc query %%# | find /i "RUNNING" %nul% || set checkerror=1 |
1082 | ) | ||
1048 | 1083 | ||
1049 | sc start %%# %nul% | 1084 | sc start %%# %nul% |
1050 | if !errorlevel! NEQ 1056 if !errorlevel! NEQ 0 (set errorcode=!errorlevel!&set checkerror=1) | 1085 | if !errorlevel! NEQ 1056 if !errorlevel! NEQ 0 (set errorcode=!errorlevel!&set checkerror=1) |
@@ -1055,7 +1090,7 @@ if defined serv_e ( | |||
1055 | set error=1 | 1090 | set error=1 |
1056 | call :dk_color %Red% "Starting Services [Failed] [%serv_e%]" | 1091 | call :dk_color %Red% "Starting Services [Failed] [%serv_e%]" |
1057 | echo %serv_e% | findstr /i "ClipSVC-1058 sppsvc-1058" %nul% && ( | 1092 | echo %serv_e% | findstr /i "ClipSVC-1058 sppsvc-1058" %nul% && ( |
1058 | call :dk_color %Blue% "Restart the system to fix disabled service error 1058." | 1093 | call :dk_color %Blue% "Restart the system to fix this error." |
1059 | set showfix=1 | 1094 | set showfix=1 |
1060 | ) | 1095 | ) |
1061 | ) | 1096 | ) |
@@ -1067,14 +1102,18 @@ set showfix=1 | |||
1067 | if defined safeboot_option ( | 1102 | if defined safeboot_option ( |
1068 | set error=1 | 1103 | set error=1 |
1069 | set showfix=1 | 1104 | set showfix=1 |
1070 | call :dk_color2 %Red% "Checking Boot Mode " %Blue% "[Safe mode found. Run in normal mode.]" | 1105 | call :dk_color2 %Red% "Checking Boot Mode [%safeboot_option%] " %Blue% "[Safe mode found. Run in normal mode.]" |
1071 | ) | 1106 | ) |
1072 | 1107 | ||
1073 | 1108 | ||
1074 | reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State" %nul2% | find /i "IMAGE_STATE_COMPLETE" %nul1% || ( | 1109 | for /f "skip=2 tokens=2*" %%A in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State" /v ImageState') do (set imagestate=%%B) |
1110 | if /i not "%imagestate%"=="IMAGE_STATE_COMPLETE" ( | ||
1075 | set error=1 | 1111 | set error=1 |
1112 | call :dk_color %Red% "Checking Windows Setup State [%imagestate%]" | ||
1113 | echo "%imagestate%" | find /i "RESEAL" %nul% && ( | ||
1076 | set showfix=1 | 1114 | set showfix=1 |
1077 | call :dk_color2 %Red% "Checking Audit Mode " %Blue% "[IMAGE_STATE_COMPLETE status not found. Run in normal mode.]" | 1115 | call :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% || ( | 1127 | set wpainfo= |
1128 | set wpaerror= | ||
1129 | for /f "delims=" %%a in ('%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':wpatest\:.*';iex ($f[1]);" %nul6%') do (set wpainfo=%%a) | ||
1130 | echo "%wpainfo%" | find /i "Error Found" %nul% && ( | ||
1089 | set error=1 | 1131 | set error=1 |
1090 | call :dk_color %Red% "Checking Powershell [Not Responding]" | 1132 | set wpaerror=1 |
1133 | call :dk_color %Red% "Checking WPA Registry Error [%wpainfo%]" | ||
1134 | ) || ( | ||
1135 | echo Checking WPA Registry Count [%wpainfo%] | ||
1091 | ) | 1136 | ) |
1092 | 1137 | ||
1093 | 1138 | ||
1094 | DISM /English /Online /Get-CurrentEdition %nul% | 1139 | DISM /English /Online /Get-CurrentEdition %nul% |
1095 | set dism_error=%errorlevel% | 1140 | set dism_error=%errorlevel% |
1096 | cmd /c exit /b %dism_error% | 1141 | cmd /c exit /b %dism_error% |
1097 | if %dism_error% NEQ 0 set "dism_error=[0x%=ExitCode%]" | 1142 | if %dism_error% NEQ 0 set "dism_error=0x%=ExitCode%" |
1098 | if %dism_error% NEQ 0 ( | 1143 | if %dism_error% NEQ 0 ( |
1099 | call :dk_color %Red% "Checking DISM [Not Responding] %dism_error%" | 1144 | call :dk_color %Red% "Checking DISM [Not Responding] [%dism_error%]" |
1100 | ) | 1145 | ) |
1101 | 1146 | ||
1102 | 1147 | ||
1103 | if not defined officeact if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" ( | 1148 | if not defined officeact if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" ( |
1104 | set error=1 | 1149 | set error=1 |
1150 | set showfix=1 | ||
1105 | call :dk_color %Red% "Checking Eval Packages [Non-Eval Licenses are installed in Eval Windows]" | 1151 | call :dk_color %Red% "Checking Eval Packages [Non-Eval Licenses are installed in Eval Windows]" |
1106 | if /i %dism_error%==[0x800F0805] ( | ||
1107 | for %%# in (4 125 126 188 191 205) do if "%osSKU%"=="%%#" ( | ||
1108 | call :dk_color %Blue% "Evaluation Windows can not be activated and different License install may lead to errors." | 1152 | call :dk_color %Blue% "Evaluation Windows can not be activated and different License install may lead to errors." |
1109 | call :dk_color %Blue% "It is recommended to install full version of %winos%." | 1153 | call :dk_color %Blue% "It is recommended to install full version of %winos%." |
1110 | call :dk_color %Blue% "You can download it from %mas%genuine-installation-media.html" | 1154 | call :dk_color %Blue% "You can download it from %mas%genuine-installation-media.html" |
1111 | set showfix=1 | 1155 | ) |
1156 | |||
1157 | |||
1158 | set osedition= | ||
1159 | for /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 | |||
1163 | if "%osSKU%"=="164" set osedition=ProfessionalEducation | ||
1164 | if "%osSKU%"=="165" set osedition=ProfessionalEducationN | ||
1165 | |||
1166 | if not defined officeact ( | ||
1167 | if not defined osedition ( | ||
1168 | call :dk_color %Red% "Checking Edition Name [Not Found In Registry]" | ||
1169 | ) else ( | ||
1170 | |||
1171 | if not exist "%SystemRoot%\System32\spp\tokens\skus\%osedition%\%osedition%*.xrm-ms" ( | ||
1172 | set error=1 | ||
1173 | call :dk_color %Red% "Checking License Files [Not Found] [%osedition%]" | ||
1174 | ) | ||
1175 | |||
1176 | if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*-%osedition%-*.mum" ( | ||
1177 | set error=1 | ||
1178 | call :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 | |||
1167 | for /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 ( | 1234 | for /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 ( |
1168 | reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "SkipRearm" /t REG_DWORD /d "0" /f %nul% | 1235 | reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "SkipRearm" /t REG_DWORD /d "0" /f %nul% |
1169 | call :dk_color %Red% "Checking SkipRearm [Default 0 Value Not Found. Changing To 0]" | 1236 | call :dk_color %Red% "Checking SkipRearm [Default 0 Value Not Found. Changing To 0]" |
1170 | net stop sppsvc /y %nul% | 1237 | %psc% Restart-Service sppsvc %nul% |
1171 | net start sppsvc /y %nul% | ||
1172 | set error=1 | 1238 | set error=1 |
1173 | ) | 1239 | ) |
1174 | 1240 | ||
@@ -1198,7 +1264,7 @@ call :dk_color %Gray% "Checking SPP Token Folder [Not Found. Creat | |||
1198 | 1264 | ||
1199 | call :dk_actids | 1265 | call :dk_actids |
1200 | if not defined applist ( | 1266 | if not defined applist ( |
1201 | net stop sppsvc /y %nul% | 1267 | %psc% Stop-Service sppsvc %nul% |
1202 | cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% | 1268 | cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% |
1203 | if !errorlevel! NEQ 0 cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% | 1269 | if !errorlevel! NEQ 0 cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% |
1204 | call :dk_refresh | 1270 | call :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 | ||
1228 | set wpaerror= | ||
1229 | set permerror= | 1294 | set permerror= |
1230 | if not defined serv_cor if not defined serv_cste if defined error if /i not %error_code%==0 if not defined showfix ( | ||
1231 | |||
1232 | REM This code checks for invalid registry keys in HKLM\SYSTEM\WPA. This issue may appear even on healthy systems. | ||
1233 | |||
1234 | if %winbuild% GEQ 14393 ( | ||
1235 | set /a count=0 | ||
1236 | for /f %%a in ('reg query "HKLM\SYSTEM\WPA" %nul6%') do set /a count+=1 | ||
1237 | for /L %%# in (1,1,!count!) do ( | ||
1238 | reg query "HKLM\SYSTEM\WPA\8DEC0AF1-0341-4b93-85CD-72606C2DF94C-7P-%%#" /ve /t REG_BINARY %nul% || set wpaerror=1 | ||
1239 | ) | ||
1240 | if defined wpaerror call :dk_color %Red% "Checking WPA Registry Keys [Error Found] [Registry Count - !count!]" | ||
1241 | ) | ||
1242 | |||
1243 | REM 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 | |||
1245 | if not exist "%tokenstore%\" set permerror=1 | 1295 | if not exist "%tokenstore%\" set permerror=1 |
1246 | 1296 | ||
1247 | for %%# in ( | 1297 | for %%# 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% |
1253 | if !errorlevel!==2 set permerror=1 | 1303 | if !errorlevel!==2 set permerror=1 |
1254 | ) | 1304 | ) |
1255 | if defined permerror call :dk_color %Red% "Checking SPP Permissions [Error Found]" | 1305 | if defined permerror ( |
1306 | set error=1 | ||
1307 | set showfix=1 | ||
1308 | call :dk_color %Red% "Checking SPP Permissions [Error Found]" | ||
1309 | call :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 | |||
1315 | if not defined serv_cor if not defined serv_cste if defined error if /i not %error_code%==0 if not defined showfix ( | ||
1257 | set showfix=1 | 1316 | set showfix=1 |
1258 | call :dk_color %Blue% "%_fixmsg%" | 1317 | call :dk_color %Blue% "%_fixmsg%" |
1259 | if not defined permerror call :dk_color %Blue% "If activation still fails then run Fix WPA Registry option." | 1318 | if not defined permerror call :dk_color %Blue% "If activation still fails then run Fix WPA Registry option." |
1260 | ) | 1319 | ) |
1261 | 1320 | ||
1321 | if not defined showfix if defined wpaerror ( | ||
1322 | set showfix=1 | ||
1323 | call :dk_color %Blue% "If activation fails then go back to Main Menu, select Troubleshoot and run Fix WPA Registry option." | ||
1324 | ) | ||
1325 | |||
1262 | exit /b | 1326 | exit /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 | |||
1337 | if ($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 | ||
1305 | set f= | 1405 | set f= |
1306 | for %%# in ( | 1406 | for %%# in ( |
1307 | 73111121-5638-40f6-bc11-f1d7b0d64300_NPP%f%R9-FW%f%DCX-D2C%f%8J-H8%f%72K-2Y%f%T43___4_Enterprise | 1407 | 73111121-5638-40f6-bc11-f1d7b0d64300_NP%f%PR9-FWD%f%CX-D2%f%C8J-H872%f%K-2Y%f%T43___4_Enterprise |
1308 | 9bd77860-9b31-4b7b-96ad-2564017315bf_VDY%f%BN-27%f%WPP-V4H%f%QT-9V%f%MD4-VM%f%K7H___7_ServerStandard_FE | 1408 | 7dc26449-db21-4e09-ba37-28f2958506a6_DP%f%NXD-67Y%f%Y9-WW%f%FJJ-RYH9%f%9-RM%f%832___7_ServerStandard_Ge |
1309 | de32eafd-aaee-4662-9444-c1befb41bde2_N69%f%G4-B8%f%9J2-4G8%f%F4-WW%f%YCC-J4%f%64C___7_ServerStandard_RS5 | 1409 | 9bd77860-9b31-4b7b-96ad-2564017315bf_VD%f%YBN-27W%f%PP-V4%f%HQT-9VMD%f%4-VM%f%K7H___7_ServerStandard_FE |
1310 | 8c1c5410-9f39-4805-8c9d-63a07706358f_WC2%f%BQ-8N%f%RM3-FDD%f%YY-2B%f%FGV-KH%f%KQY___7_ServerStandard_RS1 | 1410 | de32eafd-aaee-4662-9444-c1befb41bde2_N6%f%9G4-B89%f%J2-4G%f%8F4-WWYC%f%C-J4%f%64C___7_ServerStandard_RS5 |
1311 | ef6cfc9f-8c5d-44ac-9aad-de6a2ea0ae03_WX4%f%NM-KY%f%WYW-QJJ%f%R4-XV%f%3QB-6V%f%M33___8_ServerDatacenter_FE | 1411 | 8c1c5410-9f39-4805-8c9d-63a07706358f_WC%f%2BQ-8NR%f%M3-FD%f%DYY-2BFG%f%V-KH%f%KQY___7_ServerStandard_RS1 |
1312 | 34e1ae55-27f8-4950-8877-7a03be5fb181_WMD%f%GN-G9%f%PQG-XVV%f%XX-R3%f%X43-63%f%DFG___8_ServerDatacenter_RS5 | 1412 | c052f164-cdf6-409a-a0cb-853ba0f0f55a_CN%f%FDQ-2BW%f%8H-9V%f%4WM-TKCP%f%D-MD%f%2QF___8_ServerDatacenter_Ge |
1313 | 21c56779-b449-4d20-adfc-eece0e1ad74b_CB7%f%KF-BW%f%N84-R7R%f%2Y-79%f%3K2-8X%f%DDG___8_ServerDatacenter_RS1 | 1413 | ef6cfc9f-8c5d-44ac-9aad-de6a2ea0ae03_WX%f%4NM-KYW%f%YW-QJ%f%JR4-XV3Q%f%B-6V%f%M33___8_ServerDatacenter_FE |
1314 | e272e3e2-732f-4c65-a8f0-484747d0d947_DPH%f%2V-TT%f%NVB-4X9%f%Q3-TJ%f%R4H-KH%f%JW4__27_EnterpriseN | 1414 | 34e1ae55-27f8-4950-8877-7a03be5fb181_WM%f%DGN-G9P%f%QG-XV%f%VXX-R3X4%f%3-63%f%DFG___8_ServerDatacenter_RS5 |
1315 | 2de67392-b7a7-462a-b1ca-108dd189f588_W26%f%9N-WF%f%GWX-YVC%f%9B-4J%f%6C9-T8%f%3GX__48_Professional | 1415 | 21c56779-b449-4d20-adfc-eece0e1ad74b_CB%f%7KF-BWN%f%84-R7%f%R2Y-793K%f%2-8X%f%DDG___8_ServerDatacenter_RS1 |
1316 | a80b5abf-76ad-428b-b05d-a47d2dffeebf_MH3%f%7W-N4%f%7XK-V7X%f%M9-C7%f%227-GC%f%QG9__49_ProfessionalN | 1416 | e272e3e2-732f-4c65-a8f0-484747d0d947_DP%f%H2V-TTN%f%VB-4X%f%9Q3-TJR4%f%H-KH%f%JW4__27_EnterpriseN |
1317 | 034d3cbb-5d4b-4245-b3f8-f84571314078_WVD%f%HN-86%f%M7X-466%f%P6-VH%f%XV7-YY%f%726__50_ServerSolution_RS5 | 1417 | 2de67392-b7a7-462a-b1ca-108dd189f588_W2%f%69N-WFG%f%WX-YV%f%C9B-4J6C%f%9-T8%f%3GX__48_Professional |
1318 | 2b5a1b0f-a5ab-4c54-ac2f-a6d94824a283_JCK%f%RF-N3%f%7P4-C2D%f%82-9Y%f%XRT-4M%f%63B__50_ServerSolution_RS1 | 1418 | a80b5abf-76ad-428b-b05d-a47d2dffeebf_MH%f%37W-N47%f%XK-V7%f%XM9-C722%f%7-GC%f%QG9__49_ProfessionalN |
1319 | 7b9e1751-a8da-4f75-9560-5fadfe3d8e38_3KH%f%Y7-WN%f%T83-DGQ%f%KR-F7%f%HPR-84%f%4BM__98_CoreN | 1419 | 034d3cbb-5d4b-4245-b3f8-f84571314078_WV%f%DHN-86M%f%7X-46%f%6P6-VHXV%f%7-YY%f%726__50_ServerSolution_RS5 |
1320 | a9107544-f4a0-4053-a96a-1479abdef912_PVM%f%JN-6D%f%FY6-9CC%f%P6-7B%f%KTT-D3%f%WVR__99_CoreCountrySpecific | 1420 | 2b5a1b0f-a5ab-4c54-ac2f-a6d94824a283_JC%f%KRF-N37%f%P4-C2%f%D82-9YXR%f%T-4M%f%63B__50_ServerSolution_RS1 |
1321 | cd918a57-a41b-4c82-8dce-1a538e221a83_7HN%f%RX-D7%f%KGG-3K4%f%RQ-4W%f%PJ4-YT%f%DFH_100_CoreSingleLanguage | 1421 | 7b9e1751-a8da-4f75-9560-5fadfe3d8e38_3K%f%HY7-WNT%f%83-DG%f%QKR-F7HP%f%R-84%f%4BM__98_CoreN |
1322 | 58e97c99-f377-4ef1-81d5-4ad5522b5fd8_TX9%f%XD-98%f%N7V-6WM%f%Q6-BX%f%7FG-H8%f%Q99_101_Core | 1422 | a9107544-f4a0-4053-a96a-1479abdef912_PV%f%MJN-6DF%f%Y6-9C%f%CP6-7BKT%f%T-D3%f%WVR__99_CoreCountrySpecific |
1323 | 7b4433f4-b1e7-4788-895a-c45378d38253_QN4%f%C6-GB%f%JD2-FB4%f%22-GH%f%WJK-GJ%f%G2R_110_ServerCloudStorage | 1423 | cd918a57-a41b-4c82-8dce-1a538e221a83_7H%f%NRX-D7K%f%GG-3K%f%4RQ-4WPJ%f%4-YT%f%DFH_100_CoreSingleLanguage |
1324 | 8de8eb62-bbe0-40ac-ac17-f75595071ea3_GRF%f%BW-QN%f%DC4-6QB%f%HG-CC%f%K3B-2P%f%R88_120_ServerARM64_RS5 | 1424 | 58e97c99-f377-4ef1-81d5-4ad5522b5fd8_TX%f%9XD-98N%f%7V-6W%f%MQ6-BX7F%f%G-H8%f%Q99_101_Core |
1325 | 43d9af6e-5e86-4be8-a797-d072a046896c_K9F%f%YF-G6%f%NCK-73M%f%32-XM%f%VPY-F9%f%DRR_120_ServerARM64_RS4 | 1425 | 7b4433f4-b1e7-4788-895a-c45378d38253_QN%f%4C6-GBJ%f%D2-FB%f%422-GHWJ%f%K-GJ%f%G2R_110_ServerCloudStorage |
1326 | e0c42288-980c-4788-a014-c080d2e1926e_NW6%f%C2-QM%f%PVW-D7K%f%KK-3G%f%KT6-VC%f%FB2_121_Education | 1426 | 8de8eb62-bbe0-40ac-ac17-f75595071ea3_GR%f%FBW-QND%f%C4-6Q%f%BHG-CCK3%f%B-2P%f%R88_120_ServerARM64_RS5 |
1327 | 3c102355-d027-42c6-ad23-2e7ef8a02585_2WH%f%4N-8Q%f%GBV-H22%f%JP-CT%f%43Q-MD%f%WWJ_122_EducationN | 1427 | 43d9af6e-5e86-4be8-a797-d072a046896c_K9%f%FYF-G6N%f%CK-73%f%M32-XMVP%f%Y-F9%f%DRR_120_ServerARM64_RS4 |
1328 | 32d2fab3-e4a8-42c2-923b-4bf4fd13e6ee_M7X%f%TQ-FN%f%8P6-TTK%f%YV-9D%f%4CC-J4%f%62D_125_EnterpriseS_RS5,VB,Ge | 1428 | e0c42288-980c-4788-a014-c080d2e1926e_NW%f%6C2-QMP%f%VW-D7%f%KKK-3GKT%f%6-VC%f%FB2_121_Education |
1329 | 2d5a5a60-3040-48bf-beb0-fcd770c20ce0_DCP%f%HK-NF%f%MTC-H88%f%MJ-PF%f%HPY-QJ%f%4BJ_125_EnterpriseS_RS1 | 1429 | 3c102355-d027-42c6-ad23-2e7ef8a02585_2W%f%H4N-8QG%f%BV-H2%f%2JP-CT43%f%Q-MD%f%WWJ_122_EducationN |
1330 | 7b51a46c-0c04-4e8f-9af4-8496cca90d5e_WNM%f%TR-4C%f%88C-JK8%f%YV-HQ%f%7T2-76%f%DF9_125_EnterpriseS_TH1 | 1430 | 32d2fab3-e4a8-42c2-923b-4bf4fd13e6ee_M7%f%XTQ-FN8%f%P6-TT%f%KYV-9D4C%f%C-J4%f%62D_125_EnterpriseS_RS5,VB,Ge |
1331 | 7103a333-b8c8-49cc-93ce-d37c09687f92_92N%f%FX-8D%f%JQP-P6B%f%BQ-TH%f%F9C-7C%f%G2H_126_EnterpriseSN_RS5,VB,Ge | 1431 | 2d5a5a60-3040-48bf-beb0-fcd770c20ce0_DC%f%PHK-NFM%f%TC-H8%f%8MJ-PFHP%f%Y-QJ%f%4BJ_125_EnterpriseS_RS1 |
1332 | 9f776d83-7156-45b2-8a5c-359b9c9f22a3_QFF%f%DN-GR%f%T3P-VKW%f%WX-X7%f%T3R-8B%f%639_126_EnterpriseSN_RS1 | 1432 | 7b51a46c-0c04-4e8f-9af4-8496cca90d5e_WN%f%MTR-4C8%f%8C-JK%f%8YV-HQ7T%f%2-76%f%DF9_125_EnterpriseS_TH1 |
1333 | 87b838b7-41b6-4590-8318-5797951d8529_2F7%f%7B-TN%f%FGY-69Q%f%QF-B8%f%YKP-D6%f%9TJ_126_EnterpriseSN_TH1 | 1433 | 7103a333-b8c8-49cc-93ce-d37c09687f92_92%f%NFX-8DJ%f%QP-P6%f%BBQ-THF9%f%C-7C%f%G2H_126_EnterpriseSN_RS5,VB,Ge |
1334 | 39e69c41-42b4-4a0a-abad-8e3c10a797cc_QFN%f%D9-D3%f%Y9C-J3K%f%KY-6R%f%PVP-2D%f%PYV_145_ServerDatacenterACor_FE | 1434 | 9f776d83-7156-45b2-8a5c-359b9c9f22a3_QF%f%FDN-GRT%f%3P-VK%f%WWX-X7T3%f%R-8B%f%639_126_EnterpriseSN_RS1 |
1335 | 90c362e5-0da1-4bfd-b53b-b87d309ade43_6NM%f%RW-2C%f%8FM-D24%f%W7-TQ%f%WMY-CW%f%H2D_145_ServerDatacenterACor_RS5 | 1435 | 87b838b7-41b6-4590-8318-5797951d8529_2F%f%77B-TNF%f%GY-69%f%QQF-B8YK%f%P-D6%f%9TJ_126_EnterpriseSN_TH1 |
1336 | e49c08e7-da82-42f8-bde2-b570fbcae76c_2HX%f%DN-KR%f%XHB-GPY%f%C7-YC%f%KFJ-7F%f%VDG_145_ServerDatacenterACor_RS3 | 1436 | 39e69c41-42b4-4a0a-abad-8e3c10a797cc_QF%f%ND9-D3Y%f%9C-J3%f%KKY-6RPV%f%P-2D%f%PYV_145_ServerDatacenterACor_FE |
1337 | f5e9429c-f50b-4b98-b15c-ef92eb5cff39_67K%f%N8-4F%f%YJW-248%f%7Q-MQ%f%2J7-4C%f%4RG_146_ServerStandardACor_FE | 1437 | 90c362e5-0da1-4bfd-b53b-b87d309ade43_6N%f%MRW-2C8%f%FM-D2%f%4W7-TQWM%f%Y-CW%f%H2D_145_ServerDatacenterACor_RS5 |
1338 | 73e3957c-fc0c-400d-9184-5f7b6f2eb409_N2K%f%JX-J9%f%4YW-TQV%f%FB-DG%f%9YT-72%f%4CC_146_ServerStandardACor_RS5 | 1438 | e49c08e7-da82-42f8-bde2-b570fbcae76c_2H%f%XDN-KRX%f%HB-GP%f%YC7-YCKF%f%J-7F%f%VDG_145_ServerDatacenterACor_RS3 |
1339 | 61c5ef22-f14f-4553-a824-c4b31e84b100_PTX%f%N8-JF%f%HJM-4WC%f%78-MP%f%CBR-9W%f%4KR_146_ServerStandardACor_RS3 | 1439 | f5e9429c-f50b-4b98-b15c-ef92eb5cff39_67%f%KN8-4FY%f%JW-24%f%87Q-MQ2J%f%7-4C%f%4RG_146_ServerStandardACor_FE |
1340 | 82bbc092-bc50-4e16-8e18-b74fc486aec3_NRG%f%8B-VK%f%K3Q-CXV%f%CJ-9G%f%2XF-6Q%f%84J_161_ProfessionalWorkstation | 1440 | 73e3957c-fc0c-400d-9184-5f7b6f2eb409_N2%f%KJX-J94%f%YW-TQ%f%VFB-DG9Y%f%T-72%f%4CC_146_ServerStandardACor_RS5 |
1341 | 4b1571d3-bafb-4b40-8087-a961be2caf65_9FN%f%HH-K3%f%HBT-3W4%f%TD-63%f%83H-6X%f%YWF_162_ProfessionalWorkstationN | 1441 | 61c5ef22-f14f-4553-a824-c4b31e84b100_PT%f%XN8-JFH%f%JM-4W%f%C78-MPCB%f%R-9W%f%4KR_146_ServerStandardACor_RS3 |
1342 | 3f1afc82-f8ac-4f6c-8005-1d233e606eee_6TP%f%4R-GN%f%PTD-KYY%f%HQ-7B%f%7DP-J4%f%47Y_164_ProfessionalEducation | 1442 | 82bbc092-bc50-4e16-8e18-b74fc486aec3_NR%f%G8B-VKK%f%3Q-CX%f%VCJ-9G2X%f%F-6Q%f%84J_161_ProfessionalWorkstation |
1343 | 5300b18c-2e33-4dc2-8291-47ffcec746dd_YVW%f%GF-BX%f%NMC-HTQ%f%YQ-CP%f%Q99-66%f%QFC_165_ProfessionalEducationN | 1443 | 4b1571d3-bafb-4b40-8087-a961be2caf65_9F%f%NHH-K3H%f%BT-3W%f%4TD-6383%f%H-6X%f%YWF_162_ProfessionalWorkstationN |
1344 | 8c8f0ad3-9a43-4e05-b840-93b8d1475cbc_6N3%f%79-GG%f%TMK-23C%f%6M-XV%f%VTC-CK%f%FRQ_168_ServerAzureCor_FE | 1444 | 3f1afc82-f8ac-4f6c-8005-1d233e606eee_6T%f%P4R-GNP%f%TD-KY%f%YHQ-7B7D%f%P-J4%f%47Y_164_ProfessionalEducation |
1345 | a99cc1f0-7719-4306-9645-294102fbff95_FDN%f%H6-VW%f%9RW-BXP%f%J7-4X%f%TYG-23%f%9TB_168_ServerAzureCor_RS5 | 1445 | 5300b18c-2e33-4dc2-8291-47ffcec746dd_YV%f%WGF-BXN%f%MC-HT%f%QYQ-CPQ9%f%9-66%f%QFC_165_ProfessionalEducationN |
1346 | 3dbf341b-5f6c-4fa7-b936-699dce9e263f_VP3%f%4G-4N%f%PPG-79J%f%TQ-86%f%4T4-R3%f%MQX_168_ServerAzureCor_RS1 | 1446 | 45b5aff2-60a0-42f2-bc4b-ec6e5f7b527e_QN%f%7G3-4RM%f%92-MT%f%6QR-PR96%f%6-FV%f%YV7_168_ServerAzureCor_Ge |
1347 | e0b2d383-d112-413f-8a80-97f373a5820c_YYV%f%X9-NT%f%FWV-6MD%f%M3-9P%f%T4T-4M%f%68B_171_EnterpriseG | 1447 | 8c8f0ad3-9a43-4e05-b840-93b8d1475cbc_6N%f%379-GGT%f%MK-23%f%C6M-XVVT%f%C-CK%f%FRQ_168_ServerAzureCor_FE |
1348 | e38454fb-41a4-4f59-a5dc-25080e354730_44R%f%PN-FT%f%Y23-9VT%f%TB-MP%f%9BX-T8%f%4FV_172_EnterpriseGN | 1448 | a99cc1f0-7719-4306-9645-294102fbff95_FD%f%NH6-VW9%f%RW-BX%f%PJ7-4XTY%f%G-23%f%9TB_168_ServerAzureCor_RS5 |
1349 | ec868e65-fadf-4759-b23e-93fe37f2cc29_CPW%f%HC-NT%f%2C7-VYW%f%78-DH%f%DB2-PG%f%3GK_175_ServerRdsh_RS5 | 1449 | 3dbf341b-5f6c-4fa7-b936-699dce9e263f_VP%f%34G-4NP%f%PG-79%f%JTQ-864T%f%4-R3%f%MQX_168_ServerAzureCor_RS1 |
1350 | e4db50ea-bda1-4566-b047-0ca50abc6f07_7NB%f%T4-WG%f%BQX-MP4%f%H7-QX%f%FF8-YP%f%3KX_175_ServerRdsh_RS3 | 1450 | e0b2d383-d112-413f-8a80-97f373a5820c_YY%f%VX9-NTF%f%WV-6M%f%DM3-9PT4%f%T-4M%f%68B_171_EnterpriseG |
1351 | 0df4f814-3f57-4b8b-9a9d-fddadcd69fac_NBT%f%WJ-3D%f%R69-3C4%f%V8-C2%f%6MC-GQ%f%9M6_183_CloudE | 1451 | e38454fb-41a4-4f59-a5dc-25080e354730_44%f%RPN-FTY%f%23-9V%f%TTB-MP9B%f%X-T8%f%4FV_172_EnterpriseGN |
1352 | 59eb965c-9150-42b7-a0ec-22151b9897c5_KBN%f%8V-HF%f%GQ4-MGX%f%VD-34%f%7P6-PD%f%QGT_191_IoTEnterpriseS_VB,NI | 1452 | ec868e65-fadf-4759-b23e-93fe37f2cc29_CP%f%WHC-NT2%f%C7-VY%f%W78-DHDB%f%2-PG%f%3GK_175_ServerRdsh_RS5 |
1353 | d30136fc-cb4b-416e-a23d-87207abc44a9_6XN%f%7V-PC%f%BDC-BDB%f%RH-8D%f%QY7-G6%f%R44_202_CloudEditionN | 1453 | e4db50ea-bda1-4566-b047-0ca50abc6f07_7N%f%BT4-WGB%f%QX-MP%f%4H7-QXFF%f%8-YP%f%3KX_175_ServerRdsh_RS3 |
1354 | ca7df2e3-5ea0-47b8-9ac1-b1be4d8edd69_37D%f%7F-N4%f%9CB-WQR%f%8W-TB%f%J73-FM%f%8RX_203_CloudEdition | 1454 | 0df4f814-3f57-4b8b-9a9d-fddadcd69fac_NB%f%TWJ-3DR%f%69-3C%f%4V8-C26M%f%C-GQ%f%9M6_183_CloudE |
1355 | 19b5e0fb-4431-46bc-bac1-2f1873e4ae73_NTB%f%V8-9K%f%7Q8-V27%f%C6-M2%f%BTV-KH%f%MXV_407_ServerTurbine | 1455 | 59eb965c-9150-42b7-a0ec-22151b9897c5_KB%f%N8V-HFG%f%Q4-MG%f%XVD-347P%f%6-PD%f%QGT_191_IoTEnterpriseS_VB,NI |
1456 | d30136fc-cb4b-416e-a23d-87207abc44a9_6X%f%N7V-PCB%f%DC-BD%f%BRH-8DQY%f%7-G6%f%R44_202_CloudEditionN | ||
1457 | ca7df2e3-5ea0-47b8-9ac1-b1be4d8edd69_37%f%D7F-N49%f%CB-WQ%f%R8W-TBJ7%f%3-FM%f%8RX_203_CloudEdition | ||
1458 | c2e946d1-cfa2-4523-8c87-30bc696ee584_NQ%f%8HH-FTD%f%TM-6V%f%GY7-TQ3D%f%V-XF%f%BV2_407_ServerTurbine_Ge | ||
1459 | 19b5e0fb-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 ( |
1357 | for /f "tokens=1-5 delims=_" %%A in ("%%#") do if %osSKU%==%%C ( | 1461 | for /f "tokens=1-5 delims=_" %%A in ("%%#") do if %osSKU%==%%C ( |
1462 | set skufound=1 | ||
1358 | if %1==getkey if not defined key echo "!applist!" | find /i "%%A" %nul1% && set key=%%B | 1463 | if %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 | ||
1381 | for %%# in ( | 1486 | for %%# in ( |
1382 | 188_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 | 1487 | 188_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 |
1488 | 206_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 | ||
1383 | 191_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 | 1489 | 191_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 |
1384 | 205_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 | 1490 | 205_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 |
1385 | 138_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 | 1491 | 138_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:'=''%" | |||
178 | set _PSarg="""%~f0""" -el %_args% | 188 | set _PSarg="""%~f0""" -el %_args% |
179 | 189 | ||
180 | set "_ttemp=%userprofile%\AppData\Local\Temp" | 190 | set "_ttemp=%userprofile%\AppData\Local\Temp" |
181 | 191 | set "_Local=%LocalAppData%" | |
182 | setlocal EnableDelayedExpansion | 192 | setlocal EnableDelayedExpansion |
183 | 193 | ||
184 | ::======================================================================================================================================== | 194 | ::======================================================================================================================================== |
@@ -239,7 +249,7 @@ echo You are running outdated version MAS %masver% | |||
239 | echo ________________________________________________ | 249 | echo ________________________________________________ |
240 | echo: | 250 | echo: |
241 | if not %_unattended%==1 ( | 251 | if not %_unattended%==1 ( |
242 | echo [1] Download Latest MAS | 252 | echo [1] Get Latest MAS |
243 | echo [0] Continue Anyway | 253 | echo [0] Continue Anyway |
244 | echo: | 254 | echo: |
245 | call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" | 255 | call :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 | ||
294 | cls | 304 | cls |
295 | mode 128, 32 | 305 | mode 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 | ||
298 | title Ohook Activation %masver% | 308 | title Ohook Activation %masver% |
299 | 309 | ||
300 | echo: | 310 | echo: |
301 | echo Initializing... | 311 | echo Initializing... |
312 | |||
313 | :: Check PowerShell | ||
314 | |||
315 | %psc% $ExecutionContext.SessionState.LanguageMode %nul2% | find /i "Full" %nul1% || ( | ||
316 | %eline% | ||
317 | %psc% $ExecutionContext.SessionState.LanguageMode | ||
318 | echo: | ||
319 | echo PowerShell is not working. Aborting... | ||
320 | echo If you have applied restrictions on Powershell then undo those changes. | ||
321 | echo: | ||
322 | echo Check this page for help. %mas%troubleshoot | ||
323 | goto dk_done | ||
324 | ) | ||
325 | |||
326 | ::======================================================================================================================================== | ||
327 | |||
302 | call :dk_product | 328 | call :dk_product |
303 | call :dk_ckeckwmic | 329 | call :dk_ckeckwmic |
304 | 330 | ||
@@ -353,8 +379,8 @@ set o16uwp= | |||
353 | 379 | ||
354 | set _68=HKLM\SOFTWARE\Microsoft\Office | 380 | set _68=HKLM\SOFTWARE\Microsoft\Office |
355 | set _86=HKLM\SOFTWARE\Wow6432Node\Microsoft\Office | 381 | set _86=HKLM\SOFTWARE\Wow6432Node\Microsoft\Office |
356 | %nul% reg query %_68%\14.0\Common\InstallRoot /v Path && set o14msi=Office 2010 MSI | 382 | for /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 | 383 | for /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 | ||
434 | echo "%o15c2r_reg%" | find /i "Wow6432Node" %nul1% && (set _tok=10) || (set _tok=9) | 460 | echo "%o15c2r_reg%" | find /i "Wow6432Node" %nul1% && (set _tok=10) || (set _tok=9) |
435 | for /f "tokens=%_tok% delims=\" %%a in ('reg query %o15c2r_reg%\ProductReleaseIDs\Active %nul6% ^| findstr /i "Retail Volume"') do ( | 461 | for /f "tokens=%_tok% delims=\" %%a in ('reg query %o15c2r_reg%\ProductReleaseIDs\Active %nul6% ^| findstr /i "Retail Volume"') do ( |
436 | if not defined _oIds (set "_oIds=%%a") else (set "_oIds=!_oIds! %%a") | 462 | echo "!_oIds!" | find /i " %%a " %nul1% || (set "_oIds= !_oIds! %%a ") |
437 | ) | 463 | ) |
438 | 464 | ||
439 | set "_oLPath=%_oRoot%\Licenses" | 465 | set "_oLPath=%_oRoot%\Licenses" |
466 | set "_oIntegrator=%_oRoot%\integration\integrator.exe" | ||
440 | 467 | ||
441 | if [%_oArch%]==[x64] (set "_hookPath=%_oRoot%\vfs\System" & set "_hook=sppc64.dll") | 468 | if [%_oArch%]==[x64] (set "_hookPath=%_oRoot%\vfs\System" & set "_hook=sppc64.dll") |
442 | if [%_oArch%]==[x86] (set "_hookPath=%_oRoot%\vfs\SystemX86" & set "_hook=sppc32.dll") | 469 | if [%_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 | ||
477 | echo "%o16c2r_reg%" | find /i "Wow6432Node" %nul1% && (set _tok=9) || (set _tok=8) | 504 | echo "%o16c2r_reg%" | find /i "Wow6432Node" %nul1% && (set _tok=9) || (set _tok=8) |
478 | for /f "tokens=%_tok% delims=\" %%a in ('reg query "%o16c2r_reg%\ProductReleaseIDs" /s /f ".16" /k %nul6% ^| findstr /i "Retail Volume"') do ( | 505 | for /f "tokens=%_tok% delims=\" %%a in ('reg query "%o16c2r_reg%\ProductReleaseIDs" /s /f ".16" /k %nul6% ^| findstr /i "Retail Volume"') do ( |
479 | if not defined _oIds (set "_oIds=%%a") else (set "_oIds=!_oIds! %%a") | 506 | echo "!_oIds!" | find /i " %%a " %nul1% || (set "_oIds= !_oIds! %%a ") |
480 | ) | 507 | ) |
481 | set _oIds=%_oIds:.16=% | 508 | set _oIds=%_oIds:.16=% |
482 | 509 | ||
483 | set "_oLPath=%_oRoot%\Licenses16" | 510 | set "_oLPath=%_oRoot%\Licenses16" |
511 | set "_oIntegrator=%_oRoot%\integration\integrator.exe" | ||
484 | 512 | ||
485 | if [%_oArch%]==[x64] (set "_hookPath=%_oRoot%\vfs\System" & set "_hook=sppc64.dll") | 513 | if [%_oArch%]==[x64] (set "_hookPath=%_oRoot%\vfs\System" & set "_hook=sppc64.dll") |
486 | if [%_oArch%]==[x86] (set "_hookPath=%_oRoot%\vfs\SystemX86" & set "_hook=sppc32.dll") | 514 | if [%_oArch%]==[x86] (set "_hookPath=%_oRoot%\vfs\SystemX86" & set "_hook=sppc32.dll") |
@@ -510,12 +538,16 @@ call :oh_hookinstall | |||
510 | 538 | ||
511 | set _sid= | 539 | set _sid= |
512 | set sub_next= | 540 | set sub_next= |
513 | for /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 | |
542 | for /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 | ||
515 | if not defined _sid ( | 544 | if not defined _sid ( |
516 | call :dk_color %Red% "Checking User Accounts SID [Not Found]" | 545 | call :dk_color %Red% "Checking User Accounts SID [Not Found]" |
517 | ) | 546 | ) |
518 | 547 | ||
548 | dir /b /s /a:-d "!_Local!\Microsoft\Office\Licenses\*" %nul% && set sub_next=1 | ||
549 | dir /b /s /a:-d "!ProgramData!\Microsoft\Office\Licenses\*" %nul% && set sub_next=1 | ||
550 | |||
519 | for %%# in (!_sid! HKCU) do if not defined sub_next ( | 551 | for %%# in (!_sid! HKCU) do if not defined sub_next ( |
520 | reg query %%#\Software\Microsoft\Office\16.0\Common\Licensing\LicensingNext /v MigrationToV5Done %nul2% | find /i "0x1" %nul% && ( | 552 | reg query %%#\Software\Microsoft\Office\16.0\Common\Licensing\LicensingNext /v MigrationToV5Done %nul2% | find /i "0x1" %nul% && ( |
521 | reg query %%#\Software\Microsoft\Office\16.0\Common\Licensing\LicensingNext %nul2% | findstr /i "volume retail" %nul2% | findstr /i "0x2 0x3" %nul% && ( | 553 | reg 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 | ||
527 | if defined sub_next for %%# in (!_sid! HKCU) do ( | 559 | if defined sub_next ( |
560 | rmdir /s /q "!_Local!\Microsoft\Office\Licenses\" %nul% | ||
561 | rmdir /s /q "!ProgramData!\Microsoft\Office\Licenses\" %nul% | ||
562 | for %%# in (!_sid! HKCU) do ( | ||
528 | reg delete %%#\Software\Microsoft\Office\16.0\Common\Licensing /f %nul% | 563 | reg delete %%#\Software\Microsoft\Office\16.0\Common\Licensing /f %nul% |
529 | reg delete %%#\Software\Microsoft\Office\16.0\Common\Identity /f %nul% | 564 | reg delete %%#\Software\Microsoft\Office\16.0\Common\Identity /f %nul% |
530 | reg delete %%#\Software\Microsoft\Office\16.0\Registration /f %nul% | 565 | reg delete %%#\Software\Microsoft\Office\16.0\Registration /f %nul% |
531 | ) | 566 | ) |
567 | ) | ||
532 | 568 | ||
533 | if defined sub_next echo Removing Office vNext Block [Successful] | 569 | if 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] | |||
540 | if defined o16c2r ( | 576 | if defined o16c2r ( |
541 | for %%# in (!_sid! HKCU) do (reg delete %%#\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency /f %nul%) | 577 | for %%# in (!_sid! HKCU) do (reg delete %%#\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency /f %nul%) |
542 | for %%# in (!_sid! HKCU) do ( | 578 | for %%# in (!_sid! HKCU) do ( |
543 | reg query %%# %nul% && ( | 579 | reg query "%%#\Volatile Environment" %nul% && ( |
544 | reg add %%#\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency /v "TimeOfLastHeartbeatFailure" /t REG_SZ /d "2040-01-01T00:00:00Z" /f %nul% | 580 | reg 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: | |||
671 | echo Deleting - Registry keys to skip license check | 707 | echo Deleting - Registry keys to skip license check |
672 | reg delete HKCU\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency /f | 708 | reg delete HKCU\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency /f |
673 | 709 | ||
674 | for /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")) | 710 | for /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")) |
675 | for %%# in (!_sid!) do (reg query HKU\%%#\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency %nul% && ( | 711 | for %%# in (!_sid!) do (reg query HKU\%%#\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency %nul% && ( |
676 | reg delete HKU\%%#\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency /f | 712 | reg 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" % | |||
740 | for /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) | 776 | for /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) |
741 | for /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) | 777 | for /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 | ||
743 | for /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) | 779 | for /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) |
744 | for /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) | 780 | for /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) |
745 | for /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) | 781 | for /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) |
746 | for /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) | 782 | for /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 | ||
748 | exit /b | 784 | exit /b |
749 | 785 | ||
@@ -778,7 +814,21 @@ exit /b | |||
778 | 814 | ||
779 | if not defined _oLPath exit /b | 815 | if not defined _oLPath exit /b |
780 | 816 | ||
781 | set _License=%_prod:XVolume=XC2RVL_% | 817 | if %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 | |||
823 | call :oh_actids | ||
824 | echo "!oapplist!" | find /i "!_actid!" %nul1% && ( | ||
825 | call :dk_color %Gray% "Installing Missing License Files [Office %oVer%.0 %_prod%] [Successful]" | ||
826 | exit /b | ||
827 | ) | ||
828 | |||
829 | :: Fallback to /ilc method to install licenses incase integrator.exe is not working | ||
830 | |||
831 | set _License=%_License:XVolume=XC2RVL_% | ||
782 | 832 | ||
783 | set _License=%_License:O365EduCloudRetail=O365EduCloudEDUR_% | 833 | set _License=%_License:O365EduCloudRetail=O365EduCloudEDUR_% |
784 | 834 | ||
@@ -787,6 +837,8 @@ set _License=%_License:ProjectStdRetail=ProjectStdO365R_% | |||
787 | set _License=%_License:VisioProRetail=VisioProO365R_% | 837 | set _License=%_License:VisioProRetail=VisioProO365R_% |
788 | set _License=%_License:VisioStdRetail=VisioStdO365R_% | 838 | set _License=%_License:VisioStdRetail=VisioStdO365R_% |
789 | 839 | ||
840 | if defined _preview set _License=%_License:Volume=PreviewVL_% | ||
841 | |||
790 | set _License=%_License:Retail=R_% | 842 | set _License=%_License:Retail=R_% |
791 | set _License=%_License:Volume=VL_% | 843 | set _License=%_License:Volume=VL_% |
792 | 844 | ||
@@ -800,9 +852,8 @@ cscript //nologo %windir%\system32\slmgr.vbs /ilc "!_oLPath!\%%~nx#" %nul% | |||
800 | ) | 852 | ) |
801 | 853 | ||
802 | call :oh_actids | 854 | call :oh_actids |
803 | |||
804 | echo "!oapplist!" | find /i "!_actid!" %nul1% && ( | 855 | echo "!oapplist!" | find /i "!_actid!" %nul1% && ( |
805 | call :dk_color %Gray% "Installing Missing License Files [Office %oVer%.0 %_prod%] [Successful]" | 856 | call :dk_color %Gray% "Installing Missing License Files [Office %oVer%.0 %_prod%] [Successful with /ilc Method]" |
806 | ) || ( | 857 | ) || ( |
807 | set error=1 | 858 | set error=1 |
808 | call :dk_color %Red% "Installing Missing License Files [Office %oVer%.0 %_prod%] [Failed]" | 859 | call :dk_color %Red% "Installing Missing License Files [Office %oVer%.0 %_prod%] [Failed]" |
@@ -866,17 +917,23 @@ for %%# in (%_oIds%) do ( | |||
866 | set _key= | 917 | set _key= |
867 | set _actid= | 918 | set _actid= |
868 | set _lic= | 919 | set _lic= |
869 | set _prod=%%# | 920 | set _preview= |
921 | set _License=%%# | ||
922 | |||
923 | echo %%# | find /i "2024" %nul% && ( | ||
924 | if exist "!_oLPath!\ProPlus2024PreviewVL_*.xrm-ms" if not exist "!_oLPath!\ProPlus2024VL_*.xrm-ms" set _preview=-Preview | ||
925 | ) | ||
926 | set _prod=%%#!_preview! | ||
870 | 927 | ||
871 | call :ohookdata getinfo %%# | 928 | call :ohookdata getinfo !_prod! |
872 | 929 | ||
873 | if not [!_key!]==[] ( | 930 | if not [!_key!]==[] ( |
874 | echo "!oapplist!" | find /i "!_actid!" %nul1% || call :oh_installlic | 931 | echo "!oapplist!" | find /i "!_actid!" %nul1% || call :oh_installlic |
875 | call :oh_installkey | 932 | call :oh_installkey |
876 | ) else ( | 933 | ) else ( |
877 | set error=1 | 934 | set error=1 |
878 | call :dk_color %Red% "Checking Product In Script [Office %oVer%.0 %%# not found in script]" | 935 | call :dk_color %Red% "Checking Product In Script [Office %oVer%.0 !_prod! not found in script]" |
879 | echo Make sure you are using Latest MAS script. | 936 | call :dk_color %Blue% "Make sure you are using Latest MAS script." |
880 | ) | 937 | ) |
881 | ) | 938 | ) |
882 | 939 | ||
@@ -1023,7 +1080,11 @@ set _corrupt= | |||
1023 | sc start %%# %nul% | 1080 | sc start %%# %nul% |
1024 | if !errorlevel! EQU 1060 set _corrupt=1 | 1081 | if !errorlevel! EQU 1060 set _corrupt=1 |
1025 | sc query %%# %nul% || set _corrupt=1 | 1082 | sc query %%# %nul% || set _corrupt=1 |
1026 | for %%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) | 1083 | for %%G in (DependOnService Description DisplayName ErrorControl ImagePath ObjectName Start Type) do if not defined _corrupt ( |
1084 | reg query HKLM\SYSTEM\CurrentControlSet\Services\%%# /v %%G %nul% || set _corrupt=1 | ||
1085 | if /i %%#==TrustedInstaller if /i %%G==DependOnService set _corrupt= | ||
1086 | ) | ||
1087 | |||
1027 | if defined _corrupt (if defined serv_cor (set "serv_cor=!serv_cor! %%#") else (set "serv_cor=%%#")) | 1088 | if 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 | ||
1050 | if defined serv_ste ( | 1111 | if defined serv_ste ( |
1051 | for %%# in (%serv_ste%) do ( | 1112 | for %%# in (%serv_ste%) do ( |
1052 | if /i %%#==ClipSVC (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "3" /f %nul% & sc config %%# start= demand %nul%) | 1113 | if /i %%#==ClipSVC (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "3" /f %nul% & sc config %%# start= demand %nul%) |
1053 | if /i %%#==wlidsvc sc config %%# start= demand %nul% | 1114 | if /i %%#==wlidsvc sc config %%# start= demand %nul% |
1054 | if /i %%#==sppsvc (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "2" /f %nul% & sc config %%# start= delayed-auto %nul%) | 1115 | if /i %%#==sppsvc (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "2" /f %nul% & sc config %%# start= delayed-auto %nul%) |
1055 | if /i %%#==KeyIso sc config %%# start= demand %nul% | 1116 | if /i %%#==KeyIso sc config %%# start= demand %nul% |
1056 | if /i %%#==LicenseManager sc config %%# start= demand %nul% | 1117 | if /i %%#==LicenseManager sc config %%# start= demand %nul% |
1057 | if /i %%#==Winmgmt sc config %%# start= auto %nul% | 1118 | if /i %%#==Winmgmt sc config %%# start= auto %nul% |
1058 | if /i %%#==wuauserv sc config %%# start= demand %nul% | 1119 | if /i %%#==DoSvc sc config %%# start= delayed-auto %nul% |
1120 | if /i %%#==UsoSvc sc config %%# start= delayed-auto %nul% | ||
1121 | if /i %%#==CryptSvc sc config %%# start= auto %nul% | ||
1122 | if /i %%#==BITS sc config %%# start= delayed-auto %nul% | ||
1123 | if /i %%#==wuauserv sc config %%# start= demand %nul% | ||
1124 | if /i %%#==WaaSMedicSvc sc config %%# start= demand %nul% | ||
1059 | if !errorlevel!==0 ( | 1125 | if !errorlevel!==0 ( |
1060 | if defined serv_csts (set "serv_csts=!serv_csts! %%#") else (set "serv_csts=%%#") | 1126 | if defined serv_csts (set "serv_csts=!serv_csts! %%#") else (set "serv_csts=%%#") |
1061 | ) else ( | 1127 | ) else ( |
@@ -1080,9 +1146,12 @@ set serv_e= | |||
1080 | for %%# in (%_serv%) do ( | 1146 | for %%# in (%_serv%) do ( |
1081 | set errorcode= | 1147 | set errorcode= |
1082 | set checkerror= | 1148 | set checkerror= |
1083 | net start %%# /y %nul% | 1149 | |
1150 | sc query %%# | find /i "RUNNING" %nul% || ( | ||
1151 | %psc% Start-Service %%# %nul% | ||
1084 | set errorcode=!errorlevel! | 1152 | set errorcode=!errorlevel! |
1085 | sc query %%# | find /i "RUNNING" %nul% || set checkerror=1 | 1153 | sc query %%# | find /i "RUNNING" %nul% || set checkerror=1 |
1154 | ) | ||
1086 | 1155 | ||
1087 | sc start %%# %nul% | 1156 | sc start %%# %nul% |
1088 | if !errorlevel! NEQ 1056 if !errorlevel! NEQ 0 (set errorcode=!errorlevel!&set checkerror=1) | 1157 | if !errorlevel! NEQ 1056 if !errorlevel! NEQ 0 (set errorcode=!errorlevel!&set checkerror=1) |
@@ -1093,7 +1162,7 @@ if defined serv_e ( | |||
1093 | set error=1 | 1162 | set error=1 |
1094 | call :dk_color %Red% "Starting Services [Failed] [%serv_e%]" | 1163 | call :dk_color %Red% "Starting Services [Failed] [%serv_e%]" |
1095 | echo %serv_e% | findstr /i "ClipSVC-1058 sppsvc-1058" %nul% && ( | 1164 | echo %serv_e% | findstr /i "ClipSVC-1058 sppsvc-1058" %nul% && ( |
1096 | call :dk_color %Blue% "Restart the system to fix disabled service error 1058." | 1165 | call :dk_color %Blue% "Restart the system to fix this error." |
1097 | set showfix=1 | 1166 | set showfix=1 |
1098 | ) | 1167 | ) |
1099 | ) | 1168 | ) |
@@ -1105,14 +1174,18 @@ set showfix=1 | |||
1105 | if defined safeboot_option ( | 1174 | if defined safeboot_option ( |
1106 | set error=1 | 1175 | set error=1 |
1107 | set showfix=1 | 1176 | set showfix=1 |
1108 | call :dk_color2 %Red% "Checking Boot Mode " %Blue% "[Safe mode found. Run in normal mode.]" | 1177 | call :dk_color2 %Red% "Checking Boot Mode [%safeboot_option%] " %Blue% "[Safe mode found. Run in normal mode.]" |
1109 | ) | 1178 | ) |
1110 | 1179 | ||
1111 | 1180 | ||
1112 | reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State" %nul2% | find /i "IMAGE_STATE_COMPLETE" %nul1% || ( | 1181 | for /f "skip=2 tokens=2*" %%A in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State" /v ImageState') do (set imagestate=%%B) |
1182 | if /i not "%imagestate%"=="IMAGE_STATE_COMPLETE" ( | ||
1113 | set error=1 | 1183 | set error=1 |
1184 | call :dk_color %Red% "Checking Windows Setup State [%imagestate%]" | ||
1185 | echo "%imagestate%" | find /i "RESEAL" %nul% && ( | ||
1114 | set showfix=1 | 1186 | set showfix=1 |
1115 | call :dk_color2 %Red% "Checking Audit Mode " %Blue% "[IMAGE_STATE_COMPLETE status not found. Run in normal mode.]" | 1187 | call :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% || ( | 1199 | set wpainfo= |
1200 | set wpaerror= | ||
1201 | for /f "delims=" %%a in ('%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':wpatest\:.*';iex ($f[1]);" %nul6%') do (set wpainfo=%%a) | ||
1202 | echo "%wpainfo%" | find /i "Error Found" %nul% && ( | ||
1127 | set error=1 | 1203 | set error=1 |
1128 | call :dk_color %Red% "Checking Powershell [Not Responding]" | 1204 | set wpaerror=1 |
1205 | call :dk_color %Red% "Checking WPA Registry Error [%wpainfo%]" | ||
1206 | ) || ( | ||
1207 | echo Checking WPA Registry Count [%wpainfo%] | ||
1129 | ) | 1208 | ) |
1130 | 1209 | ||
1131 | 1210 | ||
1132 | DISM /English /Online /Get-CurrentEdition %nul% | 1211 | DISM /English /Online /Get-CurrentEdition %nul% |
1133 | set dism_error=%errorlevel% | 1212 | set dism_error=%errorlevel% |
1134 | cmd /c exit /b %dism_error% | 1213 | cmd /c exit /b %dism_error% |
1135 | if %dism_error% NEQ 0 set "dism_error=[0x%=ExitCode%]" | 1214 | if %dism_error% NEQ 0 set "dism_error=0x%=ExitCode%" |
1136 | if %dism_error% NEQ 0 ( | 1215 | if %dism_error% NEQ 0 ( |
1137 | call :dk_color %Red% "Checking DISM [Not Responding] %dism_error%" | 1216 | call :dk_color %Red% "Checking DISM [Not Responding] [%dism_error%]" |
1217 | ) | ||
1218 | |||
1219 | |||
1220 | if not defined officeact if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" ( | ||
1221 | set error=1 | ||
1222 | set showfix=1 | ||
1223 | call :dk_color %Red% "Checking Eval Packages [Non-Eval Licenses are installed in Eval Windows]" | ||
1224 | call :dk_color %Blue% "Evaluation Windows can not be activated and different License install may lead to errors." | ||
1225 | call :dk_color %Blue% "It is recommended to install full version of %winos%." | ||
1226 | call :dk_color %Blue% "You can download it from %mas%genuine-installation-media.html" | ||
1227 | ) | ||
1228 | |||
1229 | |||
1230 | set osedition= | ||
1231 | for /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 | |||
1235 | if "%osSKU%"=="164" set osedition=ProfessionalEducation | ||
1236 | if "%osSKU%"=="165" set osedition=ProfessionalEducationN | ||
1237 | |||
1238 | if not defined officeact ( | ||
1239 | if not defined osedition ( | ||
1240 | call :dk_color %Red% "Checking Edition Name [Not Found In Registry]" | ||
1241 | ) else ( | ||
1242 | |||
1243 | if not exist "%SystemRoot%\System32\spp\tokens\skus\%osedition%\%osedition%*.xrm-ms" ( | ||
1244 | set error=1 | ||
1245 | call :dk_color %Red% "Checking License Files [Not Found] [%osedition%]" | ||
1246 | ) | ||
1247 | |||
1248 | if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*-%osedition%-*.mum" ( | ||
1249 | set error=1 | ||
1250 | call :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%" | ||
1286 | set /a "sum/=3" | ||
1287 | if not defined officeact if not "%sum%"=="%slcSKU%" ( | ||
1288 | call :dk_color %Red% "Checking SLC/WMI/REG SKU [Difference Found - SLC:%slcSKU% WMI:%wmiSKU% Reg:%regSKU%]" | ||
1289 | ) | ||
1290 | |||
1291 | |||
1170 | reg query "HKU\S-1-5-20\Software\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\PersistedTSReArmed" %nul% && ( | 1292 | reg query "HKU\S-1-5-20\Software\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\PersistedTSReArmed" %nul% && ( |
1171 | set error=1 | 1293 | set error=1 |
1172 | set showfix=1 | 1294 | set showfix=1 |
@@ -1184,8 +1306,7 @@ call :dk_color2 %Red% "Checking ClipSVC " %Blue% "[System | |||
1184 | for /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 ( | 1306 | for /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 ( |
1185 | reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "SkipRearm" /t REG_DWORD /d "0" /f %nul% | 1307 | reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "SkipRearm" /t REG_DWORD /d "0" /f %nul% |
1186 | call :dk_color %Red% "Checking SkipRearm [Default 0 Value Not Found. Changing To 0]" | 1308 | call :dk_color %Red% "Checking SkipRearm [Default 0 Value Not Found. Changing To 0]" |
1187 | net stop sppsvc /y %nul% | 1309 | %psc% Restart-Service sppsvc %nul% |
1188 | net start sppsvc /y %nul% | ||
1189 | set error=1 | 1310 | set error=1 |
1190 | ) | 1311 | ) |
1191 | 1312 | ||
@@ -1215,7 +1336,7 @@ call :dk_color %Gray% "Checking SPP Token Folder [Not Found. Creat | |||
1215 | 1336 | ||
1216 | call :dk_actids | 1337 | call :dk_actids |
1217 | if not defined applist ( | 1338 | if not defined applist ( |
1218 | net stop sppsvc /y %nul% | 1339 | %psc% Stop-Service sppsvc %nul% |
1219 | cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% | 1340 | cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% |
1220 | if !errorlevel! NEQ 0 cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% | 1341 | if !errorlevel! NEQ 0 cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% |
1221 | call :dk_refresh | 1342 | call :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 | ||
1245 | set wpaerror= | ||
1246 | set permerror= | 1366 | set permerror= |
1247 | if not defined serv_cor if not defined serv_cste if defined error if /i not %error_code%==0 if not defined showfix ( | ||
1248 | |||
1249 | REM This code checks for invalid registry keys in HKLM\SYSTEM\WPA. This issue may appear even on healthy systems. | ||
1250 | |||
1251 | if %winbuild% GEQ 14393 ( | ||
1252 | set /a count=0 | ||
1253 | for /f %%a in ('reg query "HKLM\SYSTEM\WPA" %nul6%') do set /a count+=1 | ||
1254 | for /L %%# in (1,1,!count!) do ( | ||
1255 | reg query "HKLM\SYSTEM\WPA\8DEC0AF1-0341-4b93-85CD-72606C2DF94C-7P-%%#" /ve /t REG_BINARY %nul% || set wpaerror=1 | ||
1256 | ) | ||
1257 | if defined wpaerror call :dk_color %Red% "Checking WPA Registry Keys [Error Found] [Registry Count - !count!]" | ||
1258 | ) | ||
1259 | |||
1260 | REM 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 | |||
1262 | if not exist "%tokenstore%\" set permerror=1 | 1367 | if not exist "%tokenstore%\" set permerror=1 |
1263 | 1368 | ||
1264 | for %%# in ( | 1369 | for %%# 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% |
1270 | if !errorlevel!==2 set permerror=1 | 1375 | if !errorlevel!==2 set permerror=1 |
1271 | ) | 1376 | ) |
1272 | if defined permerror call :dk_color %Red% "Checking SPP Permissions [Error Found]" | 1377 | if defined permerror ( |
1378 | set error=1 | ||
1379 | set showfix=1 | ||
1380 | call :dk_color %Red% "Checking SPP Permissions [Error Found]" | ||
1381 | call :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 | |||
1387 | if not defined serv_cor if not defined serv_cste if defined error if /i not %error_code%==0 if not defined showfix ( | ||
1274 | set showfix=1 | 1388 | set showfix=1 |
1275 | call :dk_color %Blue% "%_fixmsg%" | 1389 | call :dk_color %Blue% "%_fixmsg%" |
1276 | if not defined permerror call :dk_color %Blue% "If activation still fails then run Fix WPA Registry option." | 1390 | if not defined permerror call :dk_color %Blue% "If activation still fails then run Fix WPA Registry option." |
1277 | ) | 1391 | ) |
1278 | 1392 | ||
1393 | if not defined showfix if defined wpaerror ( | ||
1394 | set showfix=1 | ||
1395 | call :dk_color %Blue% "If activation fails then go back to Main Menu, select Troubleshoot and run Fix WPA Registry option." | ||
1396 | ) | ||
1397 | |||
1279 | exit /b | 1398 | exit /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 | |||
1409 | if ($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 ( | |||
1481 | 16_d55f90ee-4ba2-4d02-b216-1300ee50e2af_BW%f%43B-4P%f%NFP-V63%f%7F-23%f%TR2-J47%f%TX_MAK-AE________VisioStd2021Volume | 1636 | 16_d55f90ee-4ba2-4d02-b216-1300ee50e2af_BW%f%43B-4P%f%NFP-V63%f%7F-23%f%TR2-J47%f%TX_MAK-AE________VisioStd2021Volume |
1482 | 16_fb33d997-4aa3-494e-8b58-03e9ab0f181d_VN%f%CC4-CJ%f%QVK-BKX%f%34-77%f%Y8H-CYX%f%MR_Retail________Word2021Retail | 1637 | 16_fb33d997-4aa3-494e-8b58-03e9ab0f181d_VN%f%CC4-CJ%f%QVK-BKX%f%34-77%f%Y8H-CYX%f%MR_Retail________Word2021Retail |
1483 | 16_0c728382-95fb-4a55-8f12-62e605f91727_BJ%f%G97-NW%f%3GM-8QQ%f%Q7-FH%f%76G-686%f%XM_MAK-AE________Word2021Volume | 1638 | 16_0c728382-95fb-4a55-8f12-62e605f91727_BJ%f%G97-NW%f%3GM-8QQ%f%Q7-FH%f%76G-686%f%XM_MAK-AE________Word2021Volume |
1639 | 16_8fdb1f1e-663f-4f2e-8fdb-7c35aee7d5ea_GN%f%XWX-DF%f%797-B2J%f%T3-82%f%W27-KHP%f%XT_MAK-AE________ProPlus2024Volume-Preview | ||
1640 | 16_33b11b14-91fd-4f7b-b704-e64a055cf601_X8%f%6XX-N3%f%QMW-B4W%f%GQ-QC%f%B69-V26%f%KW_MAK_AE________ProjectPro2024Volume-Preview | ||
1641 | 16_eb074198-7384-4bdd-8e6c-c3342dac8435_DW%f%99Y-H7%f%NT6-6B2%f%9D-8J%f%Q8F-R3Q%f%T7_MAK_AE________VisioPro2024Volume-Preview | ||
1484 | 16_6337137e-7c07-4197-8986-bece6a76fc33_2P%f%3C9-BQ%f%NJH-VCV%f%PH-YD%f%Y6M-43J%f%PQ_Subscription__O365BusinessRetail | 1642 | 16_6337137e-7c07-4197-8986-bece6a76fc33_2P%f%3C9-BQ%f%NJH-VCV%f%PH-YD%f%Y6M-43J%f%PQ_Subscription__O365BusinessRetail |
1485 | 16_2f5c71b4-5b7a-4005-bb68-f9fac26f2ea3_W6%f%2NQ-26%f%7QR-RTF%f%74-PF%f%2MH-JQM%f%TH_Subscription__O365EduCloudRetail | 1643 | 16_2f5c71b4-5b7a-4005-bb68-f9fac26f2ea3_W6%f%2NQ-26%f%7QR-RTF%f%74-PF%f%2MH-JQM%f%TH_Subscription__O365EduCloudRetail |
1486 | 16_537ea5b5-7d50-4876-bd38-a53a77caca32_J2%f%W28-TN%f%9C8-26P%f%WV-F7%f%J4G-72X%f%CB_Subscription1_O365HomePremRetail | 1644 | 16_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 | ||
1519 | set _blank= | 1677 | set 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 |
1521 | exit /b | 1679 | exit /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% | |||
248 | echo ________________________________________________ | 248 | echo ________________________________________________ |
249 | echo: | 249 | echo: |
250 | if not defined _unattended ( | 250 | if not defined _unattended ( |
251 | echo [1] Download Latest MAS | 251 | echo [1] Get Latest MAS |
252 | echo [0] Continue Anyway | 252 | echo [0] Continue Anyway |
253 | echo: | 253 | echo: |
254 | call :_color %_Green% "Enter a menu option in the Keyboard [1,0] :" | 254 | call :_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 ________________________________________________ | |||
230 | echo You are running outdated version MAS %masver% | 230 | echo You are running outdated version MAS %masver% |
231 | echo ________________________________________________ | 231 | echo ________________________________________________ |
232 | echo: | 232 | echo: |
233 | echo [1] Download Latest MAS | 233 | echo [1] Get Latest MAS |
234 | echo [0] Continue Anyway | 234 | echo [0] Continue Anyway |
235 | echo: | 235 | echo: |
236 | call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" | 236 | call :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 | 285 | call :dk_checksku |
286 | |||
287 | set osSKU= | ||
288 | set slcSKU= | ||
289 | set wmiSKU= | ||
290 | |||
291 | if %winbuild% GEQ 14393 (set info=Kernel-BrandingInfo) else (set info=Kernel-ProductInfo) | ||
292 | set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('SLGetWindowsInformationDWORD', 'slc.dll', 'Public, Static', 1, [int], @([String], [int].MakeByRefType()), 1, 3); | ||
293 | set d1=%d1% $Sku = 0; [void]$TypeBuilder.CreateType()::SLGetWindowsInformationDWORD('%info%', [ref]$Sku); $Sku | ||
294 | for /f "delims=" %%s in ('"%psc% %d1%"') do if not errorlevel 1 (set slcSKU=%%s) | ||
295 | if "%slcSKU%"=="0" set slcSKU= | ||
296 | if 1%slcSKU% NEQ +1%slcSKU% set slcSKU= | ||
297 | |||
298 | if %_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" | ||
299 | if %_wmic% EQU 0 for /f "tokens=1" %%a in ('%psc% "([WMI]'Win32_OperatingSystem=@').OperatingSystemSKU" %nul6%') do if not errorlevel 1 set "wmiSKU=%%a" | ||
300 | |||
301 | set osSKU=%slcSKU% | ||
302 | if not defined osSKU set osSKU=%wmiSKU% | ||
303 | 286 | ||
304 | if not defined osSKU ( | 287 | if not defined osSKU ( |
305 | %eline% | 288 | %eline% |
@@ -324,7 +307,7 @@ if not defined osedition ( | |||
324 | for /f "skip=2 tokens=3" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul6%') do set "osedition=%%a" | 307 | for /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 | ||
329 | if %osSKU%==164 set osedition=ProfessionalEducation | 312 | if %osSKU%==164 set osedition=ProfessionalEducation |
330 | if %osSKU%==165 set osedition=ProfessionalEducationN | 313 | if %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% |
357 | echo PowerShell is not responding properly. Aborting... | 340 | %psc% $ExecutionContext.SessionState.LanguageMode |
341 | echo: | ||
342 | echo PowerShell is not working. Aborting... | ||
343 | echo If you have applied restrictions on Powershell then undo those changes. | ||
358 | echo: | 344 | echo: |
359 | echo Check this page for help. %mas%troubleshoot | 345 | echo Check this page for help. %mas%troubleshoot |
360 | goto ced_done | 346 | goto ced_done |
@@ -654,6 +640,31 @@ exit /b | |||
654 | 640 | ||
655 | ::======================================================================================================================================== | 641 | ::======================================================================================================================================== |
656 | 642 | ||
643 | :: Check SKU value | ||
644 | |||
645 | :dk_checksku | ||
646 | |||
647 | set osSKU= | ||
648 | set slcSKU= | ||
649 | set wmiSKU= | ||
650 | set regSKU= | ||
651 | |||
652 | if %winbuild% GEQ 14393 (set info=Kernel-BrandingInfo) else (set info=Kernel-ProductInfo) | ||
653 | set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('SLGetWindowsInformationDWORD', 'slc.dll', 'Public, Static', 1, [int], @([String], [int].MakeByRefType()), 1, 3); | ||
654 | set d1=%d1% $Sku = 0; [void]$TypeBuilder.CreateType()::SLGetWindowsInformationDWORD('%info%', [ref]$Sku); $Sku | ||
655 | for /f "delims=" %%s in ('"%psc% %d1%"') do if not errorlevel 1 (set slcSKU=%%s) | ||
656 | if "%slcSKU%"=="0" set slcSKU= | ||
657 | if 1%slcSKU% NEQ +1%slcSKU% set slcSKU= | ||
658 | |||
659 | for /f "tokens=3 delims=." %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions" /v OSProductPfn %nul6%') do set "regSKU=%%a" | ||
660 | if %_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" | ||
661 | if %_wmic% EQU 0 for /f "tokens=1" %%a in ('%psc% "([WMI]'Win32_OperatingSystem=@').OperatingSystemSKU" %nul6%') do if not errorlevel 1 set "wmiSKU=%%a" | ||
662 | |||
663 | set osSKU=%slcSKU% | ||
664 | if not defined osSKU set osSKU=%wmiSKU% | ||
665 | if not defined osSKU set osSKU=%regSKU% | ||
666 | exit /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 ________________________________________________ | |||
222 | echo You are running outdated version MAS %masver% | 222 | echo You are running outdated version MAS %masver% |
223 | echo ________________________________________________ | 223 | echo ________________________________________________ |
224 | echo: | 224 | echo: |
225 | echo [1] Download Latest MAS | 225 | echo [1] Get Latest MAS |
226 | echo [0] Continue Anyway | 226 | echo [0] Continue Anyway |
227 | echo: | 227 | echo: |
228 | call :ex_color %_Green% "Enter a menu option in the Keyboard [1,0] :" | 228 | call :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 ________________________________________________ | |||
208 | echo You are running outdated version MAS %masver% | 208 | echo You are running outdated version MAS %masver% |
209 | echo ________________________________________________ | 209 | echo ________________________________________________ |
210 | echo: | 210 | echo: |
211 | echo [1] Download Latest MAS | 211 | echo [1] Get Latest MAS |
212 | echo [0] Continue Anyway | 212 | echo [0] Continue Anyway |
213 | echo: | 213 | echo: |
214 | call :_color %_Green% "Enter a menu option in the Keyboard [1,0] :" | 214 | call :_color %_Green% "Enter a menu option in the Keyboard [1,0] :" |
@@ -323,7 +323,7 @@ if %errorlevel%==1 goto at_menu | |||
323 | 323 | ||
324 | cls | 324 | cls |
325 | mode 110, 30 | 325 | mode 110, 30 |
326 | call :_stopservice TrustedInstaller | 326 | %psc% Stop-Service TrustedInstaller -force %nul% |
327 | 327 | ||
328 | set _time= | 328 | set _time= |
329 | for /f %%a in ('%psc% "Get-Date -format HH_mm_ss"') do set _time=%%a | 329 | for /f %%a in ('%psc% "Get-Date -format HH_mm_ss"') do set _time=%%a |
@@ -332,7 +332,7 @@ echo Applying the command, | |||
332 | echo dism /english /online /cleanup-image /restorehealth | 332 | echo dism /english /online /cleanup-image /restorehealth |
333 | dism /english /online /cleanup-image /restorehealth | 333 | dism /english /online /cleanup-image /restorehealth |
334 | 334 | ||
335 | call :_stopservice TrustedInstaller | 335 | %psc% Stop-Service TrustedInstaller -force %nul% |
336 | 336 | ||
337 | if not exist "!desktop!\AT_Logs\" md "!desktop!\AT_Logs\" %nul% | 337 | if 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 : " | |||
375 | if %errorlevel%==1 goto at_menu | 375 | if %errorlevel%==1 goto at_menu |
376 | 376 | ||
377 | cls | 377 | cls |
378 | call :_stopservice TrustedInstaller | 378 | %psc% Stop-Service TrustedInstaller -force %nul% |
379 | 379 | ||
380 | set _time= | 380 | set _time= |
381 | for /f %%a in ('%psc% "Get-Date -format HH_mm_ss"') do set _time=%%a | 381 | for /f %%a in ('%psc% "Get-Date -format HH_mm_ss"') do set _time=%%a |
@@ -384,7 +384,7 @@ echo Applying the command, | |||
384 | echo sfc /scannow | 384 | echo sfc /scannow |
385 | sfc /scannow | 385 | sfc /scannow |
386 | 386 | ||
387 | call :_stopservice TrustedInstaller | 387 | %psc% Stop-Service TrustedInstaller -force %nul% |
388 | 388 | ||
389 | if not exist "!desktop!\AT_Logs\" md "!desktop!\AT_Logs\" %nul% | 389 | if not exist "!desktop!\AT_Logs\" md "!desktop!\AT_Logs\" %nul% |
390 | 390 | ||
@@ -455,7 +455,7 @@ goto :cleanvnext | |||
455 | ) | 455 | ) |
456 | 456 | ||
457 | echo Stopping ClipSVC service... | 457 | echo Stopping ClipSVC service... |
458 | call :_stopservice ClipSVC | 458 | %psc% Stop-Service ClipSVC -force %nul% |
459 | timeout /t 2 %nul% | 459 | timeout /t 2 %nul% |
460 | 460 | ||
461 | echo: | 461 | echo: |
@@ -505,7 +505,7 @@ call :_color %Red% "[Failed]" | |||
505 | echo [Successful] | 505 | echo [Successful] |
506 | ) | 506 | ) |
507 | 507 | ||
508 | call :_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 | ||
523 | echo: | 523 | echo: |
524 | echo Rebuilding Folder %ProgramData%\Microsoft\Windows\ClipSVC\ | 524 | echo Rebuilding Folder %ProgramData%\Microsoft\Windows\ClipSVC\ |
525 | net start ClipSVC /y %nul% | 525 | %psc% Start-Service ClipSVC %nul% |
526 | timeout /t 3 %nul% | 526 | timeout /t 3 %nul% |
527 | if not exist "%ProgramData%\Microsoft\Windows\ClipSVC\" timeout /t 5 %nul% | 527 | if not exist "%ProgramData%\Microsoft\Windows\ClipSVC\" timeout /t 5 %nul% |
528 | if not exist "%ProgramData%\Microsoft\Windows\ClipSVC\" ( | 528 | if not exist "%ProgramData%\Microsoft\Windows\ClipSVC\" ( |
@@ -534,7 +534,7 @@ echo [Successful] | |||
534 | 534 | ||
535 | echo: | 535 | echo: |
536 | echo Restarting [wlidsvc LicenseManager] services... | 536 | echo Restarting [wlidsvc LicenseManager] services... |
537 | for %%# in (wlidsvc LicenseManager) do (net stop %%# /y %nul% & net start %%# /y %nul%) | 537 | for %%# 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 | ||
582 | echo: | 582 | echo: |
583 | for /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")) | 583 | for /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 | ||
585 | set regfound= | 585 | set regfound= |
586 | for %%# in (HKCU !_sid!) do ( | 586 | for %%# in (HKCU !_sid!) do ( |
@@ -619,19 +619,13 @@ call :_color %Red% "tokens.dat file not found." | |||
619 | echo tokens.dat file: [%token%] | 619 | echo tokens.dat file: [%token%] |
620 | ) | 620 | ) |
621 | 621 | ||
622 | if %winbuild% GEQ 14393 ( | ||
623 | set wpaerror= | ||
624 | set /a count=0 | ||
625 | for /f %%a in ('reg query "HKLM\SYSTEM\WPA" %nul6%') do set /a count+=1 | ||
626 | for /L %%# in (1,1,!count!) do ( | ||
627 | reg query "HKLM\SYSTEM\WPA\8DEC0AF1-0341-4b93-85CD-72606C2DF94C-7P-%%#" /ve /t REG_BINARY %nul% || set wpaerror=1 | ||
628 | ) | ||
629 | |||
630 | if defined wpaerror ( | ||
631 | echo: | 622 | echo: |
632 | echo Checking WPA Registry Keys... | 623 | set wpainfo= |
633 | call :_color %Red% "[Error Found] [Registry Count - !count!]" | 624 | for /f "delims=" %%a in ('%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':wpatest\:.*';iex ($f[1]);" %nul6%') do (set wpainfo=%%a) |
634 | ) | 625 | echo "%wpainfo%" | find /i "Error Found" %nul% && ( |
626 | call :_color %Red% "WPA Registry Error: %wpainfo%" | ||
627 | ) || ( | ||
628 | echo WPA Registry Count: %wpainfo% | ||
635 | ) | 629 | ) |
636 | 630 | ||
637 | set tokenstore= | 631 | set tokenstore= |
@@ -679,7 +673,7 @@ echo [No Error Found] | |||
679 | 673 | ||
680 | echo: | 674 | echo: |
681 | echo Stopping sppsvc service... | 675 | echo Stopping sppsvc service... |
682 | call :_stopservice sppsvc | 676 | %psc% Stop-Service sppsvc -force %nul% |
683 | 677 | ||
684 | echo: | 678 | echo: |
685 | call :scandat delete | 679 | call :scandat delete |
@@ -736,7 +730,7 @@ echo tokens.dat file: [%token%] | |||
736 | 730 | ||
737 | echo: | 731 | echo: |
738 | echo Stopping osppsvc service... | 732 | echo Stopping osppsvc service... |
739 | call :_stopservice osppsvc | 733 | %psc% Stop-Service osppsvc -force %nul% |
740 | 734 | ||
741 | echo: | 735 | echo: |
742 | call :scandatospp delete | 736 | call :scandatospp delete |
@@ -750,11 +744,11 @@ echo: | |||
750 | 744 | ||
751 | echo: | 745 | echo: |
752 | echo Starting osppsvc service to generate tokens.dat | 746 | echo Starting osppsvc service to generate tokens.dat |
753 | call :_startservice osppsvc | 747 | %psc% Start-Service osppsvc %nul% |
754 | call :scandatospp check | 748 | call :scandatospp check |
755 | if not defined token ( | 749 | if not defined token ( |
756 | call :_stopservice osppsvc | 750 | %psc% Stop-Service osppsvc -force %nul% |
757 | call :_startservice osppsvc | 751 | %psc% Start-Service osppsvc %nul% |
758 | timeout /t 3 %nul% | 752 | timeout /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% | |||
801 | set _68=HKLM\SOFTWARE\Microsoft\Office | 795 | set _68=HKLM\SOFTWARE\Microsoft\Office |
802 | set _86=HKLM\SOFTWARE\Wow6432Node\Microsoft\Office | 796 | set _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") | 798 | reg 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") | 799 | reg 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") | 801 | for /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") | 802 | for /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") | 803 | for /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=") | 804 | for /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=") | 805 | for /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") | 806 | for /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") | 808 | for /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") | 809 | for /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") |
810 | for /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") | ||
811 | for /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 | ||
817 | set uwp16= | 813 | set uwp16= |
818 | if %winbuild% GEQ 10240 ( | 814 | if %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 | ||
940 | if defined error ( | 936 | if defined error ( |
941 | call :_stopservice Winmgmt | 937 | %psc% Stop-Service Winmgmt -force %nul% |
942 | winmgmt /salvagerepository %nul% | 938 | winmgmt /salvagerepository %nul% |
943 | call :checkwmi | 939 | call :checkwmi |
944 | ) | 940 | ) |
@@ -976,9 +972,9 @@ goto :at_back | |||
976 | 972 | ||
977 | echo: | 973 | echo: |
978 | echo Stopping Winmgmt service | 974 | echo Stopping Winmgmt service |
979 | call :_stopservice Winmgmt | 975 | %psc% Stop-Service Winmgmt -force %nul% |
980 | call :_stopservice Winmgmt | 976 | %psc% Stop-Service Winmgmt -force %nul% |
981 | call :_stopservice Winmgmt | 977 | %psc% Stop-Service Winmgmt -force %nul% |
982 | sc query Winmgmt | find /i "STOPPED" %nul% && ( | 978 | sc query Winmgmt | find /i "STOPPED" %nul% && ( |
983 | echo [Successful] | 979 | echo [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 | ||
1045 | call :_stopservice Winmgmt | 1041 | %psc% Stop-Service Winmgmt -force %nul% |
1046 | cd /d %systemroot%\system32\wbem\ | 1042 | cd /d %systemroot%\system32\wbem\ |
1047 | regsvr32 /s %systemroot%\system32\scecli.dll | 1043 | regsvr32 /s %systemroot%\system32\scecli.dll |
1048 | regsvr32 /s %systemroot%\system32\userenv.dll | 1044 | regsvr32 /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 | ||
1133 | for %%# in (%1) do ( | 1129 | :wpatest: |
1134 | sc query %%# | find /i "STOPPED" %nul% || net stop %%# /y %nul% | 1130 | $wpaKey = [Microsoft.Win32.RegistryKey]::OpenBaseKey('LocalMachine', 'Registry64').OpenSubKey("SYSTEM\\WPA") |
1135 | sc query %%# | find /i "STOPPED" %nul% || sc stop %%# %nul% | 1131 | $count = $wpaKey.SubKeyCount |
1136 | ) | 1132 | |
1137 | exit /b | 1133 | $osVersion = [System.Environment]::OSVersion.Version |
1138 | 1134 | $minBuildNumber = 14393 | |
1139 | :_startservice | 1135 | |
1140 | 1136 | if ($osVersion.Build -ge $minBuildNumber) { | |
1141 | for %%# in (%1) do ( | 1137 | $subkeyHashTable = @{} |
1142 | sc query %%# | find /i "RUNNING" %nul% || net start %%# /y %nul% | 1138 | foreach ($subkeyName in $wpaKey.GetSubKeyNames()) { |
1143 | sc query %%# | find /i "RUNNING" %nul% || sc start %%# %nul% | 1139 | $keyNumber = $subkeyName -replace '.*-', '' |
1144 | ) | 1140 | $subkeyHashTable[$keyNumber] = $true |
1145 | exit /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 | ||
@@ -5,8 +5,6 @@ | |||
5 | <p align="center">A Windows and Office activator using HWID / Ohook / KMS38 / Online KMS activation methods, with a focus on open-source code and fewer antivirus detections.</p> | 5 | <p align="center">A Windows and Office activator using HWID / Ohook / KMS38 / Online KMS activation methods, with a focus on open-source code and fewer antivirus detections.</p> |
6 | <hr> | 6 | <hr> |
7 | 7 | ||
8 | ### Note: HWID Activation is working again with a new method. | ||
9 | |||
10 | ## Download / How to use it? | 8 | ## Download / How to use it? |
11 | 9 | ||
12 | ### Method 1 - PowerShell (Recommended) | 10 | ### Method 1 - PowerShell (Recommended) |
@@ -29,8 +27,8 @@ | |||
29 | To run the scripts in unattended mode, check [here](https://massgrave.dev/command_line_switches.html) | 27 | To run the scripts in unattended mode, check [here](https://massgrave.dev/command_line_switches.html) |
30 | 28 | ||
31 | ``` | 29 | ``` |
32 | Latest Version: 2.4 | 30 | Latest Version: 2.5 |
33 | Release date: 21-Oct-2023 | 31 | Release date: 16-Nov-2023 |
34 | ``` | 32 | ``` |
35 | 33 | ||
36 | ### [Troubleshooting / Help](https://massgrave.dev/troubleshoot.html) | 34 | ### [Troubleshooting / Help](https://massgrave.dev/troubleshoot.html) |