parent
4b8a769f54
commit
3c4f8796fa
File diff suppressed because it is too large
Load Diff
|
@ -62,7 +62,7 @@ pushd "%~dp0"
|
||||||
>nul findstr /rxc:".*" "%~nx0"
|
>nul findstr /rxc:".*" "%~nx0"
|
||||||
if not %errorlevel%==0 (
|
if not %errorlevel%==0 (
|
||||||
echo:
|
echo:
|
||||||
echo Error: This is not a correct file. It has LF line ending issue.
|
echo Error: Script either has LF line ending issue, or it failed to read itself.
|
||||||
echo:
|
echo:
|
||||||
ping 127.0.0.1 -n 6 > nul
|
ping 127.0.0.1 -n 6 > nul
|
||||||
popd
|
popd
|
||||||
|
@ -131,14 +131,15 @@ if %~z0 GEQ 200000 (set "_exitmsg=Go back") else (set "_exitmsg=Exit")
|
||||||
if %winbuild% LSS 10240 (
|
if %winbuild% LSS 10240 (
|
||||||
%eline%
|
%eline%
|
||||||
echo Unsupported OS version detected.
|
echo Unsupported OS version detected.
|
||||||
echo Project is supported for Windows 10/11.
|
echo HWID Activation is supported only for Windows 10/11.
|
||||||
|
echo Use Online KMS Activation option.
|
||||||
goto dk_done
|
goto dk_done
|
||||||
)
|
)
|
||||||
|
|
||||||
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" (
|
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" (
|
||||||
%eline%
|
%eline%
|
||||||
echo HWID Activation is not supported for Windows Server.
|
echo HWID Activation is not supported for Windows Server.
|
||||||
echo Use KMS38 or KMS Activation.
|
echo Use KMS38 or Online KMS Activation option.
|
||||||
goto dk_done
|
goto dk_done
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -192,7 +193,7 @@ goto dk_done
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
cls
|
cls
|
||||||
mode 102, 33
|
mode 102, 34
|
||||||
title HWID Activation
|
title HWID Activation
|
||||||
|
|
||||||
echo:
|
echo:
|
||||||
|
@ -237,9 +238,12 @@ if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum"
|
||||||
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID 2>nul | find /i "Eval" 1>nul && (
|
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID 2>nul | find /i "Eval" 1>nul && (
|
||||||
%eline%
|
%eline%
|
||||||
echo [%winos% ^| %winbuild%]
|
echo [%winos% ^| %winbuild%]
|
||||||
echo Evaluation Editions cannot be activated. Download ^& Install full version of Windows OS.
|
|
||||||
echo:
|
echo:
|
||||||
echo https://massgrave.dev/
|
echo Evaluation Editions cannot be activated.
|
||||||
|
echo You need to install full version of %winos%
|
||||||
|
echo:
|
||||||
|
echo Download it from here,
|
||||||
|
echo https://massgrave.dev/genuine-installation-media.html
|
||||||
goto dk_done
|
goto dk_done
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -269,28 +273,29 @@ goto dk_done
|
||||||
|
|
||||||
set error=
|
set error=
|
||||||
|
|
||||||
:: Check Internet connection
|
|
||||||
|
|
||||||
cls
|
cls
|
||||||
echo:
|
echo:
|
||||||
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE') do set arch=%%b
|
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE') do set arch=%%b
|
||||||
echo Checking OS Info [%winos% ^| %winbuild% ^| %arch%]
|
echo Checking OS Info [%winos% ^| %winbuild% ^| %arch%]
|
||||||
|
|
||||||
set _intcon=
|
:: Check Internet connection
|
||||||
for /f "delims=[] tokens=2" %%# in ('ping -n 1 licensing.mp.microsoft.com') do if not [%%#]==[] set _intcon=1
|
|
||||||
|
|
||||||
%psc% "$t = New-Object Net.Sockets.TcpClient;try{$t.Connect("""licensing.mp.microsoft.com""", 443)}catch{};$t.Connected" | findstr /i true 1>nul
|
set _int=
|
||||||
if %errorlevel% EQU 0 (
|
for %%a in (l.root-servers.net resolver1.opendns.com download.windowsupdate.com google.com) do if not defined _int (
|
||||||
|
for /f "delims=[] tokens=2" %%# in ('ping -n 1 %%a') do (if not [%%#]==[] set _int=1)
|
||||||
|
)
|
||||||
|
|
||||||
|
if not defined _int (
|
||||||
|
%psc% "If([Activator]::CreateInstance([Type]::GetTypeFromCLSID([Guid]'{DCB00C01-570F-4A9B-8D69-199FDBA5723B}')).IsConnectedToInternet){Exit 0}Else{Exit 1}"
|
||||||
|
if !errorlevel!==0 set _int=1
|
||||||
|
)
|
||||||
|
|
||||||
|
if defined _int (
|
||||||
echo Checking Internet Connection [Connected]
|
echo Checking Internet Connection [Connected]
|
||||||
) else (
|
) else (
|
||||||
set error=1
|
set error=1
|
||||||
if defined _intcon (
|
|
||||||
call :dk_color %Red% "Checking Internet Connection [Internet Found But Cant Connect licensing.mp.microsoft.com]"
|
|
||||||
call :dk_color %Magenta% "Make sure restricted Internet [Office/College] is not connected and URL is not blocked in the system"
|
|
||||||
) else (
|
|
||||||
call :dk_color %Red% "Checking Internet Connection [Not Connected]"
|
call :dk_color %Red% "Checking Internet Connection [Not Connected]"
|
||||||
)
|
)
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
@ -311,17 +316,42 @@ echo Enabling Windows Script Host [Successful]
|
||||||
|
|
||||||
echo Initiating Diagnostic Tests...
|
echo Initiating Diagnostic Tests...
|
||||||
|
|
||||||
set "_serv=ClipSVC wlidsvc sppsvc LicenseManager Winmgmt wuauserv"
|
set "_serv=ClipSVC wlidsvc sppsvc KeyIso LicenseManager Winmgmt wuauserv"
|
||||||
|
|
||||||
:: Client License Service (ClipSVC)
|
:: Client License Service (ClipSVC)
|
||||||
:: Microsoft Account Sign-in Assistant
|
:: Microsoft Account Sign-in Assistant
|
||||||
:: Software Protection
|
:: Software Protection
|
||||||
|
:: CNG Key Isolation
|
||||||
:: Windows License Manager Service
|
:: Windows License Manager Service
|
||||||
:: Windows Management Instrumentation
|
:: Windows Management Instrumentation
|
||||||
:: Windows Update
|
:: Windows Update
|
||||||
|
|
||||||
call :dk_errorcheck
|
call :dk_errorcheck
|
||||||
|
|
||||||
|
:: Check Windows updates and store app blockers
|
||||||
|
|
||||||
|
set updatesblock=
|
||||||
|
echo: %serv_ste% | findstr /i "wuauserv" %nul% && set updatesblock=1
|
||||||
|
for /f "skip=2 tokens=2*" %%a in ('reg query HKLM\SYSTEM\CurrentControlSet\Services\UsoSvc /v Start 2^>nul') do if /i %%b equ 0x4 set updatesblock=1
|
||||||
|
if exist "%SystemRoot%\System32\WaaSMedicSvc.dll" (
|
||||||
|
for /f "skip=2 tokens=2*" %%a in ('reg query HKLM\SYSTEM\CurrentControlSet\Services\WaaSMedicSvc /v Start 2^>nul') do if /i %%b equ 0x4 set updatesblock=1
|
||||||
|
)
|
||||||
|
|
||||||
|
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer /v SettingsPageVisibility 2>nul | find /i "windowsupdate" %nul% && set updatesblock=1
|
||||||
|
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdateSysprepInProgress %nul% && set updatesblock=1
|
||||||
|
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate /s 2>nul | findstr /i "NoAutoUpdate DisableWindowsUpdateAccess" %nul% && set updatesblock=1
|
||||||
|
|
||||||
|
if defined updatesblock (
|
||||||
|
call :dk_color %Gray% "Checking Windows Update Blockers [Found]"
|
||||||
|
if defined applist echo: %serv_e% | find /i "wuauserv" %nul% && (
|
||||||
|
call :dk_color %Magenta% "Windows Update Service [wuauserv] is not working. Enable it incase if you have disabled it."
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
reg query "HKLM\SOFTWARE\Policies\Microsoft\WindowsStore" /v DisableStoreApps 2>nul | find /i "0x1" %nul% && (
|
||||||
|
call :dk_color %Gray% "Checking Store App Blocker [Found]"
|
||||||
|
)
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:: Detect Key
|
:: Detect Key
|
||||||
|
@ -347,7 +377,8 @@ if defined altkey (set key=%altkey%&set changekey=1&set notworking=)
|
||||||
if defined notworking if defined notfoundaltactID (
|
if defined notworking if defined notfoundaltactID (
|
||||||
call :dk_color %Red% "Checking Alternate Edition For HWID [%altedition% Activation ID Not Found]"
|
call :dk_color %Red% "Checking Alternate Edition For HWID [%altedition% Activation ID Not Found]"
|
||||||
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" (
|
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" (
|
||||||
call :dk_color %Magenta% "Evaluation Windows Found. Install Full version of Windows. https://massgrave.dev/"
|
call :dk_color %Magenta% "Evaluation Windows Found. Install Full version of %winos%"
|
||||||
|
call :dk_color %Magenta% "Download it from https://massgrave.dev/genuine-installation-media.html"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -361,6 +392,8 @@ echo:
|
||||||
goto dk_done
|
goto dk_done
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if defined notworking set error=1
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:: Install key
|
:: Install key
|
||||||
|
@ -382,9 +415,13 @@ if %errorcode% EQU 0 (
|
||||||
call :dk_refresh
|
call :dk_refresh
|
||||||
echo Installing Generic Product Key [%key%] [Successful]
|
echo Installing Generic Product Key [%key%] [Successful]
|
||||||
) else (
|
) else (
|
||||||
set error=1
|
|
||||||
call :dk_color %Red% "Installing Generic Product Key [%key%] [Failed] %errorcode%"
|
call :dk_color %Red% "Installing Generic Product Key [%key%] [Failed] %errorcode%"
|
||||||
if defined applist if defined actidnotfound call :dk_color %Red% "Activation ID not found for this key. Make sure you are using updated version of MAS."
|
if not defined error (
|
||||||
|
call :dk_color %Magenta% "In MAS, Goto Troubleshoot and run Fix Licensing option."
|
||||||
|
if defined actidnotfound call :dk_color %Red% "Activation ID not found for this key. Make sure you are using updated version of MAS."
|
||||||
|
set showfix=1
|
||||||
|
)
|
||||||
|
set error=1
|
||||||
)
|
)
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
@ -397,7 +434,7 @@ for /f "skip=2 tokens=2*" %%a in ('reg query "HKCU\Control Panel\International\G
|
||||||
set regionchange=
|
set regionchange=
|
||||||
if not "%name%"=="US" (
|
if not "%name%"=="US" (
|
||||||
set regionchange=1
|
set regionchange=1
|
||||||
%psc% Set-WinHomeLocation -GeoId 244
|
%psc% "Set-WinHomeLocation -GeoId 244" %nul%
|
||||||
if !errorlevel! EQU 0 (
|
if !errorlevel! EQU 0 (
|
||||||
echo Changing Windows Region To USA [Successful]
|
echo Changing Windows Region To USA [Successful]
|
||||||
) else (
|
) else (
|
||||||
|
@ -408,14 +445,15 @@ call :dk_color %Red% "Changing Windows Region To USA [Failed]"
|
||||||
::==========================================================================================================================================
|
::==========================================================================================================================================
|
||||||
|
|
||||||
:: Generate GenuineTicket.xml and apply
|
:: Generate GenuineTicket.xml and apply
|
||||||
:: Most correct way to apply a ticket is by restarting ClipSVC service but we can not check the log details in this way
|
:: In some cases clipup -v -o method fails and in some cases service restart method fails as well
|
||||||
:: To get the log details and also to correctly apply ticket, script will install tickets two times (service restart + clipup -v -o)
|
:: To maximize success rate and get better error details, script will install tickets two times (service restart + clipup -v -o)
|
||||||
|
|
||||||
set "tdir=%ProgramData%\Microsoft\Windows\ClipSVC\GenuineTicket"
|
set "tdir=%ProgramData%\Microsoft\Windows\ClipSVC\GenuineTicket"
|
||||||
if not exist "%tdir%\" md "%tdir%\" %nul%
|
if not exist "%tdir%\" md "%tdir%\" %nul%
|
||||||
|
|
||||||
if exist "%tdir%\Genuine*" del /f /q "%tdir%\Genuine*" %nul%
|
if exist "%tdir%\Genuine*" del /f /q "%tdir%\Genuine*" %nul%
|
||||||
if exist "%tdir%\*.xml" del /f /q "%tdir%\*.xml" %nul%
|
if exist "%tdir%\*.xml" del /f /q "%tdir%\*.xml" %nul%
|
||||||
|
if exist "%ProgramData%\Microsoft\Windows\ClipSVC\Install\Migration\*" del /f /q "%ProgramData%\Microsoft\Windows\ClipSVC\Install\Migration\*" %nul%
|
||||||
|
|
||||||
call :hwiddata ticket
|
call :hwiddata ticket
|
||||||
|
|
||||||
|
@ -439,6 +477,7 @@ net start ClipSVC /y %nul%
|
||||||
%_xmlexist% timeout /t 2 %nul%
|
%_xmlexist% timeout /t 2 %nul%
|
||||||
|
|
||||||
%_xmlexist% (
|
%_xmlexist% (
|
||||||
|
set error=1
|
||||||
if exist "%tdir%\*.xml" del /f /q "%tdir%\*.xml" %nul%
|
if exist "%tdir%\*.xml" del /f /q "%tdir%\*.xml" %nul%
|
||||||
call :dk_color %Red% "Installing GenuineTicket.xml [Failed With ClipSVC Service Restart, Wait...]"
|
call :dk_color %Red% "Installing GenuineTicket.xml [Failed With ClipSVC Service Restart, Wait...]"
|
||||||
)
|
)
|
||||||
|
@ -446,6 +485,26 @@ call :dk_color %Red% "Installing GenuineTicket.xml [Failed With ClipS
|
||||||
|
|
||||||
copy /y /b "%tdir%\GenuineTicket" "%tdir%\GenuineTicket.xml" %nul%
|
copy /y /b "%tdir%\GenuineTicket" "%tdir%\GenuineTicket.xml" %nul%
|
||||||
clipup -v -o
|
clipup -v -o
|
||||||
|
|
||||||
|
set rebuildinfo=
|
||||||
|
|
||||||
|
%_xmlexist% (
|
||||||
|
set error=1
|
||||||
|
set rebuildinfo=1
|
||||||
|
call :dk_color %Red% "Installing GenuineTicket.xml [Failed With clipup -v -o]"
|
||||||
|
)
|
||||||
|
|
||||||
|
if exist "%ProgramData%\Microsoft\Windows\ClipSVC\Install\Migration\*.xml" (
|
||||||
|
set error=1
|
||||||
|
set rebuildinfo=1
|
||||||
|
call :dk_color %Red% "Checking Ticket Migration [Failed]"
|
||||||
|
)
|
||||||
|
|
||||||
|
if defined applist if not defined showfix if defined rebuildinfo (
|
||||||
|
set showfix=1
|
||||||
|
call :dk_color %Magenta% "In MAS, Goto Troubleshoot and run Fix Licensing option."
|
||||||
|
)
|
||||||
|
|
||||||
if exist "%tdir%\Genuine*" del /f /q "%tdir%\Genuine*" %nul%
|
if exist "%tdir%\Genuine*" del /f /q "%tdir%\Genuine*" %nul%
|
||||||
|
|
||||||
::==========================================================================================================================================
|
::==========================================================================================================================================
|
||||||
|
@ -454,20 +513,50 @@ call :dk_product
|
||||||
|
|
||||||
echo:
|
echo:
|
||||||
echo Activating...
|
echo Activating...
|
||||||
echo:
|
|
||||||
|
|
||||||
call :dk_act
|
call :dk_act
|
||||||
call :dk_checkperm
|
call :dk_checkperm
|
||||||
if defined _perm (
|
if defined _perm (
|
||||||
call :dk_color %Green% "%winos% is permanently activated."
|
echo:
|
||||||
|
call :dk_color %Green% "%winos% is permanently activated with a digital license."
|
||||||
goto :dl_final
|
goto :dl_final
|
||||||
)
|
)
|
||||||
|
|
||||||
|
:: Extended licensing servers tests incase error not found and activation failed
|
||||||
|
|
||||||
|
set resfail=
|
||||||
if not defined error (
|
if not defined error (
|
||||||
|
|
||||||
REM Clear store ID related registry to fix activation incase if there is any corruption
|
ipconfig /flushdns %nul%
|
||||||
|
set "tls=$Tls12 = [Enum]::ToObject([System.Net.SecurityProtocolType], 3072); [System.Net.ServicePointManager]::SecurityProtocol = $Tls12;"
|
||||||
|
|
||||||
|
for %%# in (
|
||||||
|
login.live.com/ppsecure/deviceaddcredential.srf
|
||||||
|
purchase.mp.microsoft.com/v7.0/users/me/orders
|
||||||
|
) do if not defined resfail (
|
||||||
|
set "d1=Add-Type -AssemblyName System.Net.Http;"
|
||||||
|
set "d1=!d1! $client = [System.Net.Http.HttpClient]::new();"
|
||||||
|
set "d1=!d1! $response = $client.GetAsync('https://%%#').GetAwaiter().GetResult();"
|
||||||
|
set "d1=!d1! $response.Content.ReadAsStringAsync().GetAwaiter().GetResult()"
|
||||||
|
%psc% "!tls! !d1!" 2>nul | findstr /i "PurchaseFD DeviceAddResponse" 1>nul || set resfail=1
|
||||||
|
)
|
||||||
|
|
||||||
|
if not defined resfail (
|
||||||
|
%psc% "!tls! irm https://licensing.mp.microsoft.com/v7.0/licenses/content -Method POST" | find /i "traceId" 1>nul || set resfail=1
|
||||||
|
)
|
||||||
|
|
||||||
|
if defined resfail (
|
||||||
|
set error=1
|
||||||
|
echo:
|
||||||
|
call :dk_color %Red% "Checking Licensing Servers [Failed To Connect]"
|
||||||
|
call :dk_color2 %Magenta% "Check this page for help" %_Yellow% " https://massgrave.dev/licensing-servers-issue"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
:: Clear store ID related registry to fix activation incase error not found
|
||||||
|
|
||||||
|
if not defined error (
|
||||||
|
echo:
|
||||||
set "_ident=HKU\S-1-5-19\SOFTWARE\Microsoft\IdentityCRL"
|
set "_ident=HKU\S-1-5-19\SOFTWARE\Microsoft\IdentityCRL"
|
||||||
reg delete "!_ident!" /f %nul%
|
reg delete "!_ident!" /f %nul%
|
||||||
reg query "!_ident!" %nul% && (
|
reg query "!_ident!" %nul% && (
|
||||||
|
@ -484,13 +573,16 @@ call :dk_act
|
||||||
call :dk_checkperm
|
call :dk_checkperm
|
||||||
)
|
)
|
||||||
|
|
||||||
|
echo:
|
||||||
if defined _perm (
|
if defined _perm (
|
||||||
call :dk_color %Green% "%winos% is permanently activated."
|
call :dk_color %Green% "%winos% is permanently activated with a digital license."
|
||||||
) else (
|
) else (
|
||||||
call :dk_color %Red% "Activation Failed %error_code%"
|
call :dk_color %Red% "Activation Failed %error_code%"
|
||||||
if defined notworking (
|
if defined notworking (
|
||||||
call :dk_color %Magenta% "At the time of writing this, HWID Activation was not supported for this product."
|
call :dk_color %Magenta% "At the time of writing this, HWID Activation was not supported for this product."
|
||||||
|
call :dk_color %Magenta% "Use KMS38 Activation option."
|
||||||
) else (
|
) else (
|
||||||
|
if not defined error call :dk_color %Magenta% "In MAS, Goto Troubleshoot and run Fix Licensing option."
|
||||||
call :dk_color2 %Magenta% "Check this page for help" %_Yellow% " https://massgrave.dev/troubleshoot"
|
call :dk_color2 %Magenta% "Check this page for help" %_Yellow% " https://massgrave.dev/troubleshoot"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -502,15 +594,15 @@ call :dk_color2 %Magenta% "Check this page for help" %_Yellow% " https://massgra
|
||||||
echo:
|
echo:
|
||||||
|
|
||||||
if defined regionchange (
|
if defined regionchange (
|
||||||
%psc% Set-WinHomeLocation -GeoId %nation%
|
%psc% "Set-WinHomeLocation -GeoId %nation%" %nul%
|
||||||
if !errorlevel! EQU 0 (
|
if !errorlevel! EQU 0 (
|
||||||
echo Restoring Windows Region [Successful]
|
echo Restoring Windows Region [Successful]
|
||||||
) else (
|
) else (
|
||||||
call :dk_color %Red% "Restoring Windows Region [Failed] [%name%-%nation%]"
|
call :dk_color %Red% "Restoring Windows Region [Failed] [%name% - %nation%]"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
if %osSKU%==175 call :dk_color %Red% "ServerRdsh Editon does not officially support activation on non-azure platforms."
|
if %osSKU%==175 call :dk_color %Red% "%winos% does not support activation on non-azure platforms."
|
||||||
|
|
||||||
goto :dk_done
|
goto :dk_done
|
||||||
|
|
||||||
|
@ -555,22 +647,6 @@ if %_wmic% EQU 0 set "chkapp=for /f "tokens=2 delims==" %%a in ('%psc% "(([WMISE
|
||||||
%chkapp% do (if defined applist (call set "applist=!applist! %%a") else (call set "applist=%%a"))
|
%chkapp% do (if defined applist (call set "applist=!applist! %%a") else (call set "applist=%%a"))
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
:: Get Product name (WMI/REG methods are not reliable in all conditions, hence winbrand.dll method is used)
|
|
||||||
|
|
||||||
:dk_product
|
|
||||||
|
|
||||||
set winos=
|
|
||||||
set d1=[DllImport(\"winbrand\",CharSet=CharSet.Unicode)]public static extern string BrandingFormatString(string s);
|
|
||||||
set d2=$AP=Add-Type -Member '%d1%' -Name D1 -PassThru; $AP::BrandingFormatString('%%WINDOWS_LONG%%')
|
|
||||||
for /f "delims=" %%s in ('"%psc% %d2%"') do if not errorlevel 1 (set winos=%%s)
|
|
||||||
echo "%winos%" | find /i "Windows" 1>nul || (
|
|
||||||
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName 2^>nul') do set "winos=%%b"
|
|
||||||
if %winbuild% GEQ 22000 (
|
|
||||||
set winos=!winos:Windows 10=Windows 11!
|
|
||||||
)
|
|
||||||
)
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
:: Check wmic.exe
|
:: Check wmic.exe
|
||||||
|
|
||||||
:dk_ckeckwmic
|
:dk_ckeckwmic
|
||||||
|
@ -581,6 +657,34 @@ wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i "com
|
||||||
)
|
)
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
|
:: Get Product name (WMI/REG methods are not reliable in all conditions, hence winbrand.dll method is used)
|
||||||
|
|
||||||
|
:dk_product
|
||||||
|
|
||||||
|
call :dk_reflection
|
||||||
|
|
||||||
|
set d1=%ref% $meth = $TypeBuilder.DefinePInvokeMethod('BrandingFormatString', 'winbrand.dll', 'Public, Static', 1, [String], @([String]), 1, 3);
|
||||||
|
set d1=%d1% $meth.SetImplementationFlags(128); $TypeBuilder.CreateType()::BrandingFormatString('%%WINDOWS_LONG%%')
|
||||||
|
|
||||||
|
set winos=
|
||||||
|
for /f "delims=" %%s in ('"%psc% %d1%"') do if not errorlevel 1 (set winos=%%s)
|
||||||
|
echo "%winos%" | find /i "Windows" 1>nul || (
|
||||||
|
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName 2^>nul') do set "winos=%%b"
|
||||||
|
if %winbuild% GEQ 22000 (
|
||||||
|
set winos=!winos:Windows 10=Windows 11!
|
||||||
|
)
|
||||||
|
)
|
||||||
|
exit /b
|
||||||
|
|
||||||
|
:: Common lines used in PowerShell reflection code
|
||||||
|
|
||||||
|
:dk_reflection
|
||||||
|
|
||||||
|
set ref=$AssemblyBuilder = [AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1);
|
||||||
|
set ref=%ref% $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule(2, $False);
|
||||||
|
set ref=%ref% $TypeBuilder = $ModuleBuilder.DefineType(0);
|
||||||
|
exit /b
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:dk_errorcheck
|
:dk_errorcheck
|
||||||
|
@ -590,8 +694,11 @@ exit /b
|
||||||
set serv_ste=
|
set serv_ste=
|
||||||
for %%# in (%_serv%) do (
|
for %%# in (%_serv%) do (
|
||||||
set serv_dis=
|
set serv_dis=
|
||||||
reg query HKLM\SYSTEM\CurrentControlSet\Services\%%# /v Start %nul% || set serv_dis=1
|
reg query HKLM\SYSTEM\CurrentControlSet\Services\%%# /v ImagePath %nul% || set serv_dis=1
|
||||||
for /f "skip=2 tokens=2*" %%a in ('reg query HKLM\SYSTEM\CurrentControlSet\Services\%%# /v Start 2^>nul') do if /i %%b equ 0x4 set serv_dis=1
|
for /f "skip=2 tokens=2*" %%a in ('reg query HKLM\SYSTEM\CurrentControlSet\Services\%%# /v Start 2^>nul') do if /i %%b equ 0x4 set serv_dis=1
|
||||||
|
sc start %%# %nul%
|
||||||
|
if !errorlevel! EQU 1058 set serv_dis=1
|
||||||
|
sc query %%# %nul% || set serv_dis=1
|
||||||
if defined serv_dis (if defined serv_ste (set "serv_ste=!serv_ste! %%#") else (set "serv_ste=%%#"))
|
if defined serv_dis (if defined serv_ste (set "serv_ste=!serv_ste! %%#") else (set "serv_ste=%%#"))
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -605,27 +712,24 @@ for %%# in (%serv_ste%) do (
|
||||||
if /i %%#==ClipSVC (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "3" /f %nul% & sc config %%# start= demand %nul%)
|
if /i %%#==ClipSVC (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "3" /f %nul% & sc config %%# start= demand %nul%)
|
||||||
if /i %%#==wlidsvc sc config %%# start= demand %nul%
|
if /i %%#==wlidsvc sc config %%# start= demand %nul%
|
||||||
if /i %%#==sppsvc (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "2" /f %nul% & sc config %%# start= delayed-auto %nul%)
|
if /i %%#==sppsvc (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "2" /f %nul% & sc config %%# start= delayed-auto %nul%)
|
||||||
|
if /i %%#==KeyIso sc config %%# start= demand %nul%
|
||||||
if /i %%#==LicenseManager sc config %%# start= demand %nul%
|
if /i %%#==LicenseManager sc config %%# start= demand %nul%
|
||||||
if /i %%#==Winmgmt sc config %%# start= auto %nul%
|
if /i %%#==Winmgmt sc config %%# start= auto %nul%
|
||||||
if /i %%#==wuauserv sc config %%# start= demand %nul%
|
if /i %%#==wuauserv sc config %%# start= demand %nul%
|
||||||
if !errorlevel!==0 (
|
if !errorlevel!==0 (
|
||||||
if defined serv_csts (set "serv_csts=!serv_csts! %%#") else (set "serv_csts=%%#")
|
if defined serv_csts (set "serv_csts=!serv_csts! %%#") else (set "serv_csts=%%#")
|
||||||
) else (
|
) else (
|
||||||
set error=1
|
|
||||||
if defined serv_cste (set "serv_cste=!serv_cste! %%#") else (set "serv_cste=%%#")
|
if defined serv_cste (set "serv_cste=!serv_cste! %%#") else (set "serv_cste=%%#")
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
if defined serv_csts echo Enabling Disabled Services [Successful] [%serv_csts%]
|
if defined serv_csts call :dk_color %Gray% "Enabling Disabled Services [Successful] [%serv_csts%]"
|
||||||
|
|
||||||
if defined serv_cste (
|
if defined serv_cste (
|
||||||
echo %serv_cste% | findstr /i "ClipSVC sppsvc" %nul% && (
|
set error=1
|
||||||
call :dk_color %Red% "Enabling Disabled Services [Failed] [%serv_cste%] [Restart System]"
|
|
||||||
) || (
|
|
||||||
call :dk_color %Red% "Enabling Disabled Services [Failed] [%serv_cste%]"
|
call :dk_color %Red% "Enabling Disabled Services [Failed] [%serv_cste%]"
|
||||||
)
|
)
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
@ -637,23 +741,44 @@ for %%# in (%_serv%) do (
|
||||||
set errorcode=
|
set errorcode=
|
||||||
set checkerror=
|
set checkerror=
|
||||||
net start %%# /y %nul%
|
net start %%# /y %nul%
|
||||||
|
set errorcode=!errorlevel!
|
||||||
sc query %%# | find /i "4 RUNNING" %nul% || set checkerror=1
|
sc query %%# | find /i "4 RUNNING" %nul% || set checkerror=1
|
||||||
|
|
||||||
sc start %%# %nul%
|
sc start %%# %nul%
|
||||||
set errorcode=!errorlevel!
|
if !errorlevel! NEQ 1056 if !errorlevel! NEQ 0 (set errorcode=!errorlevel!&set checkerror=1)
|
||||||
if !errorcode! NEQ 1056 if !errorcode! NEQ 0 set checkerror=1
|
|
||||||
if defined checkerror if defined serv_e (set "serv_e=!serv_e!, %%#-!errorcode!") else (set "serv_e=%%#-!errorcode!")
|
if defined checkerror if defined serv_e (set "serv_e=!serv_e!, %%#-!errorcode!") else (set "serv_e=%%#-!errorcode!")
|
||||||
)
|
)
|
||||||
|
|
||||||
if defined serv_e (
|
if defined serv_e (
|
||||||
set error=1
|
set error=1
|
||||||
call :dk_color %Red% "Starting Services [Failed] [%serv_e%]"
|
call :dk_color %Red% "Starting Services [Failed] [%serv_e%]"
|
||||||
|
echo %serv_e% | findstr /i "ClipSVC-1058 sppsvc-1058" %nul% && (
|
||||||
|
call :dk_color %Magenta% "Restart the system to fix disabled service error 1058."
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:: Various error checks
|
:: Various error checks
|
||||||
|
|
||||||
|
if defined safeboot_option (
|
||||||
|
set error=1
|
||||||
|
call :dk_color2 %Red% "Checking Boot Mode " %Magenta% "[System is running in safe mode. Run in normal mode.]"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State" 2>nul | find /i "IMAGE_STATE_COMPLETE" 1>nul || (
|
||||||
|
set error=1
|
||||||
|
call :dk_color2 %Red% "Checking Audit Mode " %Magenta% "[System is running in Audit mode. Run in normal mode.]"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinPE" /v InstRoot %nul% && (
|
||||||
|
set error=1
|
||||||
|
call :dk_color2 %Red% "Checking WinPE " %Magenta% "[System is running in WinPE mode. Run in normal mode.]"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
for %%# in (wmic.exe) do @if "%%~$PATH:#"=="" (
|
for %%# in (wmic.exe) do @if "%%~$PATH:#"=="" (
|
||||||
call :dk_color %Gray% "Checking WMIC.exe [Not Found]"
|
call :dk_color %Gray% "Checking WMIC.exe [Not Found]"
|
||||||
)
|
)
|
||||||
|
@ -665,16 +790,18 @@ call :dk_color %Red% "Checking Powershell [Not Responding]"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
set wmifailed=
|
||||||
if %_wmic% EQU 1 wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i "computersystem" 1>nul
|
if %_wmic% EQU 1 wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i "computersystem" 1>nul
|
||||||
if %_wmic% EQU 0 %psc% "Get-CIMInstance -Class Win32_ComputerSystem | Select-Object -Property CreationClassName" 2>nul | find /i "computersystem" 1>nul
|
if %_wmic% EQU 0 %psc% "Get-CIMInstance -Class Win32_ComputerSystem | Select-Object -Property CreationClassName" 2>nul | find /i "computersystem" 1>nul
|
||||||
if %errorlevel% NEQ 0 (
|
if %errorlevel% NEQ 0 (
|
||||||
set error=1
|
set error=1
|
||||||
|
set wmifailed=1
|
||||||
call :dk_color %Red% "Checking WMI [Not Responding] %_wmic%"
|
call :dk_color %Red% "Checking WMI [Not Responding] %_wmic%"
|
||||||
|
call :dk_color %Magenta% "In MAS, Goto Troubleshoot and run Fix WMI option."
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
if not "%regSKU%"=="%wmiSKU%" (
|
if not "%regSKU%"=="%wmiSKU%" (
|
||||||
set error=1
|
|
||||||
call :dk_color %Red% "Checking WMI/REG SKU [Difference Found - WMI:%wmiSKU% Reg:%regSKU%]"
|
call :dk_color %Red% "Checking WMI/REG SKU [Difference Found - WMI:%wmiSKU% Reg:%regSKU%]"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -689,6 +816,7 @@ call :dk_color %Red% "Checking DISM [Not Responding] %
|
||||||
|
|
||||||
|
|
||||||
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" (
|
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" (
|
||||||
|
set error=1
|
||||||
call :dk_color %Red% "Checking Eval Packages [Non-Eval Licenses are installed in Eval Windows]"
|
call :dk_color %Red% "Checking Eval Packages [Non-Eval Licenses are installed in Eval Windows]"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -705,13 +833,13 @@ call :dk_color %Red% "Checking slmgr /dlv [Not Responding] %
|
||||||
|
|
||||||
reg query "HKU\S-1-5-20\Software\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\PersistedTSReArmed" %nul% && (
|
reg query "HKU\S-1-5-20\Software\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\PersistedTSReArmed" %nul% && (
|
||||||
set error=1
|
set error=1
|
||||||
call :dk_color %Red% "Checking Rearm [System Restart Is Required]"
|
call :dk_color2 %Red% "Checking Rearm " %Magenta% "[System Restart Is Required]"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ClipSVC\Volatile\PersistedSystemState" %nul% && (
|
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ClipSVC\Volatile\PersistedSystemState" %nul% && (
|
||||||
set error=1
|
set error=1
|
||||||
call :dk_color %Red% "Checking ClipSVC [System Restart Is Required]"
|
call :dk_color2 %Red% "Checking ClipSVC " %Magenta% "[System Restart Is Required]"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -724,6 +852,12 @@ set error=1
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\Plugins\Objects\msft:rm/algorithm/hwid/4.0" /f ba02fed39662 /d %nul% || (
|
||||||
|
call :dk_color %Red% "Checking SPP Registry Key [Incorrect ModuleId Found]"
|
||||||
|
set error=1
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
call :dk_actids
|
call :dk_actids
|
||||||
if not defined applist (
|
if not defined applist (
|
||||||
net stop sppsvc /y %nul%
|
net stop sppsvc /y %nul%
|
||||||
|
@ -738,24 +872,69 @@ call :dk_color %Red% "Checking Activation IDs [Not Found]"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
set token=0
|
set tokenstore=
|
||||||
if exist %Systemdrive%\Windows\System32\spp\store\2.0\tokens.dat set token=1
|
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v TokenStore 2^>nul') do call set "tokenstore=%%b"
|
||||||
if exist %Systemdrive%\Windows\System32\spp\store_test\2.0\tokens.dat set token=1
|
if not exist "%tokenstore%\" (
|
||||||
if %token%==0 (
|
|
||||||
set error=1
|
set error=1
|
||||||
call :dk_color %Red% "Checking SPP tokens.dat [Not Found]"
|
call :dk_color %Red% "Checking SPP Token Folder [Not Found] [%tokenstore%\]"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
if exist "%tokenstore%\" if not exist "%tokenstore%\tokens.dat" (
|
||||||
|
set error=1
|
||||||
|
call :dk_color %Red% "Checking SPP tokens.dat [Not Found] [%tokenstore%\]"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
if not exist %ProgramData%\Microsoft\Windows\ClipSVC\tokens.dat (
|
||||||
|
set error=1
|
||||||
|
call :dk_color %Red% "Checking ClipSVC tokens.dat [Not Found]"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
if not exist %SystemRoot%\system32\sppsvc.exe (
|
if not exist %SystemRoot%\system32\sppsvc.exe (
|
||||||
set error=1
|
set error=1
|
||||||
call :dk_color %Red% "Checking sppsvc.exe File [Not Found]"
|
call :dk_color %Red% "Checking sppsvc.exe File [Not Found]"
|
||||||
)
|
)
|
||||||
|
|
||||||
if /i %error_code% EQU 0xc0000022 (
|
|
||||||
echo "%serv_e%" | find /i "sppsvc" %nul% && (
|
:: Below checks are performed if required services are not disabled + slmgr /dlv errorlevel is not Zero + Rearm restart is not required + WMI is working fine
|
||||||
call :dk_color %Magenta% "Looks like you may have used a Gaming spoofer. Check Activation Troubleshoot option in MAS."
|
|
||||||
|
set showfix=
|
||||||
|
set wpaerror=
|
||||||
|
set permerror=
|
||||||
|
if not defined serv_cste if /i not %error_code%==0 if /i not %error_code%==0xC004D302 if not defined wmifailed (
|
||||||
|
|
||||||
|
REM This code checks for invalid registry keys in HKLM\SYSTEM\WPA. This issue may appear even on healthy systems.
|
||||||
|
|
||||||
|
if %winbuild% GEQ 14393 (
|
||||||
|
set /a count=0
|
||||||
|
for /f %%a in ('reg query "HKLM\SYSTEM\WPA" 2^>nul') do set /a count+=1
|
||||||
|
for /L %%# in (1,1,!count!) do (
|
||||||
|
reg query "HKLM\SYSTEM\WPA\8DEC0AF1-0341-4b93-85CD-72606C2DF94C-7P-%%#" /ve /t REG_BINARY %nul% || set wpaerror=1
|
||||||
)
|
)
|
||||||
|
if defined wpaerror call :dk_color %Red% "Checking WPA Registry Keys [Error Found] [Registry Count - !count!]"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
if not exist "%tokenstore%\" set permerror=1
|
||||||
|
|
||||||
|
for %%# in (
|
||||||
|
"%tokenstore%"
|
||||||
|
"HKLM:\SYSTEM\WPA"
|
||||||
|
"HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform"
|
||||||
|
) do if not defined permerror (
|
||||||
|
%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%
|
||||||
|
if !errorlevel!==2 set permerror=1
|
||||||
|
)
|
||||||
|
if defined permerror call :dk_color %Red% "Checking SPP Permissions [Error Found]"
|
||||||
|
|
||||||
|
set showfix=1
|
||||||
|
call :dk_color %Magenta% "In MAS, Goto Troubleshoot and run Fix Licensing option."
|
||||||
|
if not defined permerror call :dk_color %Magenta% "If activation still fails then run Fix WPA Registry option."
|
||||||
|
)
|
||||||
|
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
@ -804,38 +983,39 @@ exit /b
|
||||||
|
|
||||||
:hwiddata
|
:hwiddata
|
||||||
|
|
||||||
|
set f=
|
||||||
for %%# in (
|
for %%# in (
|
||||||
8b351c9c-f398-4515-9900-09df49427262_XGVPP-NMH47-7TTHJ-W3FW7-8HV2C___4_X19-99683_X9J5T0gPQprYpz2euPvoJGlkurIO9h6N8ypE0KWYVpy0nbCKYnqSUCD7u8ReXAmc085jX2uM5PKurSee9Yq/PxesgiysQHDBsOhr98MXZZiIgy4ssnz2gZF70KB8tO3X7kk9LHwxXfz3rlquYPod9swe90nqvVaJMWCpQK0InUw_0_OEM:NONSLP_Enterprise
|
8b351c9c-f398-4515-9900-09df49427262_XGV%f%PP-NM%f%H47-7TT%f%HJ-W3%f%FW7-8H%f%V2C___4_X19-99683_X9J5T0gPQprYpz2euPvoJGlkurIO9h6N8ypE0KWYVpy0nbCKYnqSUCD7u8ReXAmc085jX2uM5PKurSee9Yq/PxesgiysQHDBsOhr98MXZZiIgy4ssnz2gZF70KB8tO3X7kk9LHwxXfz3rlquYPod9swe90nqvVaJMWCpQK0InUw_0_OEM:NONSLP_Enterprise
|
||||||
c83cef07-6b72-4bbc-a28f-a00386872839_3V6Q6-NQXCX-V8YXR-9QCYV-QPFCT__27_X19-98746_WFZBjlVtHQumoaVE28/NHsRvv1lgkkfav6NPHqr6OC2u4vxkjjJkkl9OTF6DpHJu0IFrrQv+HYcdZ/WC5EzhOMqMxcujTBSAN7xLIVEbs72Db0Bi5iDAbOltJpk8QKKe18otQJ6vajW5WOPXjbgSJfDFaZQfiwvIJ1ICXt+stog_0_Volume:MAK_EnterpriseN
|
c83cef07-6b72-4bbc-a28f-a00386872839_3V6%f%Q6-NQ%f%XCX-V8Y%f%XR-9Q%f%CYV-QP%f%FCT__27_X19-98746_WFZBjlVtHQumoaVE28/NHsRvv1lgkkfav6NPHqr6OC2u4vxkjjJkkl9OTF6DpHJu0IFrrQv+HYcdZ/WC5EzhOMqMxcujTBSAN7xLIVEbs72Db0Bi5iDAbOltJpk8QKKe18otQJ6vajW5WOPXjbgSJfDFaZQfiwvIJ1ICXt+stog_0_Volume:MAK_EnterpriseN
|
||||||
4de7cb65-cdf1-4de9-8ae8-e3cce27b9f2c_VK7JG-NPHTM-C97JM-9MPGT-3V66T__48_X19-98841_K3qev/5gQpX1RK1F9M9beEWWv/di1GsRF7OUcEMGTGDTYnaRenRcJaO8zOHQQvKDc57fon/v77ZpHQHT/jWWhWnLm7Ssory+s8tOs72fPjivVBDwpSPIEC1v+8Vpb4a3XCZet2e/Z5wmpCq9XDkowys3IcxYM0mHWBaNPu8gIe4_0_____Retail_Professional
|
4de7cb65-cdf1-4de9-8ae8-e3cce27b9f2c_VK7%f%JG-NP%f%HTM-C97%f%JM-9M%f%PGT-3V%f%66T__48_X19-98841_K3qev/5gQpX1RK1F9M9beEWWv/di1GsRF7OUcEMGTGDTYnaRenRcJaO8zOHQQvKDc57fon/v77ZpHQHT/jWWhWnLm7Ssory+s8tOs72fPjivVBDwpSPIEC1v+8Vpb4a3XCZet2e/Z5wmpCq9XDkowys3IcxYM0mHWBaNPu8gIe4_0_____Retail_Professional
|
||||||
9fbaf5d6-4d83-4422-870d-fdda6e5858aa_2B87N-8KFHP-DKV6R-Y2C8J-PKCKT__49_X19-98859_WcAcor6kQgxgkTRzcoxnb8UIoo5/ueYeaOKqy9/xAzlruHAKxhatXeGtSI58lXcCK5hxXkDmcyrRFwWSwdvg0txwTi7VusYcTNCLdmNWU/62iDrBhzMrCYtuhW9EV/g4+TlbjSm4PBJ0HMlI4YzAEnyJiBgKPDgBQ8Gj9LRbEgU_0_____Retail_ProfessionalN
|
9fbaf5d6-4d83-4422-870d-fdda6e5858aa_2B8%f%7N-8K%f%FHP-DKV%f%6R-Y2%f%C8J-PK%f%CKT__49_X19-98859_WcAcor6kQgxgkTRzcoxnb8UIoo5/ueYeaOKqy9/xAzlruHAKxhatXeGtSI58lXcCK5hxXkDmcyrRFwWSwdvg0txwTi7VusYcTNCLdmNWU/62iDrBhzMrCYtuhW9EV/g4+TlbjSm4PBJ0HMlI4YzAEnyJiBgKPDgBQ8Gj9LRbEgU_0_____Retail_ProfessionalN
|
||||||
f742e4ff-909d-4fe9-aacb-3231d24a0c58_4CPRK-NM3K3-X6XXQ-RXX86-WXCHW__98_X19-98877_MBDSEqlayxtVVEgIeAl8milgjS/BVHow6+MmpCyh9nweuctlT1+LbEHmDlnqDeLr9FQrN2FpEJtNr26rE0niMdvcAP51MfJsREyhWOEbrWwWyMH0KwDAci2WxWZTJp/SEZnq5HYYT1pPPLMWAkKRHJksJJFtg4zBtoyHvLjc35c_0_____Retail_CoreN
|
f742e4ff-909d-4fe9-aacb-3231d24a0c58_4CP%f%RK-NM%f%3K3-X6X%f%XQ-RX%f%X86-WX%f%CHW__98_X19-98877_MBDSEqlayxtVVEgIeAl8milgjS/BVHow6+MmpCyh9nweuctlT1+LbEHmDlnqDeLr9FQrN2FpEJtNr26rE0niMdvcAP51MfJsREyhWOEbrWwWyMH0KwDAci2WxWZTJp/SEZnq5HYYT1pPPLMWAkKRHJksJJFtg4zBtoyHvLjc35c_0_____Retail_CoreN
|
||||||
1d1bac85-7365-4fea-949a-96978ec91ae0_N2434-X9D7W-8PF6X-8DV9T-8TYMD__99_X19-99652_mpjCoh6soA/rwJutsjekZpA9vDUD8znR20V/c8FwSjuCcSbPhmP6bpJR9rfptAZqpagliMxA/OUZsx0Knt0n/hgOy2mv8pr24gI9uYXK8EfhG74bVdsyvZz1tyA6CaVR02ZahQvbKYzCmXUvsI+Wge3bHbKbVpn9Mvl+itn2a4g_0_____Retail_CoreCountrySpecific
|
1d1bac85-7365-4fea-949a-96978ec91ae0_N24%f%34-X9%f%D7W-8PF%f%6X-8D%f%V9T-8T%f%YMD__99_X19-99652_mpjCoh6soA/rwJutsjekZpA9vDUD8znR20V/c8FwSjuCcSbPhmP6bpJR9rfptAZqpagliMxA/OUZsx0Knt0n/hgOy2mv8pr24gI9uYXK8EfhG74bVdsyvZz1tyA6CaVR02ZahQvbKYzCmXUvsI+Wge3bHbKbVpn9Mvl+itn2a4g_0_____Retail_CoreCountrySpecific
|
||||||
3ae2cc14-ab2d-41f4-972f-5e20142771dc_BT79Q-G7N6G-PGBYW-4YWX6-6F4BT_100_X19-99661_KaUs6KwvtthPOsxd3x0tU/baKSv1DWSFOqbq7PbU/uYEY95p0Skzv3y4aXq+xVmfwSt8STL/4vSfFIAlsaRh7Vnq6Y/Ael8joeqI8hBN461fykoHxSELRMJ+eed50T0cJUS79ol6OTBOCCVeHgmtGVbHuL88TMWW69fGNdIMM3U_0_____Retail_CoreSingleLanguage
|
3ae2cc14-ab2d-41f4-972f-5e20142771dc_BT7%f%9Q-G7%f%N6G-PGB%f%YW-4Y%f%WX6-6F%f%4BT_100_X19-99661_KaUs6KwvtthPOsxd3x0tU/baKSv1DWSFOqbq7PbU/uYEY95p0Skzv3y4aXq+xVmfwSt8STL/4vSfFIAlsaRh7Vnq6Y/Ael8joeqI8hBN461fykoHxSELRMJ+eed50T0cJUS79ol6OTBOCCVeHgmtGVbHuL88TMWW69fGNdIMM3U_0_____Retail_CoreSingleLanguage
|
||||||
2b1f36bb-c1cd-4306-bf5c-a0367c2d97d8_YTMG3-N6DKC-DKB77-7M9GH-8HVX7_101_X19-98868_NpHxrAtA+GL6kawAP5Z2UdfUVcKFvf9UzEe6FIV/HztZqxpMBDFv2hdxCjD9+T8PKcW8j3n04McelOAgr3lD37Fu+wrvJIGX0dG3xEtU/MG9L9X5baBS8H6AmC6rq2+w5NUY8EchK9W2oatBflFb8IcfCSeAyOfsJei6bdu4mp8_0_____Retail_Core
|
2b1f36bb-c1cd-4306-bf5c-a0367c2d97d8_YTM%f%G3-N6%f%DKC-DKB%f%77-7M%f%9GH-8H%f%VX7_101_X19-98868_NpHxrAtA+GL6kawAP5Z2UdfUVcKFvf9UzEe6FIV/HztZqxpMBDFv2hdxCjD9+T8PKcW8j3n04McelOAgr3lD37Fu+wrvJIGX0dG3xEtU/MG9L9X5baBS8H6AmC6rq2+w5NUY8EchK9W2oatBflFb8IcfCSeAyOfsJei6bdu4mp8_0_____Retail_Core
|
||||||
2a6137f3-75c0-4f26-8e3e-d83d802865a4_XKCNC-J26Q9-KFHD2-FKTHY-KD72Y_119_X19-99606_gtywgqIP3j+bliKdunuseeZWtsOzWhj+DmSBq7nqeNarHutgbWEwvcRiGo+nwxONt9Ak/VyuO76ZWH/db3iRVTk1y61vFv15gVlOy1ovLjVHBvmPVdQXIne2N+pIMb0eBhZWHRX63mYdkZRZ0wg/+bj4xsjJv+qLpWhVCzNMge4_0_OEM:NONSLP_PPIPro
|
2a6137f3-75c0-4f26-8e3e-d83d802865a4_XKC%f%NC-J2%f%6Q9-KFH%f%D2-FK%f%THY-KD%f%72Y_119_X19-99606_gtywgqIP3j+bliKdunuseeZWtsOzWhj+DmSBq7nqeNarHutgbWEwvcRiGo+nwxONt9Ak/VyuO76ZWH/db3iRVTk1y61vFv15gVlOy1ovLjVHBvmPVdQXIne2N+pIMb0eBhZWHRX63mYdkZRZ0wg/+bj4xsjJv+qLpWhVCzNMge4_0_OEM:NONSLP_PPIPro
|
||||||
e558417a-5123-4f6f-91e7-385c1c7ca9d4_YNMGQ-8RYV3-4PGQ3-C8XTP-7CFBY_121_X19-98886_VuBmoSUdF63Cvwm9wNlc2yhD2tP9B72iVVWFNcbAwDGXF6o06oNMsIJ0VqGJDdBzZjVGw2wHokMabxZNDyIl90CO7trwgV8S0lLJVLymxyUaE3ThvN3YUsi9Q3H+5Kr0RpsojCWb+UQd/GY4bSXfyStXFylj6im7yv0db/ZWGbw_0_____Retail_Education
|
e558417a-5123-4f6f-91e7-385c1c7ca9d4_YNM%f%GQ-8R%f%YV3-4PG%f%Q3-C8%f%XTP-7C%f%FBY_121_X19-98886_VuBmoSUdF63Cvwm9wNlc2yhD2tP9B72iVVWFNcbAwDGXF6o06oNMsIJ0VqGJDdBzZjVGw2wHokMabxZNDyIl90CO7trwgV8S0lLJVLymxyUaE3ThvN3YUsi9Q3H+5Kr0RpsojCWb+UQd/GY4bSXfyStXFylj6im7yv0db/ZWGbw_0_____Retail_Education
|
||||||
c5198a66-e435-4432-89cf-ec777c9d0352_84NGF-MHBT6-FXBX8-QWJK7-DRR8H_122_X19-98892_jQ6S2bbNoVrp/zvi8BEUwCf7fge1nAdspcjXyTeTySUiR+hXPiKQEWgyLqAdZ5Or+X2JGT/LZN1/eZ9P+REmzG/WQotZ+fyyPguoSsES+d312RkfmQoI5gVanEkGjZSU4YohREM/Vyf9MOO7dbH9MMEpFm2mje6OnhyJo2gux0g_0_____Retail_EducationN
|
c5198a66-e435-4432-89cf-ec777c9d0352_84N%f%GF-MH%f%BT6-FXB%f%X8-QW%f%JK7-DR%f%R8H_122_X19-98892_jQ6S2bbNoVrp/zvi8BEUwCf7fge1nAdspcjXyTeTySUiR+hXPiKQEWgyLqAdZ5Or+X2JGT/LZN1/eZ9P+REmzG/WQotZ+fyyPguoSsES+d312RkfmQoI5gVanEkGjZSU4YohREM/Vyf9MOO7dbH9MMEpFm2mje6OnhyJo2gux0g_0_____Retail_EducationN
|
||||||
cce9d2de-98ee-4ce2-8113-222620c64a27_KCNVH-YKWX8-GJJB9-H9FDT-6F7W2_125_X22-66075_wJ/BPDFz+13PVJtBqBo+E4LCm3LoMVALCQUun9kXGBULr7V8FQ5nKUudUGHDLNNVIIicdw9Uh26BKAt0/hnE7BpBkzwdi4qAdZgKXQ1t06Ek4+zXmoT225NvpaHsuhDkE687TtCB1ZWvAulA8G9ehE3HTJSoNm4wCFOQyIQQtqQ_1_Volume:MAK_EnterpriseS_VB
|
cce9d2de-98ee-4ce2-8113-222620c64a27_KCN%f%VH-YK%f%WX8-GJJ%f%B9-H9%f%FDT-6F%f%7W2_125_X22-66075_wJ/BPDFz+13PVJtBqBo+E4LCm3LoMVALCQUun9kXGBULr7V8FQ5nKUudUGHDLNNVIIicdw9Uh26BKAt0/hnE7BpBkzwdi4qAdZgKXQ1t06Ek4+zXmoT225NvpaHsuhDkE687TtCB1ZWvAulA8G9ehE3HTJSoNm4wCFOQyIQQtqQ_1_Volume:MAK_EnterpriseS_VB
|
||||||
d06934ee-5448-4fd1-964a-cd077618aa06_43TBQ-NH92J-XKTM7-KT3KK-P39PB_125_X21-83233_V+y0SFmAnGwRwgNz+0sO0mj+XxSjbdRDpom1Iqx2BJcsf96Q5ittJOcMhKiNswyKuq5suM5vy60tA/AUdb1mrnnrnXfmz7nFam/BIOOfa18GA7vd1aNFufhpmCiMWxoGSewH/T1pnCZrsvGYIj//qC7aiQVKYBngO7UYWGaytgc_0_OEM:NONSLP_EnterpriseS_RS5
|
d06934ee-5448-4fd1-964a-cd077618aa06_43T%f%BQ-NH%f%92J-XKT%f%M7-KT%f%3KK-P3%f%9PB_125_X21-83233_V+y0SFmAnGwRwgNz+0sO0mj+XxSjbdRDpom1Iqx2BJcsf96Q5ittJOcMhKiNswyKuq5suM5vy60tA/AUdb1mrnnrnXfmz7nFam/BIOOfa18GA7vd1aNFufhpmCiMWxoGSewH/T1pnCZrsvGYIj//qC7aiQVKYBngO7UYWGaytgc_0_OEM:NONSLP_EnterpriseS_RS5
|
||||||
706e0cfd-23f4-43bb-a9af-1a492b9f1302_NK96Y-D9CD8-W44CQ-R8YTK-DYJWX_125_X21-05035_U2DIv+LAhSGz0rNbTiMQYaP3M41+0+ZioF7vh0COeeJSIruDFCZ3Li7ZM3dSleg6QTCxG04uZ3i3r1bCZv0+WAfU9rG+3BqLAwKlJS/31rETeRWvrxB1UK4mTMHwAJc9txDAc15ureqF+2b9pIIpwLljmFer6fI7z0iI6I/ZuTU_0_OEM:NONSLP_EnterpriseS_RS1
|
706e0cfd-23f4-43bb-a9af-1a492b9f1302_NK9%f%6Y-D9%f%CD8-W44%f%CQ-R8%f%YTK-DY%f%JWX_125_X21-05035_U2DIv+LAhSGz0rNbTiMQYaP3M41+0+ZioF7vh0COeeJSIruDFCZ3Li7ZM3dSleg6QTCxG04uZ3i3r1bCZv0+WAfU9rG+3BqLAwKlJS/31rETeRWvrxB1UK4mTMHwAJc9txDAc15ureqF+2b9pIIpwLljmFer6fI7z0iI6I/ZuTU_0_OEM:NONSLP_EnterpriseS_RS1
|
||||||
faa57748-75c8-40a2-b851-71ce92aa8b45_FWN7H-PF93Q-4GGP8-M8RF3-MDWWW_125_X19-99617_0frpwr4N/wBVRA/nOvAMqkxmRj6Vv9mA+jVNtnurAL1TjkPN/y+6YVUd5MP/Y4As4kddHoHiZXI+2siKHJsaV95ppXoHKR8d7FRVitr1F+82TbB7OVvdCclGrRZymnq25HvtSC3BROHt7ZXTgSCWMyB7MlbLiqHiTymOj5OMX1g_0_OEM:NONSLP_EnterpriseS_TH
|
faa57748-75c8-40a2-b851-71ce92aa8b45_FWN%f%7H-PF%f%93Q-4GG%f%P8-M8%f%RF3-MD%f%WWW_125_X19-99617_0frpwr4N/wBVRA/nOvAMqkxmRj6Vv9mA+jVNtnurAL1TjkPN/y+6YVUd5MP/Y4As4kddHoHiZXI+2siKHJsaV95ppXoHKR8d7FRVitr1F+82TbB7OVvdCclGrRZymnq25HvtSC3BROHt7ZXTgSCWMyB7MlbLiqHiTymOj5OMX1g_0_OEM:NONSLP_EnterpriseS_TH
|
||||||
2c060131-0e43-4e01-adc1-cf5ad1100da8_RQFNW-9TPM3-JQ73T-QV4VQ-DV9PT_126_X22-66108_UeA6O2iIW6zFMJzLMCQjVA7gUHOGRTiFB6LPrgjhgfJEXSZnDjxw8wsR+tp+JQWeaQDsVt06c2byH3z7Ft2wNk8n3gcXUknIjlcCckNjw05WDI64/wCqz+gtf1RajMEoV/mODpBx7rdLtCg03FyV7Z9LOib4/WLSmnxjDPKMG7s_1_Volume:MAK_EnterpriseSN_VB
|
2c060131-0e43-4e01-adc1-cf5ad1100da8_RQF%f%NW-9T%f%PM3-JQ7%f%3T-QV%f%4VQ-DV%f%9PT_126_X22-66108_UeA6O2iIW6zFMJzLMCQjVA7gUHOGRTiFB6LPrgjhgfJEXSZnDjxw8wsR+tp+JQWeaQDsVt06c2byH3z7Ft2wNk8n3gcXUknIjlcCckNjw05WDI64/wCqz+gtf1RajMEoV/mODpBx7rdLtCg03FyV7Z9LOib4/WLSmnxjDPKMG7s_1_Volume:MAK_EnterpriseSN_VB
|
||||||
e8f74caa-03fb-4839-8bcc-2e442b317e53_M33WV-NHY3C-R7FPM-BQGPT-239PG_126_X21-83264_NtP6sMWmOTCdABAbgIZfxZzRs8zaqzfaabLeFXQJvfJvQPLQPk2UxMliASJG+7YwwbTD8pyhUoQqUYrlCzJZ6jDSDyUTJkXgo9akR4fBOg6Z5wn5fW8NGAMDcLND5d9XxHl0gWH/HZNIs/GZaPJsCVVqPr7X8bk/y0DeIofxICU_1_Volume:MAK_EnterpriseSN_RS5
|
e8f74caa-03fb-4839-8bcc-2e442b317e53_M33%f%WV-NH%f%Y3C-R7F%f%PM-BQ%f%GPT-23%f%9PG_126_X21-83264_NtP6sMWmOTCdABAbgIZfxZzRs8zaqzfaabLeFXQJvfJvQPLQPk2UxMliASJG+7YwwbTD8pyhUoQqUYrlCzJZ6jDSDyUTJkXgo9akR4fBOg6Z5wn5fW8NGAMDcLND5d9XxHl0gWH/HZNIs/GZaPJsCVVqPr7X8bk/y0DeIofxICU_1_Volume:MAK_EnterpriseSN_RS5
|
||||||
3d1022d8-969f-4222-b54b-327f5a5af4c9_2DBW3-N2PJG-MVHW3-G7TDK-9HKR4_126_X21-04921_WeNSkuiC3iyNT9tDqlj6KvM17UYMsYjEelyyMEyPEXSAbYA08lYtYJjCzxSE9T30p9dxqPIuj370OwHhAxG8a51/HoLNWR0grj08HmdOXUA8Ap4clEivxKM0zRvwPR6L2M2HQP0nN54c9It7ikzweJ0X2HHOb58oEw9LbMeUM/Y_0_Volume:MAK_EnterpriseSN_RS1
|
3d1022d8-969f-4222-b54b-327f5a5af4c9_2DB%f%W3-N2%f%PJG-MVH%f%W3-G7%f%TDK-9H%f%KR4_126_X21-04921_WeNSkuiC3iyNT9tDqlj6KvM17UYMsYjEelyyMEyPEXSAbYA08lYtYJjCzxSE9T30p9dxqPIuj370OwHhAxG8a51/HoLNWR0grj08HmdOXUA8Ap4clEivxKM0zRvwPR6L2M2HQP0nN54c9It7ikzweJ0X2HHOb58oEw9LbMeUM/Y_0_Volume:MAK_EnterpriseSN_RS1
|
||||||
60c243e1-f90b-4a1b-ba89-387294948fb6_NTX6B-BRYC2-K6786-F6MVQ-M7V2X_126_X19-98770_QLG40WW/TtUqtir9K6FJCQXU1mfn27uutdOunHJ3gXk6v0Mbxaqu9GKqpg5xFzdFiOPb/8Bmk/ylwceXgoaUx1nKcBGb/Bg+jICiNMEYIbGyMuYiHb0iJeVbjbBLLfWuAAuUPftfnKPH3dAu1YvhaS5nv7a5wICrXdJWeVNpBxk_0_Volume:MAK_EnterpriseSN_TH
|
60c243e1-f90b-4a1b-ba89-387294948fb6_NTX%f%6B-BR%f%YC2-K67%f%86-F6%f%MVQ-M7%f%V2X_126_X19-98770_QLG40WW/TtUqtir9K6FJCQXU1mfn27uutdOunHJ3gXk6v0Mbxaqu9GKqpg5xFzdFiOPb/8Bmk/ylwceXgoaUx1nKcBGb/Bg+jICiNMEYIbGyMuYiHb0iJeVbjbBLLfWuAAuUPftfnKPH3dAu1YvhaS5nv7a5wICrXdJWeVNpBxk_0_Volume:MAK_EnterpriseSN_TH
|
||||||
eb6d346f-1c60-4643-b960-40ec31596c45_DXG7C-N36C4-C4HTG-X4T3X-2YV77_161_X21-43626_vHO/5UEtrsDzGC30A2Ya5DYXlNMs7hVYiLvM7X31xkaFMxogbiy3ZDxBbjRku3VXyW+TYsFX/D/wdJgFmMrhsNrObkxqzYMMRjx+BpwOx2PspKpS2RyzovyRl8v93SvHB5IyoO2/3pm2YqJDK1hXLhms6+DDPuiofQt36q47reQ_0_____Retail_ProfessionalWorkstation
|
eb6d346f-1c60-4643-b960-40ec31596c45_DXG%f%7C-N3%f%6C4-C4H%f%TG-X4%f%T3X-2Y%f%V77_161_X21-43626_vHO/5UEtrsDzGC30A2Ya5DYXlNMs7hVYiLvM7X31xkaFMxogbiy3ZDxBbjRku3VXyW+TYsFX/D/wdJgFmMrhsNrObkxqzYMMRjx+BpwOx2PspKpS2RyzovyRl8v93SvHB5IyoO2/3pm2YqJDK1hXLhms6+DDPuiofQt36q47reQ_0_____Retail_ProfessionalWorkstation
|
||||||
89e87510-ba92-45f6-8329-3afa905e3e83_WYPNQ-8C467-V2W6J-TX4WX-WT2RQ_162_X21-43644_phlxNLr+sk8cCCmAVU3k3XrtD6sFDeoaODc+21soKqePbVQbzPHgokS73ccok6/gDfu/u5UKc7omL8pm2IhIhf70oC+8M/FFp0zRFeC/ZFXdF2tL23oKWI9kZbvcaoZBiqaDGc1bNYi5KAZYaJU8wwqw16ZnohQJZ7QR9cgUfFQ_0_____Retail_ProfessionalWorkstationN
|
89e87510-ba92-45f6-8329-3afa905e3e83_WYP%f%NQ-8C%f%467-V2W%f%6J-TX%f%4WX-WT%f%2RQ_162_X21-43644_phlxNLr+sk8cCCmAVU3k3XrtD6sFDeoaODc+21soKqePbVQbzPHgokS73ccok6/gDfu/u5UKc7omL8pm2IhIhf70oC+8M/FFp0zRFeC/ZFXdF2tL23oKWI9kZbvcaoZBiqaDGc1bNYi5KAZYaJU8wwqw16ZnohQJZ7QR9cgUfFQ_0_____Retail_ProfessionalWorkstationN
|
||||||
62f0c100-9c53-4e02-b886-a3528ddfe7f6_8PTT6-RNW4C-6V7J2-C2D3X-MHBPB_164_X21-04955_Px7QWdfy0esrMzQoydKlmIcGdfV0pQvbnumyrh4evDNF9gpENm8OIfZfljIynury0qZAkw4AG3uGyp+5IxZGIh6U3dz41uNVfEcA9NZ34OEBXMtjEOU1ZbJ8wp8JecQKwlORclvsri9OOi0GbGc0TYRanlci2jJL/3x/gSuWXCs_0_____Retail_ProfessionalEducation
|
62f0c100-9c53-4e02-b886-a3528ddfe7f6_8PT%f%T6-RN%f%W4C-6V7%f%J2-C2%f%D3X-MH%f%BPB_164_X21-04955_Px7QWdfy0esrMzQoydKlmIcGdfV0pQvbnumyrh4evDNF9gpENm8OIfZfljIynury0qZAkw4AG3uGyp+5IxZGIh6U3dz41uNVfEcA9NZ34OEBXMtjEOU1ZbJ8wp8JecQKwlORclvsri9OOi0GbGc0TYRanlci2jJL/3x/gSuWXCs_0_____Retail_ProfessionalEducation
|
||||||
13a38698-4a49-4b9e-8e83-98fe51110953_GJTYN-HDMQY-FRR76-HVGC7-QPF8P_165_X21-04956_GRSYno4+yqU/JMxHLDKdvdFWRz1uT90n5JkTvSqztDvXMf/mBhSV/OpppJWGo6UL0FwqYcu9oXl+Vx336pLAE5/EDzQHh+QCwOCDJiTKnd3hW/zrGMe6Sb0OAIkNNML9gcOBbr1IHFWhN99r8ZWl5JjpzMs2nPjejB1Ec8NCcpE_0_____Retail_ProfessionalEducationN
|
13a38698-4a49-4b9e-8e83-98fe51110953_GJT%f%YN-HD%f%MQY-FRR%f%76-HV%f%GC7-QP%f%F8P_165_X21-04956_GRSYno4+yqU/JMxHLDKdvdFWRz1uT90n5JkTvSqztDvXMf/mBhSV/OpppJWGo6UL0FwqYcu9oXl+Vx336pLAE5/EDzQHh+QCwOCDJiTKnd3hW/zrGMe6Sb0OAIkNNML9gcOBbr1IHFWhN99r8ZWl5JjpzMs2nPjejB1Ec8NCcpE_0_____Retail_ProfessionalEducationN
|
||||||
df96023b-dcd9-4be2-afa0-c6c871159ebe_NJCF7-PW8QT-3324D-688JX-2YV66_175_X21-41295_kkJyX1AwYgDYcGK1eIRdocybkbAfEtQkDxhRUhY89X2i2PSD9jcsGQgHWyD3KUKWb3bzR8QkDS3MTeieOw3EzD0RyAQhHc6lRR+rk18lh5UOVCgrZ6byxn29Ur+jAh0LJXImggC9JMGb2cTYaZckxzm3ICoAKwrmI9JnrzBTVmY_0_____Retail_ServerRdsh
|
df96023b-dcd9-4be2-afa0-c6c871159ebe_NJC%f%F7-PW%f%8QT-332%f%4D-68%f%8JX-2Y%f%V66_175_X21-41295_kkJyX1AwYgDYcGK1eIRdocybkbAfEtQkDxhRUhY89X2i2PSD9jcsGQgHWyD3KUKWb3bzR8QkDS3MTeieOw3EzD0RyAQhHc6lRR+rk18lh5UOVCgrZ6byxn29Ur+jAh0LJXImggC9JMGb2cTYaZckxzm3ICoAKwrmI9JnrzBTVmY_0_____Retail_ServerRdsh
|
||||||
d4ef7282-3d2c-4cf0-9976-8854e64a8d1e_V3WVW-N2PV2-CGWC3-34QGF-VMJ2C_178_X21-32983_YIMgXu2dZ9x1r1NLs3egTc/8EYc1RndYDvoX7QquQQLnhnhbSNBw3hmlqrQ0zNsTLut3EKpGZK2CwPspJJWE60lecdxI4211K748P6vkuqHPL4uFqXyKxTG3qRrtDIra5nnMn4GqG2fWuguzTXaumu8cJU3H1uTOsR1E/DQnJJ0_0_____Retail_Cloud
|
d4ef7282-3d2c-4cf0-9976-8854e64a8d1e_V3W%f%VW-N2%f%PV2-CGW%f%C3-34%f%QGF-VM%f%J2C_178_X21-32983_YIMgXu2dZ9x1r1NLs3egTc/8EYc1RndYDvoX7QquQQLnhnhbSNBw3hmlqrQ0zNsTLut3EKpGZK2CwPspJJWE60lecdxI4211K748P6vkuqHPL4uFqXyKxTG3qRrtDIra5nnMn4GqG2fWuguzTXaumu8cJU3H1uTOsR1E/DQnJJ0_0_____Retail_Cloud
|
||||||
af5c9381-9240-417d-8d35-eb40cd03e484_NH9J3-68WK7-6FB93-4K3DF-DJ4F6_179_X21-32987_H0qrFdf+FQxcSRJDtEwd8OfwC4iH/25Q01jz3QuB9yhEqB0W1i83u0WDpVK04pvU1EDCCRRI/DhXynbkWpLC0chdTOW4k5jIy+aa0cD3fccz9ChSjVHMzyTg3abEVFAvy9rttUyxcFIOKcINXHTxTRp5cZPwOa393tlJyBiliAo_0_____Retail_CloudN
|
af5c9381-9240-417d-8d35-eb40cd03e484_NH9%f%J3-68%f%WK7-6FB%f%93-4K%f%3DF-DJ%f%4F6_179_X21-32987_H0qrFdf+FQxcSRJDtEwd8OfwC4iH/25Q01jz3QuB9yhEqB0W1i83u0WDpVK04pvU1EDCCRRI/DhXynbkWpLC0chdTOW4k5jIy+aa0cD3fccz9ChSjVHMzyTg3abEVFAvy9rttUyxcFIOKcINXHTxTRp5cZPwOa393tlJyBiliAo_0_____Retail_CloudN
|
||||||
8ab9bdd1-1f67-4997-82d9-8878520837d9_XQQYW-NFFMW-XJPBH-K8732-CKFFD_188_X21-99378_Bwx3E7qmE6M8UR6+KPqLnnavI6ThNHHUO717RJY9di2YI9rzC3O0LceXOHjshSKwfwxosqFsD/p/inrJmabed1yA/ZWwISyGtAIGTtRgpuSE4TAfW6KEW0v7rcr2wwwDq7DHSuz4QN4odEGe9bvtx4zIZKufQzzN4TN2rd/BJkE_0_____OEM:DM_IoTEnterprise
|
8ab9bdd1-1f67-4997-82d9-8878520837d9_XQQ%f%YW-NF%f%FMW-XJP%f%BH-K8%f%732-CK%f%FFD_188_X21-99378_Bwx3E7qmE6M8UR6+KPqLnnavI6ThNHHUO717RJY9di2YI9rzC3O0LceXOHjshSKwfwxosqFsD/p/inrJmabed1yA/ZWwISyGtAIGTtRgpuSE4TAfW6KEW0v7rcr2wwwDq7DHSuz4QN4odEGe9bvtx4zIZKufQzzN4TN2rd/BJkE_0_____OEM:DM_IoTEnterprise
|
||||||
ed655016-a9e8-4434-95d9-4345352c2552_QPM6N-7J2WJ-P88HH-P3YRH-YY74H_191_X21-99682_lE8qL1p4m68mv9wcxU2sdKZPIccybtOjr+aMAdV+sLHs9wzE26oz5GiSZ3UzpU7yoYrNMqwGkKX6mrCEGRLh+XR2Ricp7ELA1PkzaGm0FLUqaK2GNVQ00i+s6KcA2XRr/gWOhhGTqSCjpSi9cMiqMbftf9Bo/BJVK3ib9xU4OQw_0_OEM:NONSLP_IoTEnterpriseS_VB
|
ed655016-a9e8-4434-95d9-4345352c2552_QPM%f%6N-7J%f%2WJ-P88%f%HH-P3%f%YRH-YY%f%74H_191_X21-99682_lE8qL1p4m68mv9wcxU2sdKZPIccybtOjr+aMAdV+sLHs9wzE26oz5GiSZ3UzpU7yoYrNMqwGkKX6mrCEGRLh+XR2Ricp7ELA1PkzaGm0FLUqaK2GNVQ00i+s6KcA2XRr/gWOhhGTqSCjpSi9cMiqMbftf9Bo/BJVK3ib9xU4OQw_0_OEM:NONSLP_IoTEnterpriseS_VB
|
||||||
d4bdc678-0a4b-4a32-a5b3-aaa24c3b0f24_K9VKN-3BGWV-Y624W-MCRMQ-BHDCD_202_X22-53884_hPcIn0dF9Dq6zlXd3RxBqVDPDnf5sTasTjUqhD6lGc9IkTc8476NHd1PV1Ds++VO34/dw2H2PWk33LT5Es6PnUi32Ypva4POy4QJo5W3qyduiJiHUOM5GS9yAkKfdHFgUXaUVwopYKq+EwmgxFmEvHYdWgREHgIMyNoKAZQK0Ok_0_____Retail_CloudEditionN
|
d4bdc678-0a4b-4a32-a5b3-aaa24c3b0f24_K9V%f%KN-3B%f%GWV-Y62%f%4W-MC%f%RMQ-BH%f%DCD_202_X22-53884_hPcIn0dF9Dq6zlXd3RxBqVDPDnf5sTasTjUqhD6lGc9IkTc8476NHd1PV1Ds++VO34/dw2H2PWk33LT5Es6PnUi32Ypva4POy4QJo5W3qyduiJiHUOM5GS9yAkKfdHFgUXaUVwopYKq+EwmgxFmEvHYdWgREHgIMyNoKAZQK0Ok_0_____Retail_CloudEditionN
|
||||||
92fb8726-92a8-4ffc-94ce-f82e07444653_KY7PN-VR6RX-83W6Y-6DDYQ-T6R4W_203_X22-53847_DCP6QzPj+BD1EEmlBelBt7x9AmvQOfd7kdkUB0b0x6/TNHRnZtdyix3pNX2IDQtJbLnNLc2ZlMmupbZQrtyxe3xl8+xlCnHByXZpzFty9sGzq3MozHHA9u9WsJEf5R7tnFDplNM1UitlTVTAyuCGk83brY4zjmz/52pUQyQHzjI_0_____Retail_CloudEdition
|
92fb8726-92a8-4ffc-94ce-f82e07444653_KY7%f%PN-VR%f%6RX-83W%f%6Y-6D%f%DYQ-T6%f%R4W_203_X22-53847_DCP6QzPj+BD1EEmlBelBt7x9AmvQOfd7kdkUB0b0x6/TNHRnZtdyix3pNX2IDQtJbLnNLc2ZlMmupbZQrtyxe3xl8+xlCnHByXZpzFty9sGzq3MozHHA9u9WsJEf5R7tnFDplNM1UitlTVTAyuCGk83brY4zjmz/52pUQyQHzjI_0_____Retail_CloudEdition
|
||||||
d4f9b41f-205c-405e-8e08-3d16e88e02be_J7NJW-V6KBM-CC8RW-Y29Y4-HQ2MJ_205_X23-15027_U9eyfIBXrs++lyP6OjHHaF/wjieAxQeSKwzSkGBeTTpyCDcenq8t4cKvqDHnauSZzaVPWNoVcASkMCdlJi3EkR29KSgvx9/K2OB8LVH2PPpqvwjm1ZZdrvLMGhW83A/KRrtN9AOx7bnPC8MNLErnzbRRS9/aOrmp4Uzo8EIVagI_0_OEM:NONSLP_IoTEnterpriseSK
|
d4f9b41f-205c-405e-8e08-3d16e88e02be_J7N%f%JW-V6%f%KBM-CC8%f%RW-Y2%f%9Y4-HQ%f%2MJ_205_X23-15027_U9eyfIBXrs++lyP6OjHHaF/wjieAxQeSKwzSkGBeTTpyCDcenq8t4cKvqDHnauSZzaVPWNoVcASkMCdlJi3EkR29KSgvx9/K2OB8LVH2PPpqvwjm1ZZdrvLMGhW83A/KRrtN9AOx7bnPC8MNLErnzbRRS9/aOrmp4Uzo8EIVagI_0_OEM:NONSLP_IoTEnterpriseSK
|
||||||
) do (
|
) do (
|
||||||
for /f "tokens=1-10 delims=_" %%A in ("%%#") do (
|
for /f "tokens=1-10 delims=_" %%A in ("%%#") do (
|
||||||
|
|
||||||
|
@ -870,9 +1050,8 @@ set key=%%B
|
||||||
REM Generate ticket
|
REM Generate ticket
|
||||||
|
|
||||||
if %1==ticket if "%key%"=="%%B" (
|
if %1==ticket if "%key%"=="%%B" (
|
||||||
set _nil=
|
|
||||||
set "string=OSMajorVersion=5;OSMinorVersion=1;OSPlatformId=2;PP=0;Pfn=Microsoft.Windows.%%C.%%D_8wekyb3d8bbwe;DownlevelGenuineState=1;$([char]0)"
|
set "string=OSMajorVersion=5;OSMinorVersion=1;OSPlatformId=2;PP=0;Pfn=Microsoft.Windows.%%C.%%D_8wekyb3d8bbwe;DownlevelGenuineState=1;$([char]0)"
|
||||||
for /f "tokens=* delims=" %%i in ('powershell [convert]::ToBas!_nil!e64String([Text.Encoding]::Unicode.GetBytes("""!string!"""^)^)') do set "encoded=%%i"
|
for /f "tokens=* delims=" %%i in ('%psc% [conv%f%ert]::ToBas%f%e64String([Text.En%f%coding]::Uni%f%code.GetBytes("""!string!"""^)^)') do set "encoded=%%i"
|
||||||
echo "!encoded!" | find "AAAA" 1>nul || exit /b
|
echo "!encoded!" | find "AAAA" 1>nul || exit /b
|
||||||
|
|
||||||
<nul set /p "=<?xml version="1.0" encoding="utf-8"?><genuineAuthorization xmlns="http://www.microsoft.com/DRM/SL/GenuineAuthorization/1.0"><version>1.0</version><genuineProperties origin="sppclient"><properties>OA3xOriginalProductId=;OA3xOriginalProductKey=;SessionId=!encoded!;TimeStampClient=2022-10-11T12:00:00Z</properties><signatures><signature name="clientLockboxKey" method="rsa-sha256">%%E=</signature></signatures></genuineProperties></genuineAuthorization>" >"%tdir%\GenuineTicket"
|
<nul set /p "=<?xml version="1.0" encoding="utf-8"?><genuineAuthorization xmlns="http://www.microsoft.com/DRM/SL/GenuineAuthorization/1.0"><version>1.0</version><genuineProperties origin="sppclient"><properties>OA3xOriginalProductId=;OA3xOriginalProductKey=;SessionId=!encoded!;TimeStampClient=2022-10-11T12:00:00Z</properties><signatures><signature name="clientLockboxKey" method="rsa-sha256">%%E=</signature></signatures></genuineProperties></genuineAuthorization>" >"%tdir%\GenuineTicket"
|
||||||
|
@ -903,9 +1082,9 @@ set notfoundaltactID=
|
||||||
if %_NoEditionChange%==1 exit /b
|
if %_NoEditionChange%==1 exit /b
|
||||||
|
|
||||||
for %%# in (
|
for %%# in (
|
||||||
125_EnterpriseS-2021___________cce9d2de-98ee-4ce2-8113-222620c64a27_ed655016-a9e8-4434-95d9-4345352c2552_QPM6N-7J2WJ-P88HH-P3YRH-YY74H_IoTEnterpriseS-2021
|
125_EnterpriseS-2021___________cce9d2de-98ee-4ce2-8113-222620c64a27_ed655016-a9e8-4434-95d9-4345352c2552_QPM%f%6N-7J2%f%WJ-P8%f%8HH-P3Y%f%RH-YY%f%74H_IoTEnterpriseS-2021
|
||||||
191_IoTEnterpriseS-Win11_______59eb965c-9150-42b7-a0ec-22151b9897c5_d4f9b41f-205c-405e-8e08-3d16e88e02be_J7NJW-V6KBM-CC8RW-Y29Y4-HQ2MJ_IoTEnterpriseSK-Win11
|
191_IoTEnterpriseS-Win11_______59eb965c-9150-42b7-a0ec-22151b9897c5_d4f9b41f-205c-405e-8e08-3d16e88e02be_J7N%f%JW-V6K%f%BM-CC%f%8RW-Y29%f%Y4-HQ%f%2MJ_IoTEnterpriseSK-Win11
|
||||||
138_ProfessionalSingleLanguage_a48938aa-62fa-4966-9d44-9f04da3f72f2_4de7cb65-cdf1-4de9-8ae8-e3cce27b9f2c_VK7JG-NPHTM-C97JM-9MPGT-3V66T_Professional
|
138_ProfessionalSingleLanguage_a48938aa-62fa-4966-9d44-9f04da3f72f2_4de7cb65-cdf1-4de9-8ae8-e3cce27b9f2c_VK7%f%JG-NPH%f%TM-C9%f%7JM-9MP%f%GT-3V%f%66T_Professional
|
||||||
) do (
|
) do (
|
||||||
for /f "tokens=1-6 delims=_" %%A in ("%%#") do if %osSKU%==%%A (
|
for /f "tokens=1-6 delims=_" %%A in ("%%#") do if %osSKU%==%%A (
|
||||||
echo "!applist!" | find /i "%%C" 1>nul && (
|
echo "!applist!" | find /i "%%C" 1>nul && (
|
|
@ -14,7 +14,7 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
:: To activate, run the script with /KMS38 parameter or change 0 to 1 in below line
|
:: To activate, run the script with "/KMS38" parameter or change 0 to 1 in below line
|
||||||
set _act=0
|
set _act=0
|
||||||
|
|
||||||
:: To remove KMS38 protection, run the script with /KMS38-RemoveProtection parameter or change 0 to 1 in below line
|
:: To remove KMS38 protection, run the script with /KMS38-RemoveProtection parameter or change 0 to 1 in below line
|
||||||
|
@ -65,7 +65,7 @@ pushd "%~dp0"
|
||||||
>nul findstr /rxc:".*" "%~nx0"
|
>nul findstr /rxc:".*" "%~nx0"
|
||||||
if not %errorlevel%==0 (
|
if not %errorlevel%==0 (
|
||||||
echo:
|
echo:
|
||||||
echo Error: This is not a correct file. It has LF line ending issue.
|
echo Error: Script either has LF line ending issue, or it failed to read itself.
|
||||||
echo:
|
echo:
|
||||||
ping 127.0.0.1 -n 6 > nul
|
ping 127.0.0.1 -n 6 > nul
|
||||||
popd
|
popd
|
||||||
|
@ -137,7 +137,7 @@ set "specific_kms=SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectio
|
||||||
if %winbuild% LSS 14393 (
|
if %winbuild% LSS 14393 (
|
||||||
%eline%
|
%eline%
|
||||||
echo Unsupported OS version detected.
|
echo Unsupported OS version detected.
|
||||||
echo Project is supported for Windows 10/11/Server, build 14393 and later.
|
echo KMS38 Activation is supported for Windows 10/11/Server, build 14393 and later.
|
||||||
goto dk_done
|
goto dk_done
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -282,11 +282,13 @@ echo [%winos% ^| %winbuild%]
|
||||||
if defined _evalserv (
|
if defined _evalserv (
|
||||||
echo Server Evaluation cannot be activated. Convert it to full Server OS.
|
echo Server Evaluation cannot be activated. Convert it to full Server OS.
|
||||||
echo:
|
echo:
|
||||||
echo Check 'Change Edition' Option in MAS.
|
echo In MAS, goto Extras and use 'Change Edition' option.
|
||||||
) else (
|
) else (
|
||||||
echo Evaluation Editions cannot be activated. Download ^& Install full version of Windows OS.
|
echo Evaluation Editions cannot be activated.
|
||||||
|
echo You need to install full version of %winos%
|
||||||
echo:
|
echo:
|
||||||
echo https://massgrave.dev/
|
echo Download it from here,
|
||||||
|
echo https://massgrave.dev/genuine-installation-media.html
|
||||||
)
|
)
|
||||||
goto dk_done
|
goto dk_done
|
||||||
)
|
)
|
||||||
|
@ -359,10 +361,11 @@ echo Enabling Windows Script Host [Successful]
|
||||||
|
|
||||||
echo Initiating Diagnostic Tests...
|
echo Initiating Diagnostic Tests...
|
||||||
|
|
||||||
set "_serv=ClipSVC sppsvc Winmgmt"
|
set "_serv=ClipSVC sppsvc KeyIso Winmgmt"
|
||||||
|
|
||||||
:: Client License Service (ClipSVC)
|
:: Client License Service (ClipSVC)
|
||||||
:: Software Protection
|
:: Software Protection
|
||||||
|
:: CNG Key Isolation
|
||||||
:: Windows Management Instrumentation
|
:: Windows Management Instrumentation
|
||||||
|
|
||||||
call :dk_errorcheck
|
call :dk_errorcheck
|
||||||
|
@ -435,8 +438,12 @@ if !error_code! EQU 0 (
|
||||||
call :dk_refresh
|
call :dk_refresh
|
||||||
echo Installing KMS Client Setup Key [%key%] [Successful]
|
echo Installing KMS Client Setup Key [%key%] [Successful]
|
||||||
) else (
|
) else (
|
||||||
set error=1
|
|
||||||
call :dk_color %Red% "Installing KMS Client Setup Key [%key%] [Failed] !error_code!"
|
call :dk_color %Red% "Installing KMS Client Setup Key [%key%] [Failed] !error_code!"
|
||||||
|
if not defined error (
|
||||||
|
call :dk_color %Magenta% "In MAS, Goto Troubleshoot and run Fix Licensing option."
|
||||||
|
set showfix=1
|
||||||
|
)
|
||||||
|
set error=1
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -499,14 +506,15 @@ goto :k_final
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:: Generate GenuineTicket.xml and apply
|
:: Generate GenuineTicket.xml and apply
|
||||||
:: Most correct way to apply a ticket is by restarting ClipSVC service but we can not check the log details in this way
|
:: In some cases clipup -v -o method fails and in some cases service restart method fails as well
|
||||||
:: To get the log details and also to correctly apply ticket, script will install tickets two times (service restart + clipup -v -o)
|
:: To maximize success rate and get better error details, script will install tickets two times (service restart + clipup -v -o)
|
||||||
|
|
||||||
set "tdir=%ProgramData%\Microsoft\Windows\ClipSVC\GenuineTicket"
|
set "tdir=%ProgramData%\Microsoft\Windows\ClipSVC\GenuineTicket"
|
||||||
if not exist "%tdir%\" md "%tdir%\" %nul%
|
if not exist "%tdir%\" md "%tdir%\" %nul%
|
||||||
|
|
||||||
if exist "%tdir%\Genuine*" del /f /q "%tdir%\Genuine*" %nul%
|
if exist "%tdir%\Genuine*" del /f /q "%tdir%\Genuine*" %nul%
|
||||||
if exist "%tdir%\*.xml" del /f /q "%tdir%\*.xml" %nul%
|
if exist "%tdir%\*.xml" del /f /q "%tdir%\*.xml" %nul%
|
||||||
|
if exist "%ProgramData%\Microsoft\Windows\ClipSVC\Install\Migration\*" del /f /q "%ProgramData%\Microsoft\Windows\ClipSVC\Install\Migration\*" %nul%
|
||||||
|
|
||||||
:: Signature value is as it is, it's not encoded
|
:: Signature value is as it is, it's not encoded
|
||||||
:: Session ID is in Base64 encoded format. It's decoded value is "OSMajorVersion=5;OSMinorVersion=1;OSPlatformId=2;PP=0;GVLKExp=2038-01-19T03:14:07Z;DownlevelGenuineState=1;"
|
:: Session ID is in Base64 encoded format. It's decoded value is "OSMajorVersion=5;OSMinorVersion=1;OSPlatformId=2;PP=0;GVLKExp=2038-01-19T03:14:07Z;DownlevelGenuineState=1;"
|
||||||
|
@ -547,6 +555,7 @@ net start ClipSVC /y %nul%
|
||||||
%_xmlexist% timeout /t 2 %nul%
|
%_xmlexist% timeout /t 2 %nul%
|
||||||
|
|
||||||
%_xmlexist% (
|
%_xmlexist% (
|
||||||
|
set error=1
|
||||||
if exist "%tdir%\*.xml" del /f /q "%tdir%\*.xml" %nul%
|
if exist "%tdir%\*.xml" del /f /q "%tdir%\*.xml" %nul%
|
||||||
call :dk_color %Red% "Installing GenuineTicket.xml [Failed With ClipSVC Service Restart, Wait...]"
|
call :dk_color %Red% "Installing GenuineTicket.xml [Failed With ClipSVC Service Restart, Wait...]"
|
||||||
)
|
)
|
||||||
|
@ -554,6 +563,26 @@ call :dk_color %Red% "Installing GenuineTicket.xml [Failed With ClipS
|
||||||
|
|
||||||
copy /y /b "%tdir%\GenuineTicket" "%tdir%\GenuineTicket.xml" %nul%
|
copy /y /b "%tdir%\GenuineTicket" "%tdir%\GenuineTicket.xml" %nul%
|
||||||
clipup -v -o
|
clipup -v -o
|
||||||
|
|
||||||
|
set rebuildinfo=
|
||||||
|
|
||||||
|
%_xmlexist% (
|
||||||
|
set error=1
|
||||||
|
set rebuildinfo=1
|
||||||
|
call :dk_color %Red% "Installing GenuineTicket.xml [Failed With clipup -v -o]"
|
||||||
|
)
|
||||||
|
|
||||||
|
if exist "%ProgramData%\Microsoft\Windows\ClipSVC\Install\Migration\*.xml" (
|
||||||
|
set error=1
|
||||||
|
set rebuildinfo=1
|
||||||
|
call :dk_color %Red% "Checking Ticket Migration [Failed]"
|
||||||
|
)
|
||||||
|
|
||||||
|
if defined applist if not defined showfix if defined rebuildinfo (
|
||||||
|
set showfix=1
|
||||||
|
call :dk_color %Magenta% "In MAS, Goto Troubleshoot and run Fix Licensing option."
|
||||||
|
)
|
||||||
|
|
||||||
if exist "%tdir%\Genuine*" del /f /q "%tdir%\Genuine*" %nul%
|
if exist "%tdir%\Genuine*" del /f /q "%tdir%\Genuine*" %nul%
|
||||||
|
|
||||||
::==========================================================================================================================================
|
::==========================================================================================================================================
|
||||||
|
@ -590,6 +619,7 @@ goto :k_final
|
||||||
)
|
)
|
||||||
|
|
||||||
call :dk_color %Red% "Activation Failed"
|
call :dk_color %Red% "Activation Failed"
|
||||||
|
if not defined error call :dk_color %Magenta% "In MAS, Goto Troubleshoot and run Fix Licensing option."
|
||||||
call :dk_color2 %Magenta% "Check this page for help" %_Yellow% " https://massgrave.dev/troubleshoot"
|
call :dk_color2 %Magenta% "Check this page for help" %_Yellow% " https://massgrave.dev/troubleshoot"
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
@ -633,7 +663,9 @@ echo Deleting copied clipup.exe file [Successful]
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
if %osSKU%==175 call :dk_color %Red% "ServerRdsh Editon does not officially support activation on non-azure platforms."
|
for %%# in (175 407) do if %osSKU%==%%# (
|
||||||
|
call :dk_color %Red% "%winos% does not support activation on non-azure platforms."
|
||||||
|
)
|
||||||
|
|
||||||
goto :dk_done
|
goto :dk_done
|
||||||
|
|
||||||
|
@ -747,22 +779,6 @@ if %_wmic% EQU 0 set "chkapp=for /f "tokens=2 delims==" %%a in ('%psc% "(([WMISE
|
||||||
%chkapp% do (if defined applist (call set "applist=!applist! %%a") else (call set "applist=%%a"))
|
%chkapp% do (if defined applist (call set "applist=!applist! %%a") else (call set "applist=%%a"))
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
:: Get Product name (WMI/REG methods are not reliable in all conditions, hence winbrand.dll method is used)
|
|
||||||
|
|
||||||
:dk_product
|
|
||||||
|
|
||||||
set winos=
|
|
||||||
set d1=[DllImport(\"winbrand\",CharSet=CharSet.Unicode)]public static extern string BrandingFormatString(string s);
|
|
||||||
set d2=$AP=Add-Type -Member '%d1%' -Name D1 -PassThru; $AP::BrandingFormatString('%%WINDOWS_LONG%%')
|
|
||||||
for /f "delims=" %%s in ('"%psc% %d2%"') do if not errorlevel 1 (set winos=%%s)
|
|
||||||
echo "%winos%" | find /i "Windows" 1>nul || (
|
|
||||||
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName 2^>nul') do set "winos=%%b"
|
|
||||||
if %winbuild% GEQ 22000 (
|
|
||||||
set winos=!winos:Windows 10=Windows 11!
|
|
||||||
)
|
|
||||||
)
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
:: Check wmic.exe
|
:: Check wmic.exe
|
||||||
|
|
||||||
:dk_ckeckwmic
|
:dk_ckeckwmic
|
||||||
|
@ -773,6 +789,34 @@ wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i "com
|
||||||
)
|
)
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
|
:: Get Product name (WMI/REG methods are not reliable in all conditions, hence winbrand.dll method is used)
|
||||||
|
|
||||||
|
:dk_product
|
||||||
|
|
||||||
|
call :dk_reflection
|
||||||
|
|
||||||
|
set d1=%ref% $meth = $TypeBuilder.DefinePInvokeMethod('BrandingFormatString', 'winbrand.dll', 'Public, Static', 1, [String], @([String]), 1, 3);
|
||||||
|
set d1=%d1% $meth.SetImplementationFlags(128); $TypeBuilder.CreateType()::BrandingFormatString('%%WINDOWS_LONG%%')
|
||||||
|
|
||||||
|
set winos=
|
||||||
|
for /f "delims=" %%s in ('"%psc% %d1%"') do if not errorlevel 1 (set winos=%%s)
|
||||||
|
echo "%winos%" | find /i "Windows" 1>nul || (
|
||||||
|
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName 2^>nul') do set "winos=%%b"
|
||||||
|
if %winbuild% GEQ 22000 (
|
||||||
|
set winos=!winos:Windows 10=Windows 11!
|
||||||
|
)
|
||||||
|
)
|
||||||
|
exit /b
|
||||||
|
|
||||||
|
:: Common lines used in PowerShell reflection code
|
||||||
|
|
||||||
|
:dk_reflection
|
||||||
|
|
||||||
|
set ref=$AssemblyBuilder = [AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1);
|
||||||
|
set ref=%ref% $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule(2, $False);
|
||||||
|
set ref=%ref% $TypeBuilder = $ModuleBuilder.DefineType(0);
|
||||||
|
exit /b
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:: Get Product Key from pkeyhelper.dll for future new editions
|
:: Get Product Key from pkeyhelper.dll for future new editions
|
||||||
|
@ -780,10 +824,13 @@ exit /b
|
||||||
|
|
||||||
:dk_pkey
|
:dk_pkey
|
||||||
|
|
||||||
|
call :dk_reflection
|
||||||
|
|
||||||
|
set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('SkuGetProductKeyForEdition', 'pkeyhelper.dll', 'Public, Static', 1, [int], @([int], [String], [String].MakeByRefType(), [String].MakeByRefType()), 1, 3);
|
||||||
|
set d1=%d1% $out = ''; [void]$TypeBuilder.CreateType()::SkuGetProductKeyForEdition(%1, %2, [ref]$out, [ref]$null); $out
|
||||||
|
|
||||||
set pkey=
|
set pkey=
|
||||||
set d1=[DllImport(\"pkeyhelper.dll\",CharSet=CharSet.Unicode)]public static extern int SkuGetProductKeyForEdition(int e, string c, out string k, out string p);
|
for /f %%a in ('%psc% "%d1%"') do if not errorlevel 1 (set pkey=%%a)
|
||||||
set d2=$AP=Add-Type -Member '%d1%' -Name D1 -PassThru; $k=''; $null=$AP::SkuGetProductKeyForEdition(%1, %2, [ref]$k, [ref]$null); $k
|
|
||||||
for /f %%a in ('%psc% "%d2%"') do if not errorlevel 1 (set pkey=%%a)
|
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
:: Get channel name for the key which was extracted from pkeyhelper.dll
|
:: Get channel name for the key which was extracted from pkeyhelper.dll
|
||||||
|
@ -791,13 +838,15 @@ exit /b
|
||||||
:dk_pkeychannel
|
:dk_pkeychannel
|
||||||
|
|
||||||
set k=%1
|
set k=%1
|
||||||
set pkeychannel=
|
set m=[Runtime.InteropServices.Marshal]
|
||||||
set p=%SystemRoot%\System32\spp\tokens\pkeyconfig\pkeyconfig.xrm-ms
|
set p=%SystemRoot%\System32\spp\tokens\pkeyconfig\pkeyconfig.xrm-ms
|
||||||
set m=[System.Runtime.InteropServices.Marshal]
|
|
||||||
set d1=[DllImport(\"PidGenX.dll\",CharSet=CharSet.Unicode)]public static extern int PidGenX(string k,string p,string m,int u,IntPtr i,IntPtr d,IntPtr f);
|
set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('PidGenX', 'pidgenx.dll', 'Public, Static', 1, [int], @([String], [String], [String], [int], [IntPtr], [IntPtr], [IntPtr]), 1, 3);
|
||||||
set d2=$AP=Add-Type -Member '%d1%' -Name D1 -PassThru; $k='%k%'; $p='%p%'; $r=[byte[]]::new(0x04F8); $r[0]=0xF8; $r[1]=0x04; $f=%m%::AllocHGlobal(1272); %m%::Copy($r,0,$f,1272);
|
set d1=%d1% $r = [byte[]]::new(0x04F8); $r[0] = 0xF8; $r[1] = 0x04; $f = %m%::AllocHGlobal(0x04F8); %m%::Copy($r, 0, $f, 0x04F8);
|
||||||
set d3=%d2% [void]$AP::PidGenX($k,$p,\"00000\",0,0,0,$f); %m%::Copy($f,$r,0,1272); %m%::FreeHGlobal($f); [System.Text.Encoding]::Unicode.GetString($r, 1016, 128).Replace('0','')
|
set d1=%d1% [void]$TypeBuilder.CreateType()::PidGenX('%k%', '%p%', '00000', 0, 0, 0, $f); %m%::Copy($f, $r, 0, 0x04F8); %m%::FreeHGlobal($f); [Text.Encoding]::Unicode.GetString($r, 1016, 128)
|
||||||
for /f %%a in ('%psc% "%d3%"') do if not errorlevel 1 (set pkeychannel=%%a)
|
|
||||||
|
set pkeychannel=
|
||||||
|
for /f %%a in ('%psc% "%d1%"') do if not errorlevel 1 (set pkeychannel=%%a)
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
:dk_gvlk
|
:dk_gvlk
|
||||||
|
@ -822,8 +871,11 @@ exit /b
|
||||||
set serv_ste=
|
set serv_ste=
|
||||||
for %%# in (%_serv%) do (
|
for %%# in (%_serv%) do (
|
||||||
set serv_dis=
|
set serv_dis=
|
||||||
reg query HKLM\SYSTEM\CurrentControlSet\Services\%%# /v Start %nul% || set serv_dis=1
|
reg query HKLM\SYSTEM\CurrentControlSet\Services\%%# /v ImagePath %nul% || set serv_dis=1
|
||||||
for /f "skip=2 tokens=2*" %%a in ('reg query HKLM\SYSTEM\CurrentControlSet\Services\%%# /v Start 2^>nul') do if /i %%b equ 0x4 set serv_dis=1
|
for /f "skip=2 tokens=2*" %%a in ('reg query HKLM\SYSTEM\CurrentControlSet\Services\%%# /v Start 2^>nul') do if /i %%b equ 0x4 set serv_dis=1
|
||||||
|
sc start %%# %nul%
|
||||||
|
if !errorlevel! EQU 1058 set serv_dis=1
|
||||||
|
sc query %%# %nul% || set serv_dis=1
|
||||||
if defined serv_dis (if defined serv_ste (set "serv_ste=!serv_ste! %%#") else (set "serv_ste=%%#"))
|
if defined serv_dis (if defined serv_ste (set "serv_ste=!serv_ste! %%#") else (set "serv_ste=%%#"))
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -837,27 +889,24 @@ for %%# in (%serv_ste%) do (
|
||||||
if /i %%#==ClipSVC (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "3" /f %nul% & sc config %%# start= demand %nul%)
|
if /i %%#==ClipSVC (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "3" /f %nul% & sc config %%# start= demand %nul%)
|
||||||
if /i %%#==wlidsvc sc config %%# start= demand %nul%
|
if /i %%#==wlidsvc sc config %%# start= demand %nul%
|
||||||
if /i %%#==sppsvc (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "2" /f %nul% & sc config %%# start= delayed-auto %nul%)
|
if /i %%#==sppsvc (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%#" /v "Start" /t REG_DWORD /d "2" /f %nul% & sc config %%# start= delayed-auto %nul%)
|
||||||
|
if /i %%#==KeyIso sc config %%# start= demand %nul%
|
||||||
if /i %%#==LicenseManager sc config %%# start= demand %nul%
|
if /i %%#==LicenseManager sc config %%# start= demand %nul%
|
||||||
if /i %%#==Winmgmt sc config %%# start= auto %nul%
|
if /i %%#==Winmgmt sc config %%# start= auto %nul%
|
||||||
if /i %%#==wuauserv sc config %%# start= demand %nul%
|
if /i %%#==wuauserv sc config %%# start= demand %nul%
|
||||||
if !errorlevel!==0 (
|
if !errorlevel!==0 (
|
||||||
if defined serv_csts (set "serv_csts=!serv_csts! %%#") else (set "serv_csts=%%#")
|
if defined serv_csts (set "serv_csts=!serv_csts! %%#") else (set "serv_csts=%%#")
|
||||||
) else (
|
) else (
|
||||||
set error=1
|
|
||||||
if defined serv_cste (set "serv_cste=!serv_cste! %%#") else (set "serv_cste=%%#")
|
if defined serv_cste (set "serv_cste=!serv_cste! %%#") else (set "serv_cste=%%#")
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
if defined serv_csts echo Enabling Disabled Services [Successful] [%serv_csts%]
|
if defined serv_csts call :dk_color %Gray% "Enabling Disabled Services [Successful] [%serv_csts%]"
|
||||||
|
|
||||||
if defined serv_cste (
|
if defined serv_cste (
|
||||||
echo %serv_cste% | findstr /i "ClipSVC sppsvc" %nul% && (
|
set error=1
|
||||||
call :dk_color %Red% "Enabling Disabled Services [Failed] [%serv_cste%] [Restart System]"
|
|
||||||
) || (
|
|
||||||
call :dk_color %Red% "Enabling Disabled Services [Failed] [%serv_cste%]"
|
call :dk_color %Red% "Enabling Disabled Services [Failed] [%serv_cste%]"
|
||||||
)
|
)
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
@ -869,23 +918,44 @@ for %%# in (%_serv%) do (
|
||||||
set errorcode=
|
set errorcode=
|
||||||
set checkerror=
|
set checkerror=
|
||||||
net start %%# /y %nul%
|
net start %%# /y %nul%
|
||||||
|
set errorcode=!errorlevel!
|
||||||
sc query %%# | find /i "4 RUNNING" %nul% || set checkerror=1
|
sc query %%# | find /i "4 RUNNING" %nul% || set checkerror=1
|
||||||
|
|
||||||
sc start %%# %nul%
|
sc start %%# %nul%
|
||||||
set errorcode=!errorlevel!
|
if !errorlevel! NEQ 1056 if !errorlevel! NEQ 0 (set errorcode=!errorlevel!&set checkerror=1)
|
||||||
if !errorcode! NEQ 1056 if !errorcode! NEQ 0 set checkerror=1
|
|
||||||
if defined checkerror if defined serv_e (set "serv_e=!serv_e!, %%#-!errorcode!") else (set "serv_e=%%#-!errorcode!")
|
if defined checkerror if defined serv_e (set "serv_e=!serv_e!, %%#-!errorcode!") else (set "serv_e=%%#-!errorcode!")
|
||||||
)
|
)
|
||||||
|
|
||||||
if defined serv_e (
|
if defined serv_e (
|
||||||
set error=1
|
set error=1
|
||||||
call :dk_color %Red% "Starting Services [Failed] [%serv_e%]"
|
call :dk_color %Red% "Starting Services [Failed] [%serv_e%]"
|
||||||
|
echo %serv_e% | findstr /i "ClipSVC-1058 sppsvc-1058" %nul% && (
|
||||||
|
call :dk_color %Magenta% "Restart the system to fix disabled service error 1058."
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:: Various error checks
|
:: Various error checks
|
||||||
|
|
||||||
|
if defined safeboot_option (
|
||||||
|
set error=1
|
||||||
|
call :dk_color2 %Red% "Checking Boot Mode " %Magenta% "[System is running in safe mode. Run in normal mode.]"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State" 2>nul | find /i "IMAGE_STATE_COMPLETE" 1>nul || (
|
||||||
|
set error=1
|
||||||
|
call :dk_color2 %Red% "Checking Audit Mode " %Magenta% "[System is running in Audit mode. Run in normal mode.]"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinPE" /v InstRoot %nul% && (
|
||||||
|
set error=1
|
||||||
|
call :dk_color2 %Red% "Checking WinPE " %Magenta% "[System is running in WinPE mode. Run in normal mode.]"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
for %%# in (wmic.exe) do @if "%%~$PATH:#"=="" (
|
for %%# in (wmic.exe) do @if "%%~$PATH:#"=="" (
|
||||||
call :dk_color %Gray% "Checking WMIC.exe [Not Found]"
|
call :dk_color %Gray% "Checking WMIC.exe [Not Found]"
|
||||||
)
|
)
|
||||||
|
@ -897,16 +967,18 @@ call :dk_color %Red% "Checking Powershell [Not Responding]"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
set wmifailed=
|
||||||
if %_wmic% EQU 1 wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i "computersystem" 1>nul
|
if %_wmic% EQU 1 wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i "computersystem" 1>nul
|
||||||
if %_wmic% EQU 0 %psc% "Get-CIMInstance -Class Win32_ComputerSystem | Select-Object -Property CreationClassName" 2>nul | find /i "computersystem" 1>nul
|
if %_wmic% EQU 0 %psc% "Get-CIMInstance -Class Win32_ComputerSystem | Select-Object -Property CreationClassName" 2>nul | find /i "computersystem" 1>nul
|
||||||
if %errorlevel% NEQ 0 (
|
if %errorlevel% NEQ 0 (
|
||||||
set error=1
|
set error=1
|
||||||
|
set wmifailed=1
|
||||||
call :dk_color %Red% "Checking WMI [Not Responding] %_wmic%"
|
call :dk_color %Red% "Checking WMI [Not Responding] %_wmic%"
|
||||||
|
call :dk_color %Magenta% "In MAS, Goto Troubleshoot and run Fix WMI option."
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
if not "%regSKU%"=="%wmiSKU%" (
|
if not "%regSKU%"=="%wmiSKU%" (
|
||||||
set error=1
|
|
||||||
call :dk_color %Red% "Checking WMI/REG SKU [Difference Found - WMI:%wmiSKU% Reg:%regSKU%]"
|
call :dk_color %Red% "Checking WMI/REG SKU [Difference Found - WMI:%wmiSKU% Reg:%regSKU%]"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -921,6 +993,7 @@ call :dk_color %Red% "Checking DISM [Not Responding] %
|
||||||
|
|
||||||
|
|
||||||
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" (
|
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" (
|
||||||
|
set error=1
|
||||||
call :dk_color %Red% "Checking Eval Packages [Non-Eval Licenses are installed in Eval Windows]"
|
call :dk_color %Red% "Checking Eval Packages [Non-Eval Licenses are installed in Eval Windows]"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -937,13 +1010,13 @@ call :dk_color %Red% "Checking slmgr /dlv [Not Responding] %
|
||||||
|
|
||||||
reg query "HKU\S-1-5-20\Software\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\PersistedTSReArmed" %nul% && (
|
reg query "HKU\S-1-5-20\Software\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\PersistedTSReArmed" %nul% && (
|
||||||
set error=1
|
set error=1
|
||||||
call :dk_color %Red% "Checking Rearm [System Restart Is Required]"
|
call :dk_color2 %Red% "Checking Rearm " %Magenta% "[System Restart Is Required]"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ClipSVC\Volatile\PersistedSystemState" %nul% && (
|
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ClipSVC\Volatile\PersistedSystemState" %nul% && (
|
||||||
set error=1
|
set error=1
|
||||||
call :dk_color %Red% "Checking ClipSVC [System Restart Is Required]"
|
call :dk_color2 %Red% "Checking ClipSVC " %Magenta% "[System Restart Is Required]"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -956,6 +1029,12 @@ set error=1
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\Plugins\Objects\msft:rm/algorithm/hwid/4.0" /f ba02fed39662 /d %nul% || (
|
||||||
|
call :dk_color %Red% "Checking SPP Registry Key [Incorrect ModuleId Found]"
|
||||||
|
set error=1
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
call :dk_actids
|
call :dk_actids
|
||||||
if not defined applist (
|
if not defined applist (
|
||||||
net stop sppsvc /y %nul%
|
net stop sppsvc /y %nul%
|
||||||
|
@ -970,24 +1049,69 @@ call :dk_color %Red% "Checking Activation IDs [Not Found]"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
set token=0
|
set tokenstore=
|
||||||
if exist %Systemdrive%\Windows\System32\spp\store\2.0\tokens.dat set token=1
|
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v TokenStore 2^>nul') do call set "tokenstore=%%b"
|
||||||
if exist %Systemdrive%\Windows\System32\spp\store_test\2.0\tokens.dat set token=1
|
if not exist "%tokenstore%\" (
|
||||||
if %token%==0 (
|
|
||||||
set error=1
|
set error=1
|
||||||
call :dk_color %Red% "Checking SPP tokens.dat [Not Found]"
|
call :dk_color %Red% "Checking SPP Token Folder [Not Found] [%tokenstore%\]"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
if exist "%tokenstore%\" if not exist "%tokenstore%\tokens.dat" (
|
||||||
|
set error=1
|
||||||
|
call :dk_color %Red% "Checking SPP tokens.dat [Not Found] [%tokenstore%\]"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
if not exist %ProgramData%\Microsoft\Windows\ClipSVC\tokens.dat (
|
||||||
|
set error=1
|
||||||
|
call :dk_color %Red% "Checking ClipSVC tokens.dat [Not Found]"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
if not exist %SystemRoot%\system32\sppsvc.exe (
|
if not exist %SystemRoot%\system32\sppsvc.exe (
|
||||||
set error=1
|
set error=1
|
||||||
call :dk_color %Red% "Checking sppsvc.exe File [Not Found]"
|
call :dk_color %Red% "Checking sppsvc.exe File [Not Found]"
|
||||||
)
|
)
|
||||||
|
|
||||||
if /i %error_code% EQU 0xc0000022 (
|
|
||||||
echo "%serv_e%" | find /i "sppsvc" %nul% && (
|
:: Below checks are performed if required services are not disabled + slmgr /dlv errorlevel is not Zero + Rearm restart is not required + WMI is working fine
|
||||||
call :dk_color %Magenta% "Looks like you may have used a Gaming spoofer. Check Activation Troubleshoot option in MAS."
|
|
||||||
|
set showfix=
|
||||||
|
set wpaerror=
|
||||||
|
set permerror=
|
||||||
|
if not defined serv_cste if /i not %error_code%==0 if /i not %error_code%==0xC004D302 if not defined wmifailed (
|
||||||
|
|
||||||
|
REM This code checks for invalid registry keys in HKLM\SYSTEM\WPA. This issue may appear even on healthy systems.
|
||||||
|
|
||||||
|
if %winbuild% GEQ 14393 (
|
||||||
|
set /a count=0
|
||||||
|
for /f %%a in ('reg query "HKLM\SYSTEM\WPA" 2^>nul') do set /a count+=1
|
||||||
|
for /L %%# in (1,1,!count!) do (
|
||||||
|
reg query "HKLM\SYSTEM\WPA\8DEC0AF1-0341-4b93-85CD-72606C2DF94C-7P-%%#" /ve /t REG_BINARY %nul% || set wpaerror=1
|
||||||
)
|
)
|
||||||
|
if defined wpaerror call :dk_color %Red% "Checking WPA Registry Keys [Error Found] [Registry Count - !count!]"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
if not exist "%tokenstore%\" set permerror=1
|
||||||
|
|
||||||
|
for %%# in (
|
||||||
|
"%tokenstore%"
|
||||||
|
"HKLM:\SYSTEM\WPA"
|
||||||
|
"HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform"
|
||||||
|
) do if not defined permerror (
|
||||||
|
%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%
|
||||||
|
if !errorlevel!==2 set permerror=1
|
||||||
|
)
|
||||||
|
if defined permerror call :dk_color %Red% "Checking SPP Permissions [Error Found]"
|
||||||
|
|
||||||
|
set showfix=1
|
||||||
|
call :dk_color %Magenta% "In MAS, Goto Troubleshoot and run Fix Licensing option."
|
||||||
|
if not defined permerror call :dk_color %Magenta% "If activation still fails then run Fix WPA Registry option."
|
||||||
|
)
|
||||||
|
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
@ -1031,56 +1155,57 @@ exit /b
|
||||||
|
|
||||||
:kms38data
|
:kms38data
|
||||||
|
|
||||||
|
set f=
|
||||||
for %%# in (
|
for %%# in (
|
||||||
73111121-5638-40f6-bc11-f1d7b0d64300_NPPR9-FWDCX-D2C8J-H872K-2YT43___4_Enterprise
|
73111121-5638-40f6-bc11-f1d7b0d64300_NPP%f%R9-FW%f%DCX-D2C%f%8J-H8%f%72K-2Y%f%T43___4_Enterprise
|
||||||
9bd77860-9b31-4b7b-96ad-2564017315bf_VDYBN-27WPP-V4HQT-9VMD4-VMK7H___7_ServerStandard_FE
|
9bd77860-9b31-4b7b-96ad-2564017315bf_VDY%f%BN-27%f%WPP-V4H%f%QT-9V%f%MD4-VM%f%K7H___7_ServerStandard_FE
|
||||||
de32eafd-aaee-4662-9444-c1befb41bde2_N69G4-B89J2-4G8F4-WWYCC-J464C___7_ServerStandard_RS5
|
de32eafd-aaee-4662-9444-c1befb41bde2_N69%f%G4-B8%f%9J2-4G8%f%F4-WW%f%YCC-J4%f%64C___7_ServerStandard_RS5
|
||||||
8c1c5410-9f39-4805-8c9d-63a07706358f_WC2BQ-8NRM3-FDDYY-2BFGV-KHKQY___7_ServerStandard_RS1
|
8c1c5410-9f39-4805-8c9d-63a07706358f_WC2%f%BQ-8N%f%RM3-FDD%f%YY-2B%f%FGV-KH%f%KQY___7_ServerStandard_RS1
|
||||||
ef6cfc9f-8c5d-44ac-9aad-de6a2ea0ae03_WX4NM-KYWYW-QJJR4-XV3QB-6VM33___8_ServerDatacenter_FE
|
ef6cfc9f-8c5d-44ac-9aad-de6a2ea0ae03_WX4%f%NM-KY%f%WYW-QJJ%f%R4-XV%f%3QB-6V%f%M33___8_ServerDatacenter_FE
|
||||||
34e1ae55-27f8-4950-8877-7a03be5fb181_WMDGN-G9PQG-XVVXX-R3X43-63DFG___8_ServerDatacenter_RS5
|
34e1ae55-27f8-4950-8877-7a03be5fb181_WMD%f%GN-G9%f%PQG-XVV%f%XX-R3%f%X43-63%f%DFG___8_ServerDatacenter_RS5
|
||||||
21c56779-b449-4d20-adfc-eece0e1ad74b_CB7KF-BWN84-R7R2Y-793K2-8XDDG___8_ServerDatacenter_RS1
|
21c56779-b449-4d20-adfc-eece0e1ad74b_CB7%f%KF-BW%f%N84-R7R%f%2Y-79%f%3K2-8X%f%DDG___8_ServerDatacenter_RS1
|
||||||
e272e3e2-732f-4c65-a8f0-484747d0d947_DPH2V-TTNVB-4X9Q3-TJR4H-KHJW4__27_EnterpriseN
|
e272e3e2-732f-4c65-a8f0-484747d0d947_DPH%f%2V-TT%f%NVB-4X9%f%Q3-TJ%f%R4H-KH%f%JW4__27_EnterpriseN
|
||||||
2de67392-b7a7-462a-b1ca-108dd189f588_W269N-WFGWX-YVC9B-4J6C9-T83GX__48_Professional
|
2de67392-b7a7-462a-b1ca-108dd189f588_W26%f%9N-WF%f%GWX-YVC%f%9B-4J%f%6C9-T8%f%3GX__48_Professional
|
||||||
a80b5abf-76ad-428b-b05d-a47d2dffeebf_MH37W-N47XK-V7XM9-C7227-GCQG9__49_ProfessionalN
|
a80b5abf-76ad-428b-b05d-a47d2dffeebf_MH3%f%7W-N4%f%7XK-V7X%f%M9-C7%f%227-GC%f%QG9__49_ProfessionalN
|
||||||
034d3cbb-5d4b-4245-b3f8-f84571314078_WVDHN-86M7X-466P6-VHXV7-YY726__50_ServerSolution_RS5
|
034d3cbb-5d4b-4245-b3f8-f84571314078_WVD%f%HN-86%f%M7X-466%f%P6-VH%f%XV7-YY%f%726__50_ServerSolution_RS5
|
||||||
2b5a1b0f-a5ab-4c54-ac2f-a6d94824a283_JCKRF-N37P4-C2D82-9YXRT-4M63B__50_ServerSolution_RS1
|
2b5a1b0f-a5ab-4c54-ac2f-a6d94824a283_JCK%f%RF-N3%f%7P4-C2D%f%82-9Y%f%XRT-4M%f%63B__50_ServerSolution_RS1
|
||||||
7b9e1751-a8da-4f75-9560-5fadfe3d8e38_3KHY7-WNT83-DGQKR-F7HPR-844BM__98_CoreN
|
7b9e1751-a8da-4f75-9560-5fadfe3d8e38_3KH%f%Y7-WN%f%T83-DGQ%f%KR-F7%f%HPR-84%f%4BM__98_CoreN
|
||||||
a9107544-f4a0-4053-a96a-1479abdef912_PVMJN-6DFY6-9CCP6-7BKTT-D3WVR__99_CoreCountrySpecific
|
a9107544-f4a0-4053-a96a-1479abdef912_PVM%f%JN-6D%f%FY6-9CC%f%P6-7B%f%KTT-D3%f%WVR__99_CoreCountrySpecific
|
||||||
cd918a57-a41b-4c82-8dce-1a538e221a83_7HNRX-D7KGG-3K4RQ-4WPJ4-YTDFH_100_CoreSingleLanguage
|
cd918a57-a41b-4c82-8dce-1a538e221a83_7HN%f%RX-D7%f%KGG-3K4%f%RQ-4W%f%PJ4-YT%f%DFH_100_CoreSingleLanguage
|
||||||
58e97c99-f377-4ef1-81d5-4ad5522b5fd8_TX9XD-98N7V-6WMQ6-BX7FG-H8Q99_101_Core
|
58e97c99-f377-4ef1-81d5-4ad5522b5fd8_TX9%f%XD-98%f%N7V-6WM%f%Q6-BX%f%7FG-H8%f%Q99_101_Core
|
||||||
7b4433f4-b1e7-4788-895a-c45378d38253_QN4C6-GBJD2-FB422-GHWJK-GJG2R_110_ServerCloudStorage
|
7b4433f4-b1e7-4788-895a-c45378d38253_QN4%f%C6-GB%f%JD2-FB4%f%22-GH%f%WJK-GJ%f%G2R_110_ServerCloudStorage
|
||||||
8de8eb62-bbe0-40ac-ac17-f75595071ea3_GRFBW-QNDC4-6QBHG-CCK3B-2PR88_120_ServerARM64_RS5
|
8de8eb62-bbe0-40ac-ac17-f75595071ea3_GRF%f%BW-QN%f%DC4-6QB%f%HG-CC%f%K3B-2P%f%R88_120_ServerARM64_RS5
|
||||||
43d9af6e-5e86-4be8-a797-d072a046896c_K9FYF-G6NCK-73M32-XMVPY-F9DRR_120_ServerARM64_RS4
|
43d9af6e-5e86-4be8-a797-d072a046896c_K9F%f%YF-G6%f%NCK-73M%f%32-XM%f%VPY-F9%f%DRR_120_ServerARM64_RS4
|
||||||
e0c42288-980c-4788-a014-c080d2e1926e_NW6C2-QMPVW-D7KKK-3GKT6-VCFB2_121_Education
|
e0c42288-980c-4788-a014-c080d2e1926e_NW6%f%C2-QM%f%PVW-D7K%f%KK-3G%f%KT6-VC%f%FB2_121_Education
|
||||||
3c102355-d027-42c6-ad23-2e7ef8a02585_2WH4N-8QGBV-H22JP-CT43Q-MDWWJ_122_EducationN
|
3c102355-d027-42c6-ad23-2e7ef8a02585_2WH%f%4N-8Q%f%GBV-H22%f%JP-CT%f%43Q-MD%f%WWJ_122_EducationN
|
||||||
32d2fab3-e4a8-42c2-923b-4bf4fd13e6ee_M7XTQ-FN8P6-TTKYV-9D4CC-J462D_125_EnterpriseS_RS5,VB
|
32d2fab3-e4a8-42c2-923b-4bf4fd13e6ee_M7X%f%TQ-FN%f%8P6-TTK%f%YV-9D%f%4CC-J4%f%62D_125_EnterpriseS_RS5,VB
|
||||||
2d5a5a60-3040-48bf-beb0-fcd770c20ce0_DCPHK-NFMTC-H88MJ-PFHPY-QJ4BJ_125_EnterpriseS_RS1
|
2d5a5a60-3040-48bf-beb0-fcd770c20ce0_DCP%f%HK-NF%f%MTC-H88%f%MJ-PF%f%HPY-QJ%f%4BJ_125_EnterpriseS_RS1
|
||||||
7b51a46c-0c04-4e8f-9af4-8496cca90d5e_WNMTR-4C88C-JK8YV-HQ7T2-76DF9_125_EnterpriseS_TH1
|
7b51a46c-0c04-4e8f-9af4-8496cca90d5e_WNM%f%TR-4C%f%88C-JK8%f%YV-HQ%f%7T2-76%f%DF9_125_EnterpriseS_TH1
|
||||||
7103a333-b8c8-49cc-93ce-d37c09687f92_92NFX-8DJQP-P6BBQ-THF9C-7CG2H_126_EnterpriseSN_RS5,VB
|
7103a333-b8c8-49cc-93ce-d37c09687f92_92N%f%FX-8D%f%JQP-P6B%f%BQ-TH%f%F9C-7C%f%G2H_126_EnterpriseSN_RS5,VB
|
||||||
9f776d83-7156-45b2-8a5c-359b9c9f22a3_QFFDN-GRT3P-VKWWX-X7T3R-8B639_126_EnterpriseSN_RS1
|
9f776d83-7156-45b2-8a5c-359b9c9f22a3_QFF%f%DN-GR%f%T3P-VKW%f%WX-X7%f%T3R-8B%f%639_126_EnterpriseSN_RS1
|
||||||
87b838b7-41b6-4590-8318-5797951d8529_2F77B-TNFGY-69QQF-B8YKP-D69TJ_126_EnterpriseSN_TH1
|
87b838b7-41b6-4590-8318-5797951d8529_2F7%f%7B-TN%f%FGY-69Q%f%QF-B8%f%YKP-D6%f%9TJ_126_EnterpriseSN_TH1
|
||||||
39e69c41-42b4-4a0a-abad-8e3c10a797cc_QFND9-D3Y9C-J3KKY-6RPVP-2DPYV_145_ServerDatacenterACor_FE
|
39e69c41-42b4-4a0a-abad-8e3c10a797cc_QFN%f%D9-D3%f%Y9C-J3K%f%KY-6R%f%PVP-2D%f%PYV_145_ServerDatacenterACor_FE
|
||||||
90c362e5-0da1-4bfd-b53b-b87d309ade43_6NMRW-2C8FM-D24W7-TQWMY-CWH2D_145_ServerDatacenterACor_RS5
|
90c362e5-0da1-4bfd-b53b-b87d309ade43_6NM%f%RW-2C%f%8FM-D24%f%W7-TQ%f%WMY-CW%f%H2D_145_ServerDatacenterACor_RS5
|
||||||
e49c08e7-da82-42f8-bde2-b570fbcae76c_2HXDN-KRXHB-GPYC7-YCKFJ-7FVDG_145_ServerDatacenterACor_RS3
|
e49c08e7-da82-42f8-bde2-b570fbcae76c_2HX%f%DN-KR%f%XHB-GPY%f%C7-YC%f%KFJ-7F%f%VDG_145_ServerDatacenterACor_RS3
|
||||||
f5e9429c-f50b-4b98-b15c-ef92eb5cff39_67KN8-4FYJW-2487Q-MQ2J7-4C4RG_146_ServerStandardACor_FE
|
f5e9429c-f50b-4b98-b15c-ef92eb5cff39_67K%f%N8-4F%f%YJW-248%f%7Q-MQ%f%2J7-4C%f%4RG_146_ServerStandardACor_FE
|
||||||
73e3957c-fc0c-400d-9184-5f7b6f2eb409_N2KJX-J94YW-TQVFB-DG9YT-724CC_146_ServerStandardACor_RS5
|
73e3957c-fc0c-400d-9184-5f7b6f2eb409_N2K%f%JX-J9%f%4YW-TQV%f%FB-DG%f%9YT-72%f%4CC_146_ServerStandardACor_RS5
|
||||||
61c5ef22-f14f-4553-a824-c4b31e84b100_PTXN8-JFHJM-4WC78-MPCBR-9W4KR_146_ServerStandardACor_RS3
|
61c5ef22-f14f-4553-a824-c4b31e84b100_PTX%f%N8-JF%f%HJM-4WC%f%78-MP%f%CBR-9W%f%4KR_146_ServerStandardACor_RS3
|
||||||
82bbc092-bc50-4e16-8e18-b74fc486aec3_NRG8B-VKK3Q-CXVCJ-9G2XF-6Q84J_161_ProfessionalWorkstation
|
82bbc092-bc50-4e16-8e18-b74fc486aec3_NRG%f%8B-VK%f%K3Q-CXV%f%CJ-9G%f%2XF-6Q%f%84J_161_ProfessionalWorkstation
|
||||||
4b1571d3-bafb-4b40-8087-a961be2caf65_9FNHH-K3HBT-3W4TD-6383H-6XYWF_162_ProfessionalWorkstationN
|
4b1571d3-bafb-4b40-8087-a961be2caf65_9FN%f%HH-K3%f%HBT-3W4%f%TD-63%f%83H-6X%f%YWF_162_ProfessionalWorkstationN
|
||||||
3f1afc82-f8ac-4f6c-8005-1d233e606eee_6TP4R-GNPTD-KYYHQ-7B7DP-J447Y_164_ProfessionalEducation
|
3f1afc82-f8ac-4f6c-8005-1d233e606eee_6TP%f%4R-GN%f%PTD-KYY%f%HQ-7B%f%7DP-J4%f%47Y_164_ProfessionalEducation
|
||||||
5300b18c-2e33-4dc2-8291-47ffcec746dd_YVWGF-BXNMC-HTQYQ-CPQ99-66QFC_165_ProfessionalEducationN
|
5300b18c-2e33-4dc2-8291-47ffcec746dd_YVW%f%GF-BX%f%NMC-HTQ%f%YQ-CP%f%Q99-66%f%QFC_165_ProfessionalEducationN
|
||||||
8c8f0ad3-9a43-4e05-b840-93b8d1475cbc_6N379-GGTMK-23C6M-XVVTC-CKFRQ_168_ServerAzureCor_FE
|
8c8f0ad3-9a43-4e05-b840-93b8d1475cbc_6N3%f%79-GG%f%TMK-23C%f%6M-XV%f%VTC-CK%f%FRQ_168_ServerAzureCor_FE
|
||||||
a99cc1f0-7719-4306-9645-294102fbff95_FDNH6-VW9RW-BXPJ7-4XTYG-239TB_168_ServerAzureCor_RS5
|
a99cc1f0-7719-4306-9645-294102fbff95_FDN%f%H6-VW%f%9RW-BXP%f%J7-4X%f%TYG-23%f%9TB_168_ServerAzureCor_RS5
|
||||||
3dbf341b-5f6c-4fa7-b936-699dce9e263f_VP34G-4NPPG-79JTQ-864T4-R3MQX_168_ServerAzureCor_RS1
|
3dbf341b-5f6c-4fa7-b936-699dce9e263f_VP3%f%4G-4N%f%PPG-79J%f%TQ-86%f%4T4-R3%f%MQX_168_ServerAzureCor_RS1
|
||||||
e0b2d383-d112-413f-8a80-97f373a5820c_YYVX9-NTFWV-6MDM3-9PT4T-4M68B_171_EnterpriseG
|
e0b2d383-d112-413f-8a80-97f373a5820c_YYV%f%X9-NT%f%FWV-6MD%f%M3-9P%f%T4T-4M%f%68B_171_EnterpriseG
|
||||||
e38454fb-41a4-4f59-a5dc-25080e354730_44RPN-FTY23-9VTTB-MP9BX-T84FV_172_EnterpriseGN
|
e38454fb-41a4-4f59-a5dc-25080e354730_44R%f%PN-FT%f%Y23-9VT%f%TB-MP%f%9BX-T8%f%4FV_172_EnterpriseGN
|
||||||
ec868e65-fadf-4759-b23e-93fe37f2cc29_CPWHC-NT2C7-VYW78-DHDB2-PG3GK_175_ServerRdsh_RS5
|
ec868e65-fadf-4759-b23e-93fe37f2cc29_CPW%f%HC-NT%f%2C7-VYW%f%78-DH%f%DB2-PG%f%3GK_175_ServerRdsh_RS5
|
||||||
e4db50ea-bda1-4566-b047-0ca50abc6f07_7NBT4-WGBQX-MP4H7-QXFF8-YP3KX_175_ServerRdsh_RS3
|
e4db50ea-bda1-4566-b047-0ca50abc6f07_7NB%f%T4-WG%f%BQX-MP4%f%H7-QX%f%FF8-YP%f%3KX_175_ServerRdsh_RS3
|
||||||
0df4f814-3f57-4b8b-9a9d-fddadcd69fac_NBTWJ-3DR69-3C4V8-C26MC-GQ9M6_183_CloudE
|
0df4f814-3f57-4b8b-9a9d-fddadcd69fac_NBT%f%WJ-3D%f%R69-3C4%f%V8-C2%f%6MC-GQ%f%9M6_183_CloudE
|
||||||
59eb965c-9150-42b7-a0ec-22151b9897c5_KBN8V-HFGQ4-MGXVD-347P6-PDQGT_191_IoTEnterpriseS_NI
|
59eb965c-9150-42b7-a0ec-22151b9897c5_KBN%f%8V-HF%f%GQ4-MGX%f%VD-34%f%7P6-PD%f%QGT_191_IoTEnterpriseS_NI
|
||||||
d30136fc-cb4b-416e-a23d-87207abc44a9_6XN7V-PCBDC-BDBRH-8DQY7-G6R44_202_CloudEditionN
|
d30136fc-cb4b-416e-a23d-87207abc44a9_6XN%f%7V-PC%f%BDC-BDB%f%RH-8D%f%QY7-G6%f%R44_202_CloudEditionN
|
||||||
ca7df2e3-5ea0-47b8-9ac1-b1be4d8edd69_37D7F-N49CB-WQR8W-TBJ73-FM8RX_203_CloudEdition
|
ca7df2e3-5ea0-47b8-9ac1-b1be4d8edd69_37D%f%7F-N4%f%9CB-WQR%f%8W-TB%f%J73-FM%f%8RX_203_CloudEdition
|
||||||
19b5e0fb-4431-46bc-bac1-2f1873e4ae73_NTBV8-9K7Q8-V27C6-M2BTV-KHMXV_407_ServerTurbine
|
19b5e0fb-4431-46bc-bac1-2f1873e4ae73_NTB%f%V8-9K%f%7Q8-V27%f%C6-M2%f%BTV-KH%f%MXV_407_ServerTurbine
|
||||||
) do (
|
) do (
|
||||||
for /f "tokens=1-5 delims=_" %%A in ("%%#") do if %osSKU%==%%C (
|
for /f "tokens=1-5 delims=_" %%A in ("%%#") do if %osSKU%==%%C (
|
||||||
if %1==getkey if not defined key echo "!applist!" | find /i "%%A" >nul && set key=%%B
|
if %1==getkey if not defined key echo "!applist!" | find /i "%%A" >nul && set key=%%B
|
||||||
|
@ -1108,10 +1233,10 @@ set notfoundaltactID=
|
||||||
if %_NoEditionChange%==1 exit /b
|
if %_NoEditionChange%==1 exit /b
|
||||||
|
|
||||||
for %%# in (
|
for %%# in (
|
||||||
188_IoTEnterprise_______________8ab9bdd1-1f67-4997-82d9-8878520837d9_73111121-5638-40f6-bc11-f1d7b0d64300_NPPR9-FWDCX-D2C8J-H872K-2YT43_Enterprise
|
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
|
||||||
191_IoTEnterpriseS-2021_________ed655016-a9e8-4434-95d9-4345352c2552_32d2fab3-e4a8-42c2-923b-4bf4fd13e6ee_M7XTQ-FN8P6-TTKYV-9D4CC-J462D_EnterpriseS-2021
|
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
|
||||||
205_IoTEnterpriseSK_____________d4f9b41f-205c-405e-8e08-3d16e88e02be_59eb965c-9150-42b7-a0ec-22151b9897c5_KBN8V-HFGQ4-MGXVD-347P6-PDQGT_IoTEnterpriseS-Win11
|
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-Win11
|
||||||
138_ProfessionalSingleLanguage__a48938aa-62fa-4966-9d44-9f04da3f72f2_2de67392-b7a7-462a-b1ca-108dd189f588_W269N-WFGWX-YVC9B-4J6C9-T83GX_Professional
|
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
|
||||||
) do (
|
) do (
|
||||||
for /f "tokens=1-6 delims=_" %%A in ("%%#") do if %osSKU%==%%A (
|
for /f "tokens=1-6 delims=_" %%A in ("%%#") do if %osSKU%==%%A (
|
||||||
echo "!applist!" | find /i "%%C" 1>nul && (
|
echo "!applist!" | find /i "%%C" 1>nul && (
|
File diff suppressed because it is too large
Load Diff
|
@ -57,7 +57,7 @@ pushd "%~dp0"
|
||||||
>nul findstr /rxc:".*" "%~nx0"
|
>nul findstr /rxc:".*" "%~nx0"
|
||||||
if not %errorlevel%==0 (
|
if not %errorlevel%==0 (
|
||||||
echo:
|
echo:
|
||||||
echo Error: This is not a correct file. It has LF line ending issue.
|
echo Error: Script either has LF line ending issue, or it failed to read itself.
|
||||||
echo:
|
echo:
|
||||||
ping 127.0.0.1 -n 6 > nul
|
ping 127.0.0.1 -n 6 > nul
|
||||||
popd
|
popd
|
||||||
|
@ -116,15 +116,6 @@ echo Project is supported only for Windows 7/8/8.1/10/11 and their Server equiva
|
||||||
goto ced_done
|
goto ced_done
|
||||||
)
|
)
|
||||||
|
|
||||||
if %winbuild% LSS 9200 if not exist "%SystemRoot%\servicing\Packages\Microsoft-Windows-PowerShell-WTR-Package~*.mum" (
|
|
||||||
%nceline%
|
|
||||||
echo Updated Powershell not found.
|
|
||||||
echo:
|
|
||||||
echo Download Windows Management Framework 5.1 from below link and install
|
|
||||||
echo https://aka.ms/wmf5download
|
|
||||||
goto ced_done
|
|
||||||
)
|
|
||||||
|
|
||||||
for %%# in (powershell.exe) do @if "%%~$PATH:#"=="" (
|
for %%# in (powershell.exe) do @if "%%~$PATH:#"=="" (
|
||||||
%nceline%
|
%nceline%
|
||||||
echo Unable to find powershell.exe in the system.
|
echo Unable to find powershell.exe in the system.
|
||||||
|
@ -202,6 +193,8 @@ call :dk_actids
|
||||||
if not defined applist (
|
if not defined applist (
|
||||||
%eline%
|
%eline%
|
||||||
echo Activation IDs not found. Aborting...
|
echo Activation IDs not found. Aborting...
|
||||||
|
echo:
|
||||||
|
echo Check this page for help. https://massgrave.dev/troubleshoot
|
||||||
goto ced_done
|
goto ced_done
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -216,6 +209,8 @@ DISM /English /Online /Get-CurrentEdition %nul%
|
||||||
cmd /c exit /b !errorlevel!
|
cmd /c exit /b !errorlevel!
|
||||||
echo DISM command failed [Error Code - 0x!=ExitCode!]
|
echo DISM command failed [Error Code - 0x!=ExitCode!]
|
||||||
echo OS Edition was not detected properly. Aborting...
|
echo OS Edition was not detected properly. Aborting...
|
||||||
|
echo:
|
||||||
|
echo Check this page for help. https://massgrave.dev/troubleshoot
|
||||||
goto ced_done
|
goto ced_done
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -351,9 +346,9 @@ echo:
|
||||||
%line%
|
%line%
|
||||||
echo:
|
echo:
|
||||||
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" (
|
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" (
|
||||||
echo [1] DISM Method
|
echo [1] DISM Method [Recommended]
|
||||||
) else (
|
) else (
|
||||||
echo [1] Changepk Method
|
echo [1] Changepk Method [Recommended]
|
||||||
)
|
)
|
||||||
echo:
|
echo:
|
||||||
echo [2] CBS Upgrade Method [Alternative]
|
echo [2] CBS Upgrade Method [Alternative]
|
||||||
|
@ -387,7 +382,6 @@ cls
|
||||||
set key=
|
set key=
|
||||||
set _chan=
|
set _chan=
|
||||||
set _changepk=0
|
set _changepk=0
|
||||||
set "keyflow=Retail Volume:MAK Volume:GVLK OEM:NONSLP OEM:DM"
|
|
||||||
|
|
||||||
:: Check if changepk.exe or slmgr.vbs is required for edition upgrade
|
:: Check if changepk.exe or slmgr.vbs is required for edition upgrade
|
||||||
|
|
||||||
|
@ -401,11 +395,16 @@ set _changepk=1
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
if %winbuild% LEQ 19045 call :changeeditiondata
|
if %_changepk%==1 (
|
||||||
|
set "keyflow=Retail Volume:MAK Volume:GVLK OEM:NONSLP OEM:DM"
|
||||||
|
) else (
|
||||||
|
set "keyflow=Retail OEM:NONSLP OEM:DM Volume:MAK Volume:GVLK"
|
||||||
|
)
|
||||||
|
|
||||||
if not defined key call :ced_targetSKU %targetedition%
|
if not defined key call :ced_targetSKU %targetedition%
|
||||||
if not defined key if defined targetSKU call :ced_windowskey
|
if not defined key if defined targetSKU call :ced_windowskey
|
||||||
if defined key if defined pkeychannel set _chan=%pkeychannel%
|
if defined key if defined pkeychannel set _chan=%pkeychannel%
|
||||||
|
if not defined key call :changeeditiondata
|
||||||
|
|
||||||
if not defined key (
|
if not defined key (
|
||||||
%eline%
|
%eline%
|
||||||
|
@ -437,7 +436,7 @@ goto ced_done
|
||||||
|
|
||||||
cls
|
cls
|
||||||
if %_changepk%==1 (
|
if %_changepk%==1 (
|
||||||
for %%a in (dns.msftncsi.com,www.microsoft.com,one.one.one.one,resolver1.opendns.com) do (
|
for %%a in (l.root-servers.net resolver1.opendns.com download.windowsupdate.com google.com) do (
|
||||||
for /f "delims=[] tokens=2" %%# in ('ping -n 1 %%a') do (
|
for /f "delims=[] tokens=2" %%# in ('ping -n 1 %%a') do (
|
||||||
if not [%%#]==[] (
|
if not [%%#]==[] (
|
||||||
%eline%
|
%eline%
|
||||||
|
@ -455,18 +454,15 @@ echo Changing the Current Edition [%osedition%] to [%targetedition%]
|
||||||
echo:
|
echo:
|
||||||
|
|
||||||
if %_changepk%==1 (
|
if %_changepk%==1 (
|
||||||
call :dk_color %_Green% "You can safely ignore if error appears in the upgrade Window."
|
call :dk_color %Magenta% "Notes-"
|
||||||
call :dk_color %_Yellow% "But in that case you must manually reboot the system."
|
|
||||||
echo:
|
echo:
|
||||||
%psc% "$BLinfo = Get-BitLockerVolume -MountPoint "C:";$blinfo.ProtectionStatus" | find /i "On" 1>nul && (
|
echo - You can safely ignore if error appears in the upgrade Window,
|
||||||
call :dk_color %Red% "Bitlocker / Device Encryption is On in the system."
|
echo but in that case you must manually reboot the system.
|
||||||
echo:
|
echo:
|
||||||
echo Either Use alternative CBS upgrade method for edition change
|
echo - Save your work before continue, system will auto restart.
|
||||||
echo Or Ensure that you have it's recovery key, you may need it
|
echo - You can connect to Internet after the system restart.
|
||||||
echo Or Turn off Bitlocker / Device Encryption
|
|
||||||
echo:
|
echo:
|
||||||
)
|
echo - You will need to activate with HWID option once the edition is changed.
|
||||||
call :dk_color %Magenta% "Important - Save your work before continue, system will auto reboot."
|
|
||||||
echo:
|
echo:
|
||||||
choice /C:21 /N /M "[1] Continue [2] %_exitmsg% : "
|
choice /C:21 /N /M "[1] Continue [2] %_exitmsg% : "
|
||||||
if !errorlevel!==1 exit /b
|
if !errorlevel!==1 exit /b
|
||||||
|
@ -600,22 +596,6 @@ if %_wmic% EQU 0 set "chkapp=for /f "tokens=2 delims==" %%a in ('%psc% "(([WMISE
|
||||||
%chkapp% do (if defined applist (call set "applist=!applist! %%a") else (call set "applist=%%a"))
|
%chkapp% do (if defined applist (call set "applist=!applist! %%a") else (call set "applist=%%a"))
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
:: Get Product name (WMI/REG methods are not reliable in all conditions, hence winbrand.dll method is used)
|
|
||||||
|
|
||||||
:dk_product
|
|
||||||
|
|
||||||
set winos=
|
|
||||||
set d1=[DllImport(\"winbrand\",CharSet=CharSet.Unicode)]public static extern string BrandingFormatString(string s);
|
|
||||||
set d2=$AP=Add-Type -Member '%d1%' -Name D1 -PassThru; $AP::BrandingFormatString('%%WINDOWS_LONG%%')
|
|
||||||
for /f "delims=" %%s in ('"%psc% %d2%"') do if not errorlevel 1 (set winos=%%s)
|
|
||||||
echo "%winos%" | find /i "Windows" 1>nul || (
|
|
||||||
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName 2^>nul') do set "winos=%%b"
|
|
||||||
if %winbuild% GEQ 22000 (
|
|
||||||
set winos=!winos:Windows 10=Windows 11!
|
|
||||||
)
|
|
||||||
)
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
:: Check wmic.exe
|
:: Check wmic.exe
|
||||||
|
|
||||||
:dk_ckeckwmic
|
:dk_ckeckwmic
|
||||||
|
@ -626,6 +606,34 @@ wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i "com
|
||||||
)
|
)
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
|
:: Get Product name (WMI/REG methods are not reliable in all conditions, hence winbrand.dll method is used)
|
||||||
|
|
||||||
|
:dk_product
|
||||||
|
|
||||||
|
call :dk_reflection
|
||||||
|
|
||||||
|
set d1=%ref% $meth = $TypeBuilder.DefinePInvokeMethod('BrandingFormatString', 'winbrand.dll', 'Public, Static', 1, [String], @([String]), 1, 3);
|
||||||
|
set d1=%d1% $meth.SetImplementationFlags(128); $TypeBuilder.CreateType()::BrandingFormatString('%%WINDOWS_LONG%%')
|
||||||
|
|
||||||
|
set winos=
|
||||||
|
for /f "delims=" %%s in ('"%psc% %d1%"') do if not errorlevel 1 (set winos=%%s)
|
||||||
|
echo "%winos%" | find /i "Windows" 1>nul || (
|
||||||
|
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName 2^>nul') do set "winos=%%b"
|
||||||
|
if %winbuild% GEQ 22000 (
|
||||||
|
set winos=!winos:Windows 10=Windows 11!
|
||||||
|
)
|
||||||
|
)
|
||||||
|
exit /b
|
||||||
|
|
||||||
|
:: Common lines used in PowerShell reflection code
|
||||||
|
|
||||||
|
:dk_reflection
|
||||||
|
|
||||||
|
set ref=$AssemblyBuilder = [AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1);
|
||||||
|
set ref=%ref% $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule(2, $False);
|
||||||
|
set ref=%ref% $TypeBuilder = $ModuleBuilder.DefineType(0);
|
||||||
|
exit /b
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:: Get Product Key from pkeyhelper.dll for future new editions
|
:: Get Product Key from pkeyhelper.dll for future new editions
|
||||||
|
@ -633,24 +641,30 @@ exit /b
|
||||||
|
|
||||||
:dk_pkey
|
:dk_pkey
|
||||||
|
|
||||||
|
call :dk_reflection
|
||||||
|
|
||||||
|
set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('SkuGetProductKeyForEdition', 'pkeyhelper.dll', 'Public, Static', 1, [int], @([int], [String], [String].MakeByRefType(), [String].MakeByRefType()), 1, 3);
|
||||||
|
set d1=%d1% $out = ''; [void]$TypeBuilder.CreateType()::SkuGetProductKeyForEdition(%1, %2, [ref]$out, [ref]$null); $out
|
||||||
|
|
||||||
set pkey=
|
set pkey=
|
||||||
set d1=[DllImport(\"pkeyhelper.dll\",CharSet=CharSet.Unicode)]public static extern int SkuGetProductKeyForEdition(int e, string c, out string k, out string p);
|
for /f %%a in ('%psc% "%d1%"') do if not errorlevel 1 (set pkey=%%a)
|
||||||
set d2=$AP=Add-Type -Member '%d1%' -Name D1 -PassThru; $k=''; $null=$AP::SkuGetProductKeyForEdition(%1, %2, [ref]$k, [ref]$null); $k
|
|
||||||
for /f %%a in ('%psc% "%d2%"') do if not errorlevel 1 (set pkey=%%a)
|
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
|
|
||||||
:: Get channel name for the key which was extracted from pkeyhelper.dll
|
:: Get channel name for the key which was extracted from pkeyhelper.dll
|
||||||
|
|
||||||
:dk_pkeychannel
|
:dk_pkeychannel
|
||||||
|
|
||||||
set k=%1
|
set k=%1
|
||||||
set pkeychannel=
|
set m=[Runtime.InteropServices.Marshal]
|
||||||
set p=%SystemRoot%\System32\spp\tokens\pkeyconfig\pkeyconfig.xrm-ms
|
set p=%SystemRoot%\System32\spp\tokens\pkeyconfig\pkeyconfig.xrm-ms
|
||||||
set m=[System.Runtime.InteropServices.Marshal]
|
|
||||||
set d1=[DllImport(\"PidGenX.dll\",CharSet=CharSet.Unicode)]public static extern int PidGenX(string k,string p,string m,int u,IntPtr i,IntPtr d,IntPtr f);
|
set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('PidGenX', 'pidgenx.dll', 'Public, Static', 1, [int], @([String], [String], [String], [int], [IntPtr], [IntPtr], [IntPtr]), 1, 3);
|
||||||
set d2=$AP=Add-Type -Member '%d1%' -Name D1 -PassThru; $k='%k%'; $p='%p%'; $r=[byte[]]::new(0x04F8); $r[0]=0xF8; $r[1]=0x04; $f=%m%::AllocHGlobal(1272); %m%::Copy($r,0,$f,1272);
|
set d1=%d1% $r = [byte[]]::new(0x04F8); $r[0] = 0xF8; $r[1] = 0x04; $f = %m%::AllocHGlobal(0x04F8); %m%::Copy($r, 0, $f, 0x04F8);
|
||||||
set d3=%d2% [void]$AP::PidGenX($k,$p,\"00000\",0,0,0,$f); %m%::Copy($f,$r,0,1272); %m%::FreeHGlobal($f); [System.Text.Encoding]::Unicode.GetString($r, 1016, 128).Replace('0','')
|
set d1=%d1% [void]$TypeBuilder.CreateType()::PidGenX('%k%', '%p%', '00000', 0, 0, 0, $f); %m%::Copy($f, $r, 0, 0x04F8); %m%::FreeHGlobal($f); [Text.Encoding]::Unicode.GetString($r, 1016, 128)
|
||||||
for /f %%a in ('%psc% "%d3%"') do if not errorlevel 1 (set pkeychannel=%%a)
|
|
||||||
|
set pkeychannel=
|
||||||
|
for /f %%a in ('%psc% "%d1%"') do if not errorlevel 1 (set pkeychannel=%%a)
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
:ced_windowskey
|
:ced_windowskey
|
||||||
|
@ -673,9 +687,13 @@ exit /b
|
||||||
set k=%1
|
set k=%1
|
||||||
set targetSKU=
|
set targetSKU=
|
||||||
for %%# in (pkeyhelper.dll) do @if "%%~$PATH:#"=="" exit /b
|
for %%# in (pkeyhelper.dll) do @if "%%~$PATH:#"=="" exit /b
|
||||||
set d1=[DllImport(\"pkeyhelper.dll\",CharSet=CharSet.Unicode)]public static extern int GetEditionIdFromName(string e, out int s);
|
|
||||||
set d2=$AP=Add-Type -Member '%d1%' -Name D1 -PassThru; $s=0; $null=$AP::GetEditionIdFromName('%k%', [ref]$s); $s
|
call :dk_reflection
|
||||||
for /f %%a in ('%psc% "%d2%"') do if not errorlevel 1 (set targetSKU=%%a)
|
|
||||||
|
set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('GetEditionIdFromName', 'pkeyhelper.dll', 'Public, Static', 1, [int], @([String], [int].MakeByRefType()), 1, 3);
|
||||||
|
set d1=%d1% $out = 0; [void]$TypeBuilder.CreateType()::GetEditionIdFromName('%k%', [ref]$out); $out
|
||||||
|
|
||||||
|
for /f %%a in ('%psc% "%d1%"') do if not errorlevel 1 (set targetSKU=%%a)
|
||||||
if "%targetSKU%"=="0" set targetSKU=
|
if "%targetSKU%"=="0" set targetSKU=
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
|
@ -839,7 +857,7 @@ function Write-UpgradeXml {
|
||||||
}
|
}
|
||||||
|
|
||||||
function Write-Usage {
|
function Write-Usage {
|
||||||
Get-Help $PSCommandPath -detailed
|
Get-Help $script:MyInvocation.MyCommand.Path -detailed
|
||||||
}
|
}
|
||||||
|
|
||||||
$version = '1.0'
|
$version = '1.0'
|
||||||
|
@ -854,7 +872,7 @@ if($SetEdition -eq '' -and ($false -eq $getTargetsParam)) {
|
||||||
$removalCandidates = @();
|
$removalCandidates = @();
|
||||||
$installCandidates = @{};
|
$installCandidates = @{};
|
||||||
|
|
||||||
$packages = Get-ChildItem -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages' | select Name | where name -Match '^.*\\Microsoft-Windows-.*Edition~'
|
$packages = Get-ChildItem -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages' | select Name | where { $_.name -match '^.*\\Microsoft-Windows-.*Edition~' }
|
||||||
foreach($package in $packages) {
|
foreach($package in $packages) {
|
||||||
$state = (Get-ItemProperty -Path "Registry::$($package.Name)").CurrentState
|
$state = (Get-ItemProperty -Path "Registry::$($package.Name)").CurrentState
|
||||||
$packageName = ($package.Name -split '\\')[-1]
|
$packageName = ($package.Name -split '\\')[-1]
|
||||||
|
@ -865,12 +883,12 @@ foreach($package in $packages) {
|
||||||
$installCandidates[$packageEdition] = @()
|
$installCandidates[$packageEdition] = @()
|
||||||
}
|
}
|
||||||
|
|
||||||
if($false -eq ($packageName -in $installCandidates[$packageEdition])) {
|
if($false -eq ($installCandidates[$packageEdition] -contains $packageName)) {
|
||||||
$installCandidates[$packageEdition] = $installCandidates[$packageEdition] + @($packageName)
|
$installCandidates[$packageEdition] = $installCandidates[$packageEdition] + @($packageName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if((($state -eq 0x50) -or ($state -eq 0x70)) -and ($false -eq ($packageName -in $removalCandidates))) {
|
if((($state -eq 0x50) -or ($state -eq 0x70)) -and ($false -eq ($removalCandidates -contains $packageName))) {
|
||||||
$removalCandidates = $removalCandidates + @($packageName)
|
$removalCandidates = $removalCandidates + @($packageName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -880,12 +898,12 @@ if($getTargetsParam) {
|
||||||
Exit
|
Exit
|
||||||
}
|
}
|
||||||
|
|
||||||
if($false -eq ($SetEdition -in $installCandidates.Keys)) {
|
if($false -eq ($installCandidates.Keys -contains $SetEdition)) {
|
||||||
Write-Error "The system cannot be upgraded to `"$SetEdition`""
|
Write-Error "The system cannot be upgraded to `"$SetEdition`""
|
||||||
Exit 1
|
Exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
$xmlPath = $Env:Temp + '\CbsUpgrade.xml'
|
$xmlPath = $Env:SystemRoot + '\Temp' + '\CbsUpgrade.xml'
|
||||||
|
|
||||||
Write-UpgradeXml -RemovalCandidates $removalCandidates `
|
Write-UpgradeXml -RemovalCandidates $removalCandidates `
|
||||||
-InstallCandidates $installCandidates[$SetEdition] `
|
-InstallCandidates $installCandidates[$SetEdition] `
|
||||||
|
@ -938,46 +956,47 @@ Restart-Computer
|
||||||
|
|
||||||
:changeeditiondata
|
:changeeditiondata
|
||||||
|
|
||||||
|
set h=
|
||||||
for %%# in (
|
for %%# in (
|
||||||
44NYX-TKR9D-CCM2D-V6B8F-HQWWR__Volume:MAK_Enterprise
|
44N%h%YX-TK%h%R9D-CCM2%h%D-V6%h%B8F-HQ%h%WWR__Volume:MAK_Enterprise
|
||||||
D6RD9-D4N8T-RT9QX-YW6YT-FCWWJ______Retail_Starter
|
D6R%h%D9-D4%h%N8T-RT9Q%h%X-YW%h%6YT-FC%h%WWJ______Retail_Starter
|
||||||
3V6Q6-NQXCX-V8YXR-9QCYV-QPFCT__Volume:MAK_EnterpriseN
|
3V6%h%Q6-NQ%h%XCX-V8YX%h%R-9Q%h%CYV-QP%h%FCT__Volume:MAK_EnterpriseN
|
||||||
3NFXW-2T27M-2BDW6-4GHRV-68XRX______Retail_StarterN
|
3NF%h%XW-2T%h%27M-2BDW%h%6-4G%h%HRV-68%h%XRX______Retail_StarterN
|
||||||
VK7JG-NPHTM-C97JM-9MPGT-3V66T______Retail_Professional
|
VK7%h%JG-NP%h%HTM-C97J%h%M-9M%h%PGT-3V%h%66T______Retail_Professional
|
||||||
2B87N-8KFHP-DKV6R-Y2C8J-PKCKT______Retail_ProfessionalN
|
2B8%h%7N-8K%h%FHP-DKV6%h%R-Y2%h%C8J-PK%h%CKT______Retail_ProfessionalN
|
||||||
4CPRK-NM3K3-X6XXQ-RXX86-WXCHW______Retail_CoreN
|
4CP%h%RK-NM%h%3K3-X6XX%h%Q-RX%h%X86-WX%h%CHW______Retail_CoreN
|
||||||
N2434-X9D7W-8PF6X-8DV9T-8TYMD______Retail_CoreCountrySpecific
|
N24%h%34-X9%h%D7W-8PF6%h%X-8D%h%V9T-8T%h%YMD______Retail_CoreCountrySpecific
|
||||||
BT79Q-G7N6G-PGBYW-4YWX6-6F4BT______Retail_CoreSingleLanguage
|
BT7%h%9Q-G7%h%N6G-PGBY%h%W-4Y%h%WX6-6F%h%4BT______Retail_CoreSingleLanguage
|
||||||
YTMG3-N6DKC-DKB77-7M9GH-8HVX7______Retail_Core
|
YTM%h%G3-N6%h%DKC-DKB7%h%7-7M%h%9GH-8H%h%VX7______Retail_Core
|
||||||
XKCNC-J26Q9-KFHD2-FKTHY-KD72Y__OEM:NONSLP_PPIPro
|
XKC%h%NC-J2%h%6Q9-KFHD%h%2-FK%h%THY-KD%h%72Y__OEM:NONSLP_PPIPro
|
||||||
YNMGQ-8RYV3-4PGQ3-C8XTP-7CFBY______Retail_Education
|
YNM%h%GQ-8R%h%YV3-4PGQ%h%3-C8%h%XTP-7C%h%FBY______Retail_Education
|
||||||
84NGF-MHBT6-FXBX8-QWJK7-DRR8H______Retail_EducationN
|
84N%h%GF-MH%h%BT6-FXBX%h%8-QW%h%JK7-DR%h%R8H______Retail_EducationN
|
||||||
KCNVH-YKWX8-GJJB9-H9FDT-6F7W2__Volume:MAK_EnterpriseS_VB
|
KCN%h%VH-YK%h%WX8-GJJB%h%9-H9%h%FDT-6F%h%7W2__Volume:MAK_EnterpriseS_VB
|
||||||
VBX36-N7DDY-M9H62-83BMJ-CPR42__Volume:MAK_EnterpriseS_RS5
|
VBX%h%36-N7%h%DDY-M9H6%h%2-83%h%BMJ-CP%h%R42__Volume:MAK_EnterpriseS_RS5
|
||||||
PN3KR-JXM7T-46HM4-MCQGK-7XPJQ__Volume:MAK_EnterpriseS_RS1
|
PN3%h%KR-JX%h%M7T-46HM%h%4-MC%h%QGK-7X%h%PJQ__Volume:MAK_EnterpriseS_RS1
|
||||||
DVWKN-3GCMV-Q2XF4-DDPGM-VQWWY__Volume:MAK_EnterpriseS_TH
|
DVW%h%KN-3G%h%CMV-Q2XF%h%4-DD%h%PGM-VQ%h%WWY__Volume:MAK_EnterpriseS_TH
|
||||||
RQFNW-9TPM3-JQ73T-QV4VQ-DV9PT__Volume:MAK_EnterpriseSN_VB
|
RQF%h%NW-9T%h%PM3-JQ73%h%T-QV%h%4VQ-DV%h%9PT__Volume:MAK_EnterpriseSN_VB
|
||||||
M33WV-NHY3C-R7FPM-BQGPT-239PG__Volume:MAK_EnterpriseSN_RS5
|
M33%h%WV-NH%h%Y3C-R7FP%h%M-BQ%h%GPT-23%h%9PG__Volume:MAK_EnterpriseSN_RS5
|
||||||
2DBW3-N2PJG-MVHW3-G7TDK-9HKR4__Volume:MAK_EnterpriseSN_RS1
|
2DB%h%W3-N2%h%PJG-MVHW%h%3-G7%h%TDK-9H%h%KR4__Volume:MAK_EnterpriseSN_RS1
|
||||||
NTX6B-BRYC2-K6786-F6MVQ-M7V2X__Volume:MAK_EnterpriseSN_TH
|
NTX%h%6B-BR%h%YC2-K678%h%6-F6%h%MVQ-M7%h%V2X__Volume:MAK_EnterpriseSN_TH
|
||||||
G3KNM-CHG6T-R36X3-9QDG6-8M8K9______Retail_ProfessionalSingleLanguage
|
G3K%h%NM-CH%h%G6T-R36X%h%3-9Q%h%DG6-8M%h%8K9______Retail_ProfessionalSingleLanguage
|
||||||
HNGCC-Y38KG-QVK8D-WMWRK-X86VK______Retail_ProfessionalCountrySpecific
|
HNG%h%CC-Y3%h%8KG-QVK8%h%D-WM%h%WRK-X8%h%6VK______Retail_ProfessionalCountrySpecific
|
||||||
DXG7C-N36C4-C4HTG-X4T3X-2YV77______Retail_ProfessionalWorkstation
|
DXG%h%7C-N3%h%6C4-C4HT%h%G-X4%h%T3X-2Y%h%V77______Retail_ProfessionalWorkstation
|
||||||
WYPNQ-8C467-V2W6J-TX4WX-WT2RQ______Retail_ProfessionalWorkstationN
|
WYP%h%NQ-8C%h%467-V2W6%h%J-TX%h%4WX-WT%h%2RQ______Retail_ProfessionalWorkstationN
|
||||||
8PTT6-RNW4C-6V7J2-C2D3X-MHBPB______Retail_ProfessionalEducation
|
8PT%h%T6-RN%h%W4C-6V7J%h%2-C2%h%D3X-MH%h%BPB______Retail_ProfessionalEducation
|
||||||
GJTYN-HDMQY-FRR76-HVGC7-QPF8P______Retail_ProfessionalEducationN
|
GJT%h%YN-HD%h%MQY-FRR7%h%6-HV%h%GC7-QP%h%F8P______Retail_ProfessionalEducationN
|
||||||
C4NTJ-CX6Q2-VXDMR-XVKGM-F9DJC__Volume:MAK_EnterpriseG
|
C4N%h%TJ-CX%h%6Q2-VXDM%h%R-XV%h%KGM-F9%h%DJC__Volume:MAK_EnterpriseG
|
||||||
46PN6-R9BK9-CVHKB-HWQ9V-MBJY8__Volume:MAK_EnterpriseGN
|
46P%h%N6-R9%h%BK9-CVHK%h%B-HW%h%Q9V-MB%h%JY8__Volume:MAK_EnterpriseGN
|
||||||
NJCF7-PW8QT-3324D-688JX-2YV66______Retail_ServerRdsh
|
NJC%h%F7-PW%h%8QT-3324%h%D-68%h%8JX-2Y%h%V66______Retail_ServerRdsh
|
||||||
V3WVW-N2PV2-CGWC3-34QGF-VMJ2C______Retail_Cloud
|
V3W%h%VW-N2%h%PV2-CGWC%h%3-34%h%QGF-VM%h%J2C______Retail_Cloud
|
||||||
NH9J3-68WK7-6FB93-4K3DF-DJ4F6______Retail_CloudN
|
NH9%h%J3-68%h%WK7-6FB9%h%3-4K%h%3DF-DJ%h%4F6______Retail_CloudN
|
||||||
2HN6V-HGTM8-6C97C-RK67V-JQPFD______Retail_CloudE
|
2HN%h%6V-HG%h%TM8-6C97%h%C-RK%h%67V-JQ%h%PFD______Retail_CloudE
|
||||||
XQQYW-NFFMW-XJPBH-K8732-CKFFD______OEM:DM_IoTEnterprise
|
XQQ%h%YW-NF%h%FMW-XJPB%h%H-K8%h%732-CK%h%FFD______OEM:DM_IoTEnterprise
|
||||||
QPM6N-7J2WJ-P88HH-P3YRH-YY74H__OEM:NONSLP_IoTEnterpriseS_VB
|
QPM%h%6N-7J%h%2WJ-P88H%h%H-P3%h%YRH-YY%h%74H__OEM:NONSLP_IoTEnterpriseS_VB
|
||||||
KBN8V-HFGQ4-MGXVD-347P6-PDQGT_Volume:GVLK_IoTEnterpriseS_NI
|
KBN%h%8V-HF%h%GQ4-MGXV%h%D-34%h%7P6-PD%h%QGT_Volume:GVLK_IoTEnterpriseS_NI
|
||||||
K9VKN-3BGWV-Y624W-MCRMQ-BHDCD______Retail_CloudEditionN
|
K9V%h%KN-3B%h%GWV-Y624%h%W-MC%h%RMQ-BH%h%DCD______Retail_CloudEditionN
|
||||||
KY7PN-VR6RX-83W6Y-6DDYQ-T6R4W______Retail_CloudEdition
|
KY7%h%PN-VR%h%6RX-83W6%h%Y-6D%h%DYQ-T6%h%R4W______Retail_CloudEdition
|
||||||
MPB3G-XNBR7-CC43M-FG64B-F9GBK______Retail_IoTEnterpriseSK
|
MPB%h%3G-XN%h%BR7-CC43%h%M-FG%h%64B-F9%h%GBK______Retail_IoTEnterpriseSK
|
||||||
) do (
|
) do (
|
||||||
for /f "tokens=1-4 delims=_" %%A in ("%%#") do if /i %targetedition%==%%C (
|
for /f "tokens=1-4 delims=_" %%A in ("%%#") do if /i %targetedition%==%%C (
|
||||||
|
|
||||||
|
@ -1001,17 +1020,18 @@ if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*CorEdition~*.
|
||||||
|
|
||||||
:: Only RS3 and older version keys (GVLK/Generic Retail) are stored here, later ones are extracted from the system itself
|
:: Only RS3 and older version keys (GVLK/Generic Retail) are stored here, later ones are extracted from the system itself
|
||||||
|
|
||||||
|
set h=
|
||||||
for %%# in (
|
for %%# in (
|
||||||
WC2BQ-8NRM3-FDDYY-2BFGV-KHKQY_RS1_ServerStandard%Cor%
|
WC2%h%BQ-8N%h%RM3-FDD%h%YY-2B%h%FGV-KHK%h%QY_RS1_ServerStandard%Cor%
|
||||||
CB7KF-BWN84-R7R2Y-793K2-8XDDG_RS1_ServerDatacenter%Cor%
|
CB7%h%KF-BW%h%N84-R7R%h%2Y-79%h%3K2-8XD%h%DG_RS1_ServerDatacenter%Cor%
|
||||||
JCKRF-N37P4-C2D82-9YXRT-4M63B_RS1_ServerSolution
|
JCK%h%RF-N3%h%7P4-C2D%h%82-9Y%h%XRT-4M6%h%3B_RS1_ServerSolution
|
||||||
QN4C6-GBJD2-FB422-GHWJK-GJG2R_RS1_ServerCloudStorage
|
QN4%h%C6-GB%h%JD2-FB4%h%22-GH%h%WJK-GJG%h%2R_RS1_ServerCloudStorage
|
||||||
VP34G-4NPPG-79JTQ-864T4-R3MQX_RS1_ServerAzureCor
|
VP3%h%4G-4N%h%PPG-79J%h%TQ-86%h%4T4-R3M%h%QX_RS1_ServerAzureCor
|
||||||
9JQNQ-V8HQ6-PKB8H-GGHRY-R62H6_RS1_ServerAzureNano
|
9JQ%h%NQ-V8%h%HQ6-PKB%h%8H-GG%h%HRY-R62%h%H6_RS1_ServerAzureNano
|
||||||
VN8D3-PR82H-DB6BJ-J9P4M-92F6J_RS1_ServerStorageStandard
|
VN8%h%D3-PR%h%82H-DB6%h%BJ-J9%h%P4M-92F%h%6J_RS1_ServerStorageStandard
|
||||||
48TQX-NVK3R-D8QR3-GTHHM-8FHXC_RS1_ServerStorageWorkgroup
|
48T%h%QX-NV%h%K3R-D8Q%h%R3-GT%h%HHM-8FH%h%XC_RS1_ServerStorageWorkgroup
|
||||||
2HXDN-KRXHB-GPYC7-YCKFJ-7FVDG_RS3_ServerDatacenterACor
|
2HX%h%DN-KR%h%XHB-GPY%h%C7-YC%h%KFJ-7FV%h%DG_RS3_ServerDatacenterACor
|
||||||
PTXN8-JFHJM-4WC78-MPCBR-9W4KR_RS3_ServerStandardACor
|
PTX%h%N8-JF%h%HJM-4WC%h%78-MP%h%CBR-9W4%h%KR_RS3_ServerStandardACor
|
||||||
) do (
|
) do (
|
||||||
for /f "tokens=1-3 delims=_" %%A in ("%%#") do if /i %targetedition%==%%C (
|
for /f "tokens=1-3 delims=_" %%A in ("%%#") do if /i %targetedition%==%%C (
|
||||||
echo "%branch%" | find /i "%%B" 1>nul && (set "key=%%A")
|
echo "%branch%" | find /i "%%B" 1>nul && (set "key=%%A")
|
||||||
|
|
|
@ -42,7 +42,7 @@ pushd "%~dp0"
|
||||||
>nul findstr /rxc:".*" "%~nx0"
|
>nul findstr /rxc:".*" "%~nx0"
|
||||||
if not %errorlevel%==0 (
|
if not %errorlevel%==0 (
|
||||||
echo:
|
echo:
|
||||||
echo Error: This is not a correct file. It has LF line ending issue.
|
echo Error: Script either has LF line ending issue, or it failed to read itself.
|
||||||
echo:
|
echo:
|
||||||
ping 127.0.0.1 -n 6 > nul
|
ping 127.0.0.1 -n 6 > nul
|
||||||
popd
|
popd
|
||||||
|
|
|
@ -70,7 +70,7 @@ pushd "%~dp0"
|
||||||
>nul findstr /rxc:".*" "%~nx0"
|
>nul findstr /rxc:".*" "%~nx0"
|
||||||
if not %errorlevel%==0 (
|
if not %errorlevel%==0 (
|
||||||
echo:
|
echo:
|
||||||
echo Error: This is not a correct file. It has LF line ending issue.
|
echo Error: Script either has LF line ending issue, or it failed to read itself.
|
||||||
echo:
|
echo:
|
||||||
ping 127.0.0.1 -n 6 > nul
|
ping 127.0.0.1 -n 6 > nul
|
||||||
popd
|
popd
|
||||||
|
@ -85,7 +85,9 @@ wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i "Com
|
||||||
|
|
||||||
if %_cwmi% EQU 0 (
|
if %_cwmi% EQU 0 (
|
||||||
echo:
|
echo:
|
||||||
echo Error: wmic.exe is not responding in the system.
|
echo Error: WMI is not responding in the system.
|
||||||
|
echo:
|
||||||
|
echo In MAS, Goto Troubleshoot and run Fix WMI option.
|
||||||
echo:
|
echo:
|
||||||
echo Press any key to exit...
|
echo Press any key to exit...
|
||||||
pause >nul
|
pause >nul
|
||||||
|
|
|
@ -53,7 +53,7 @@ pushd "%~dp0"
|
||||||
>nul findstr /rxc:".*" "%~nx0"
|
>nul findstr /rxc:".*" "%~nx0"
|
||||||
if not %errorlevel%==0 (
|
if not %errorlevel%==0 (
|
||||||
echo:
|
echo:
|
||||||
echo Error: This is not a correct file. It has LF line ending issue.
|
echo Error: Script either has LF line ending issue, or it failed to read itself.
|
||||||
echo:
|
echo:
|
||||||
ping 127.0.0.1 -n 6 > nul
|
ping 127.0.0.1 -n 6 > nul
|
||||||
popd
|
popd
|
||||||
|
@ -168,7 +168,7 @@ goto done2
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
mode 66, 26
|
mode con cols=78 lines=30
|
||||||
|
|
||||||
if exist "!desktop!\$OEM$\" (
|
if exist "!desktop!\$OEM$\" (
|
||||||
echo _____________________________________________________
|
echo _____________________________________________________
|
||||||
|
@ -178,12 +178,9 @@ echo _____________________________________________________
|
||||||
goto done2
|
goto done2
|
||||||
)
|
)
|
||||||
|
|
||||||
set HWID_Activation.cmd=HWID-KMS38_Activation\HWID_Activation.cmd
|
set HWID_Activation.cmd=Activators\HWID_Activation.cmd
|
||||||
set KMS38_Activation.cmd=HWID-KMS38_Activation\KMS38_Activation.cmd
|
set KMS38_Activation.cmd=Activators\KMS38_Activation.cmd
|
||||||
|
set Online_KMS_Activation.cmd=Activators\Online_KMS_Activation.cmd
|
||||||
set Activate.cmd=Online_KMS_Activation\Activate.cmd
|
|
||||||
set cleanosppx64.exe=Online_KMS_Activation\BIN\cleanosppx64.exe
|
|
||||||
set cleanosppx86.exe=Online_KMS_Activation\BIN\cleanosppx86.exe
|
|
||||||
|
|
||||||
pushd "!_work!"
|
pushd "!_work!"
|
||||||
|
|
||||||
|
@ -191,9 +188,7 @@ set _nofile=
|
||||||
for %%# in (
|
for %%# in (
|
||||||
%HWID_Activation.cmd%
|
%HWID_Activation.cmd%
|
||||||
%KMS38_Activation.cmd%
|
%KMS38_Activation.cmd%
|
||||||
%Activate.cmd%
|
%Online_KMS_Activation.cmd%
|
||||||
%cleanosppx64.exe%
|
|
||||||
%cleanosppx86.exe%
|
|
||||||
) do (
|
) do (
|
||||||
if not exist "%%#" set _nofile=1
|
if not exist "%%#" set _nofile=1
|
||||||
)
|
)
|
||||||
|
@ -213,24 +208,26 @@ goto done2
|
||||||
:Menu
|
:Menu
|
||||||
|
|
||||||
cls
|
cls
|
||||||
|
mode con cols=78 lines=30
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
echo: Extract $OEM$ folder on the desktop
|
|
||||||
echo: ________________________________________________________
|
|
||||||
echo:
|
|
||||||
echo: [1] HWID
|
|
||||||
echo: [2] KMS38
|
|
||||||
echo: [3] Online KMS
|
|
||||||
echo:
|
|
||||||
echo: [4] HWID ^(Windows^) ^+ Online KMS ^(Office^)
|
|
||||||
echo: [5] KMS38 ^(Windows^) ^+ Online KMS ^(Office^)
|
|
||||||
echo:
|
echo:
|
||||||
echo: [0] Exit
|
echo: Extract $OEM$ folder on the desktop
|
||||||
echo: ________________________________________________________
|
echo: ________________________________________________________
|
||||||
|
echo:
|
||||||
|
echo: [1] HWID
|
||||||
|
echo: [2] KMS38
|
||||||
|
echo: [3] Online KMS
|
||||||
|
echo:
|
||||||
|
echo: [4] HWID ^(Windows^) ^+ Online KMS ^(Office^)
|
||||||
|
echo: [5] KMS38 ^(Windows^) ^+ Online KMS ^(Office^)
|
||||||
|
echo:
|
||||||
|
echo: [0] Exit
|
||||||
|
echo: ________________________________________________________
|
||||||
echo:
|
echo:
|
||||||
call :ex_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard [1,2,3,4,5,0]"
|
call :ex_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard [1,2,3,4,5,0]"
|
||||||
choice /C:123450 /N
|
choice /C:123450 /N
|
||||||
set _erl=%errorlevel%
|
set _erl=%errorlevel%
|
||||||
|
|
||||||
|
@ -307,19 +304,15 @@ cd \
|
||||||
:kms
|
:kms
|
||||||
|
|
||||||
cls
|
cls
|
||||||
md "!desktop!\$OEM$\$$\Setup\Scripts\BIN"
|
md "!desktop!\$OEM$\$$\Setup\Scripts"
|
||||||
pushd "!_work!"
|
pushd "!_work!"
|
||||||
copy /y /b "%Activate.cmd%" "!_dir!\Activate.cmd" %nul%
|
copy /y /b "%Online_KMS_Activation.cmd%" "!_dir!\Online_KMS_Activation.cmd" %nul%
|
||||||
copy /y /b "%cleanosppx64.exe%" "!_dir!\BIN\cleanosppx64.exe" %nul%
|
|
||||||
copy /y /b "%cleanosppx86.exe%" "!_dir!\BIN\cleanosppx86.exe" %nul%
|
|
||||||
popd
|
popd
|
||||||
call :export kms_setup
|
call :export kms_setup
|
||||||
|
|
||||||
set _error=
|
set _error=
|
||||||
if not exist "!_dir!\Activate.cmd" set _error=1
|
if not exist "!_dir!\Online_KMS_Activation.cmd" set _error=1
|
||||||
if not exist "!_dir!\SetupComplete.cmd" set _error=1
|
if not exist "!_dir!\SetupComplete.cmd" set _error=1
|
||||||
if not exist "!_dir!\BIN\cleanosppx64.exe" set _error=1
|
|
||||||
if not exist "!_dir!\BIN\cleanosppx86.exe" set _error=1
|
|
||||||
if defined _error goto errorfound
|
if defined _error goto errorfound
|
||||||
|
|
||||||
set oem=Online KMS
|
set oem=Online KMS
|
||||||
|
@ -330,7 +323,7 @@ goto done
|
||||||
|
|
||||||
fltmc >nul || exit /b
|
fltmc >nul || exit /b
|
||||||
|
|
||||||
start /b /wait cmd /c "%~dp0Activate.cmd" /KMS-ActAndRenewalTask /KMS-WindowsOffice
|
start /b /wait cmd /c "%~dp0Online_KMS_Activation.cmd" /KMS-ActAndRenewalTask /KMS-WindowsOffice
|
||||||
|
|
||||||
cd \
|
cd \
|
||||||
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
||||||
|
@ -341,21 +334,17 @@ cd \
|
||||||
:hwid_kms
|
:hwid_kms
|
||||||
|
|
||||||
cls
|
cls
|
||||||
md "!desktop!\$OEM$\$$\Setup\Scripts\BIN"
|
md "!desktop!\$OEM$\$$\Setup\Scripts"
|
||||||
pushd "!_work!"
|
pushd "!_work!"
|
||||||
copy /y /b "%HWID_Activation.cmd%" "!_dir!\HWID_Activation.cmd" %nul%
|
copy /y /b "%HWID_Activation.cmd%" "!_dir!\HWID_Activation.cmd" %nul%
|
||||||
copy /y /b "%Activate.cmd%" "!_dir!\Activate.cmd" %nul%
|
copy /y /b "%Online_KMS_Activation.cmd%" "!_dir!\Online_KMS_Activation.cmd" %nul%
|
||||||
copy /y /b "%cleanosppx64.exe%" "!_dir!\BIN\cleanosppx64.exe" %nul%
|
|
||||||
copy /y /b "%cleanosppx86.exe%" "!_dir!\BIN\cleanosppx86.exe" %nul%
|
|
||||||
popd
|
popd
|
||||||
call :export hwid_kms_setup
|
call :export hwid_kms_setup
|
||||||
|
|
||||||
set _error=
|
set _error=
|
||||||
if not exist "!_dir!\HWID_Activation.cmd" set _error=1
|
if not exist "!_dir!\HWID_Activation.cmd" set _error=1
|
||||||
if not exist "!_dir!\Activate.cmd" set _error=1
|
if not exist "!_dir!\Online_KMS_Activation.cmd" set _error=1
|
||||||
if not exist "!_dir!\SetupComplete.cmd" set _error=1
|
if not exist "!_dir!\SetupComplete.cmd" set _error=1
|
||||||
if not exist "!_dir!\BIN\cleanosppx64.exe" set _error=1
|
|
||||||
if not exist "!_dir!\BIN\cleanosppx86.exe" set _error=1
|
|
||||||
if defined _error goto errorfound
|
if defined _error goto errorfound
|
||||||
|
|
||||||
set oem=HWID [Windows] + Online KMS [Office]
|
set oem=HWID [Windows] + Online KMS [Office]
|
||||||
|
@ -368,7 +357,7 @@ fltmc >nul || exit /b
|
||||||
|
|
||||||
start /b /wait cmd /c "%~dp0HWID_Activation.cmd" /HWID
|
start /b /wait cmd /c "%~dp0HWID_Activation.cmd" /HWID
|
||||||
|
|
||||||
start /b /wait cmd /c "%~dp0Activate.cmd" /KMS-ActAndRenewalTask /KMS-Office
|
start /b /wait cmd /c "%~dp0Online_KMS_Activation.cmd" /KMS-ActAndRenewalTask /KMS-Office
|
||||||
|
|
||||||
cd \
|
cd \
|
||||||
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
||||||
|
@ -379,21 +368,17 @@ cd \
|
||||||
:kms38_kms
|
:kms38_kms
|
||||||
|
|
||||||
cls
|
cls
|
||||||
md "!desktop!\$OEM$\$$\Setup\Scripts\BIN"
|
md "!desktop!\$OEM$\$$\Setup\Scripts"
|
||||||
pushd "!_work!"
|
pushd "!_work!"
|
||||||
copy /y /b "%KMS38_Activation.cmd%" "!_dir!\KMS38_Activation.cmd" %nul%
|
copy /y /b "%KMS38_Activation.cmd%" "!_dir!\KMS38_Activation.cmd" %nul%
|
||||||
copy /y /b "%Activate.cmd%" "!_dir!\Activate.cmd" %nul%
|
copy /y /b "%Online_KMS_Activation.cmd%" "!_dir!\Online_KMS_Activation.cmd" %nul%
|
||||||
copy /y /b "%cleanosppx64.exe%" "!_dir!\BIN\cleanosppx64.exe" %nul%
|
|
||||||
copy /y /b "%cleanosppx86.exe%" "!_dir!\BIN\cleanosppx86.exe" %nul%
|
|
||||||
popd
|
popd
|
||||||
call :export kms38_kms_setup
|
call :export kms38_kms_setup
|
||||||
|
|
||||||
set _error=
|
set _error=
|
||||||
if not exist "!_dir!\KMS38_Activation.cmd" set _error=1
|
if not exist "!_dir!\KMS38_Activation.cmd" set _error=1
|
||||||
if not exist "!_dir!\Activate.cmd" set _error=1
|
if not exist "!_dir!\Online_KMS_Activation.cmd" set _error=1
|
||||||
if not exist "!_dir!\SetupComplete.cmd" set _error=1
|
if not exist "!_dir!\SetupComplete.cmd" set _error=1
|
||||||
if not exist "!_dir!\BIN\cleanosppx64.exe" set _error=1
|
|
||||||
if not exist "!_dir!\BIN\cleanosppx86.exe" set _error=1
|
|
||||||
if defined _error goto errorfound
|
if defined _error goto errorfound
|
||||||
|
|
||||||
set oem=KMS38 [Windows] + Online KMS [Office]
|
set oem=KMS38 [Windows] + Online KMS [Office]
|
||||||
|
@ -406,7 +391,7 @@ fltmc >nul || exit /b
|
||||||
|
|
||||||
start /b /wait cmd /c "%~dp0KMS38_Activation.cmd" /KMS38
|
start /b /wait cmd /c "%~dp0KMS38_Activation.cmd" /KMS38
|
||||||
|
|
||||||
start /b /wait cmd /c "%~dp0Activate.cmd" /KMS-ActAndRenewalTask /KMS-Office
|
start /b /wait cmd /c "%~dp0Online_KMS_Activation.cmd" /KMS-ActAndRenewalTask /KMS-Office
|
||||||
|
|
||||||
cd \
|
cd \
|
||||||
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
||||||
|
|
|
@ -56,7 +56,7 @@ pushd "%~dp0"
|
||||||
>nul findstr /rxc:".*" "%~nx0"
|
>nul findstr /rxc:".*" "%~nx0"
|
||||||
if not %errorlevel%==0 (
|
if not %errorlevel%==0 (
|
||||||
echo:
|
echo:
|
||||||
echo Error: This is not a correct file. It has LF line ending issue.
|
echo Error: Script either has LF line ending issue, or it failed to read itself.
|
||||||
echo:
|
echo:
|
||||||
ping 127.0.0.1 -n 6 > nul
|
ping 127.0.0.1 -n 6 > nul
|
||||||
popd
|
popd
|
||||||
|
@ -117,7 +117,7 @@ if %~z0 GEQ 200000 (set "_exitmsg=Go back") else (set "_exitmsg=Exit")
|
||||||
if %winbuild% LSS 10240 (
|
if %winbuild% LSS 10240 (
|
||||||
%eline%
|
%eline%
|
||||||
echo Unsupported OS version detected.
|
echo Unsupported OS version detected.
|
||||||
echo Project is supported for Windows 10/11.
|
echo This option is supported only for Windows 10/11.
|
||||||
goto ins_done
|
goto ins_done
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -240,7 +240,6 @@ echo [%key%]
|
||||||
echo:
|
echo:
|
||||||
if not "%regSKU%"=="%wmiSKU%" (
|
if not "%regSKU%"=="%wmiSKU%" (
|
||||||
echo Note: Difference Found In SKU Value- WMI:%wmiSKU% Reg:%regSKU%
|
echo Note: Difference Found In SKU Value- WMI:%wmiSKU% Reg:%regSKU%
|
||||||
echo Restart the system to resolve it
|
|
||||||
echo:
|
echo:
|
||||||
)
|
)
|
||||||
call :dk_color %_Green% "Press [1] to Continue or [0] to %_exitmsg%"
|
call :dk_color %_Green% "Press [1] to Continue or [0] to %_exitmsg%"
|
||||||
|
@ -273,6 +272,7 @@ call :dk_color %Green% "[Successful]"
|
||||||
) else (
|
) else (
|
||||||
call :dk_color %Red% "[Unsuccessful] %error_code%"
|
call :dk_color %Red% "[Unsuccessful] %error_code%"
|
||||||
if defined actidnotfound call :dk_color %Red% "Activation ID not found for this key."
|
if defined actidnotfound call :dk_color %Red% "Activation ID not found for this key."
|
||||||
|
echo Check this page for help https://massgrave.dev/troubleshoot
|
||||||
)
|
)
|
||||||
%line%
|
%line%
|
||||||
|
|
||||||
|
@ -306,22 +306,6 @@ if %_wmic% EQU 0 set "chkapp=for /f "tokens=2 delims==" %%a in ('%psc% "(([WMISE
|
||||||
%chkapp% do (if defined applist (call set "applist=!applist! %%a") else (call set "applist=%%a"))
|
%chkapp% do (if defined applist (call set "applist=!applist! %%a") else (call set "applist=%%a"))
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
:: Get Product name (WMI/REG methods are not reliable in all conditions, hence winbrand.dll method is used)
|
|
||||||
|
|
||||||
:dk_product
|
|
||||||
|
|
||||||
set winos=
|
|
||||||
set d1=[DllImport(\"winbrand\",CharSet=CharSet.Unicode)]public static extern string BrandingFormatString(string s);
|
|
||||||
set d2=$AP=Add-Type -Member '%d1%' -Name D1 -PassThru; $AP::BrandingFormatString('%%WINDOWS_LONG%%')
|
|
||||||
for /f "delims=" %%s in ('"%psc% %d2%"') do if not errorlevel 1 (set winos=%%s)
|
|
||||||
echo "%winos%" | find /i "Windows" 1>nul || (
|
|
||||||
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName 2^>nul') do set "winos=%%b"
|
|
||||||
if %winbuild% GEQ 22000 (
|
|
||||||
set winos=!winos:Windows 10=Windows 11!
|
|
||||||
)
|
|
||||||
)
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
:: Check wmic.exe
|
:: Check wmic.exe
|
||||||
|
|
||||||
:dk_ckeckwmic
|
:dk_ckeckwmic
|
||||||
|
@ -332,6 +316,34 @@ wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i "com
|
||||||
)
|
)
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
|
:: Get Product name (WMI/REG methods are not reliable in all conditions, hence winbrand.dll method is used)
|
||||||
|
|
||||||
|
:dk_product
|
||||||
|
|
||||||
|
call :dk_reflection
|
||||||
|
|
||||||
|
set d1=%ref% $meth = $TypeBuilder.DefinePInvokeMethod('BrandingFormatString', 'winbrand.dll', 'Public, Static', 1, [String], @([String]), 1, 3);
|
||||||
|
set d1=%d1% $meth.SetImplementationFlags(128); $TypeBuilder.CreateType()::BrandingFormatString('%%WINDOWS_LONG%%')
|
||||||
|
|
||||||
|
set winos=
|
||||||
|
for /f "delims=" %%s in ('"%psc% %d1%"') do if not errorlevel 1 (set winos=%%s)
|
||||||
|
echo "%winos%" | find /i "Windows" 1>nul || (
|
||||||
|
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName 2^>nul') do set "winos=%%b"
|
||||||
|
if %winbuild% GEQ 22000 (
|
||||||
|
set winos=!winos:Windows 10=Windows 11!
|
||||||
|
)
|
||||||
|
)
|
||||||
|
exit /b
|
||||||
|
|
||||||
|
:: Common lines used in PowerShell reflection code
|
||||||
|
|
||||||
|
:dk_reflection
|
||||||
|
|
||||||
|
set ref=$AssemblyBuilder = [AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1);
|
||||||
|
set ref=%ref% $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule(2, $False);
|
||||||
|
set ref=%ref% $TypeBuilder = $ModuleBuilder.DefineType(0);
|
||||||
|
exit /b
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:dk_color
|
:dk_color
|
||||||
|
@ -356,38 +368,39 @@ exit /b
|
||||||
|
|
||||||
:hwidkey
|
:hwidkey
|
||||||
|
|
||||||
|
set f=
|
||||||
for %%# in (
|
for %%# in (
|
||||||
8b351c9c-f398-4515-9900-09df49427262_XGVPP-NMH47-7TTHJ-W3FW7-8HV2C___4_OEM:NONSLP_Enterprise
|
8b351c9c-f398-4515-9900-09df49427262_XGV%f%PP-NM%f%H47-7TTH%f%J-W3F%f%W7-8HV%f%2C___4_OEM:NONSLP_Enterprise
|
||||||
c83cef07-6b72-4bbc-a28f-a00386872839_3V6Q6-NQXCX-V8YXR-9QCYV-QPFCT__27_Volume:MAK_EnterpriseN
|
c83cef07-6b72-4bbc-a28f-a00386872839_3V6%f%Q6-NQ%f%XCX-V8YX%f%R-9QC%f%YV-QPF%f%CT__27_Volume:MAK_EnterpriseN
|
||||||
4de7cb65-cdf1-4de9-8ae8-e3cce27b9f2c_VK7JG-NPHTM-C97JM-9MPGT-3V66T__48_____Retail_Professional
|
4de7cb65-cdf1-4de9-8ae8-e3cce27b9f2c_VK7%f%JG-NP%f%HTM-C97J%f%M-9MP%f%GT-3V6%f%6T__48_____Retail_Professional
|
||||||
9fbaf5d6-4d83-4422-870d-fdda6e5858aa_2B87N-8KFHP-DKV6R-Y2C8J-PKCKT__49_____Retail_ProfessionalN
|
9fbaf5d6-4d83-4422-870d-fdda6e5858aa_2B8%f%7N-8K%f%FHP-DKV6%f%R-Y2C%f%8J-PKC%f%KT__49_____Retail_ProfessionalN
|
||||||
f742e4ff-909d-4fe9-aacb-3231d24a0c58_4CPRK-NM3K3-X6XXQ-RXX86-WXCHW__98_____Retail_CoreN
|
f742e4ff-909d-4fe9-aacb-3231d24a0c58_4CP%f%RK-NM%f%3K3-X6XX%f%Q-RXX%f%86-WXC%f%HW__98_____Retail_CoreN
|
||||||
1d1bac85-7365-4fea-949a-96978ec91ae0_N2434-X9D7W-8PF6X-8DV9T-8TYMD__99_____Retail_CoreCountrySpecific
|
1d1bac85-7365-4fea-949a-96978ec91ae0_N24%f%34-X9%f%D7W-8PF6%f%X-8DV%f%9T-8TY%f%MD__99_____Retail_CoreCountrySpecific
|
||||||
3ae2cc14-ab2d-41f4-972f-5e20142771dc_BT79Q-G7N6G-PGBYW-4YWX6-6F4BT_100_____Retail_CoreSingleLanguage
|
3ae2cc14-ab2d-41f4-972f-5e20142771dc_BT7%f%9Q-G7%f%N6G-PGBY%f%W-4YW%f%X6-6F4%f%BT_100_____Retail_CoreSingleLanguage
|
||||||
2b1f36bb-c1cd-4306-bf5c-a0367c2d97d8_YTMG3-N6DKC-DKB77-7M9GH-8HVX7_101_____Retail_Core
|
2b1f36bb-c1cd-4306-bf5c-a0367c2d97d8_YTM%f%G3-N6%f%DKC-DKB7%f%7-7M9%f%GH-8HV%f%X7_101_____Retail_Core
|
||||||
2a6137f3-75c0-4f26-8e3e-d83d802865a4_XKCNC-J26Q9-KFHD2-FKTHY-KD72Y_119_OEM:NONSLP_PPIPro
|
2a6137f3-75c0-4f26-8e3e-d83d802865a4_XKC%f%NC-J2%f%6Q9-KFHD%f%2-FKT%f%HY-KD7%f%2Y_119_OEM:NONSLP_PPIPro
|
||||||
e558417a-5123-4f6f-91e7-385c1c7ca9d4_YNMGQ-8RYV3-4PGQ3-C8XTP-7CFBY_121_____Retail_Education
|
e558417a-5123-4f6f-91e7-385c1c7ca9d4_YNM%f%GQ-8R%f%YV3-4PGQ%f%3-C8X%f%TP-7CF%f%BY_121_____Retail_Education
|
||||||
c5198a66-e435-4432-89cf-ec777c9d0352_84NGF-MHBT6-FXBX8-QWJK7-DRR8H_122_____Retail_EducationN
|
c5198a66-e435-4432-89cf-ec777c9d0352_84N%f%GF-MH%f%BT6-FXBX%f%8-QWJ%f%K7-DRR%f%8H_122_____Retail_EducationN
|
||||||
cce9d2de-98ee-4ce2-8113-222620c64a27_KCNVH-YKWX8-GJJB9-H9FDT-6F7W2_125_Volume:MAK_EnterpriseS_VB
|
cce9d2de-98ee-4ce2-8113-222620c64a27_KCN%f%VH-YK%f%WX8-GJJB%f%9-H9F%f%DT-6F7%f%W2_125_Volume:MAK_EnterpriseS_VB
|
||||||
d06934ee-5448-4fd1-964a-cd077618aa06_43TBQ-NH92J-XKTM7-KT3KK-P39PB_125_OEM:NONSLP_EnterpriseS_RS5
|
d06934ee-5448-4fd1-964a-cd077618aa06_43T%f%BQ-NH%f%92J-XKTM%f%7-KT3%f%KK-P39%f%PB_125_OEM:NONSLP_EnterpriseS_RS5
|
||||||
706e0cfd-23f4-43bb-a9af-1a492b9f1302_NK96Y-D9CD8-W44CQ-R8YTK-DYJWX_125_OEM:NONSLP_EnterpriseS_RS1
|
706e0cfd-23f4-43bb-a9af-1a492b9f1302_NK9%f%6Y-D9%f%CD8-W44C%f%Q-R8Y%f%TK-DYJ%f%WX_125_OEM:NONSLP_EnterpriseS_RS1
|
||||||
faa57748-75c8-40a2-b851-71ce92aa8b45_FWN7H-PF93Q-4GGP8-M8RF3-MDWWW_125_OEM:NONSLP_EnterpriseS_TH
|
faa57748-75c8-40a2-b851-71ce92aa8b45_FWN%f%7H-PF%f%93Q-4GGP%f%8-M8R%f%F3-MDW%f%WW_125_OEM:NONSLP_EnterpriseS_TH
|
||||||
2c060131-0e43-4e01-adc1-cf5ad1100da8_RQFNW-9TPM3-JQ73T-QV4VQ-DV9PT_126_Volume:MAK_EnterpriseSN_VB
|
2c060131-0e43-4e01-adc1-cf5ad1100da8_RQF%f%NW-9T%f%PM3-JQ73%f%T-QV4%f%VQ-DV9%f%PT_126_Volume:MAK_EnterpriseSN_VB
|
||||||
e8f74caa-03fb-4839-8bcc-2e442b317e53_M33WV-NHY3C-R7FPM-BQGPT-239PG_126_Volume:MAK_EnterpriseSN_RS5
|
e8f74caa-03fb-4839-8bcc-2e442b317e53_M33%f%WV-NH%f%Y3C-R7FP%f%M-BQG%f%PT-239%f%PG_126_Volume:MAK_EnterpriseSN_RS5
|
||||||
3d1022d8-969f-4222-b54b-327f5a5af4c9_2DBW3-N2PJG-MVHW3-G7TDK-9HKR4_126_Volume:MAK_EnterpriseSN_RS1
|
3d1022d8-969f-4222-b54b-327f5a5af4c9_2DB%f%W3-N2%f%PJG-MVHW%f%3-G7T%f%DK-9HK%f%R4_126_Volume:MAK_EnterpriseSN_RS1
|
||||||
60c243e1-f90b-4a1b-ba89-387294948fb6_NTX6B-BRYC2-K6786-F6MVQ-M7V2X_126_Volume:MAK_EnterpriseSN_TH
|
60c243e1-f90b-4a1b-ba89-387294948fb6_NTX%f%6B-BR%f%YC2-K678%f%6-F6M%f%VQ-M7V%f%2X_126_Volume:MAK_EnterpriseSN_TH
|
||||||
eb6d346f-1c60-4643-b960-40ec31596c45_DXG7C-N36C4-C4HTG-X4T3X-2YV77_161_____Retail_ProfessionalWorkstation
|
eb6d346f-1c60-4643-b960-40ec31596c45_DXG%f%7C-N3%f%6C4-C4HT%f%G-X4T%f%3X-2YV%f%77_161_____Retail_ProfessionalWorkstation
|
||||||
89e87510-ba92-45f6-8329-3afa905e3e83_WYPNQ-8C467-V2W6J-TX4WX-WT2RQ_162_____Retail_ProfessionalWorkstationN
|
89e87510-ba92-45f6-8329-3afa905e3e83_WYP%f%NQ-8C%f%467-V2W6%f%J-TX4%f%WX-WT2%f%RQ_162_____Retail_ProfessionalWorkstationN
|
||||||
62f0c100-9c53-4e02-b886-a3528ddfe7f6_8PTT6-RNW4C-6V7J2-C2D3X-MHBPB_164_____Retail_ProfessionalEducation
|
62f0c100-9c53-4e02-b886-a3528ddfe7f6_8PT%f%T6-RN%f%W4C-6V7J%f%2-C2D%f%3X-MHB%f%PB_164_____Retail_ProfessionalEducation
|
||||||
13a38698-4a49-4b9e-8e83-98fe51110953_GJTYN-HDMQY-FRR76-HVGC7-QPF8P_165_____Retail_ProfessionalEducationN
|
13a38698-4a49-4b9e-8e83-98fe51110953_GJT%f%YN-HD%f%MQY-FRR7%f%6-HVG%f%C7-QPF%f%8P_165_____Retail_ProfessionalEducationN
|
||||||
df96023b-dcd9-4be2-afa0-c6c871159ebe_NJCF7-PW8QT-3324D-688JX-2YV66_175_____Retail_ServerRdsh
|
df96023b-dcd9-4be2-afa0-c6c871159ebe_NJC%f%F7-PW%f%8QT-3324%f%D-688%f%JX-2YV%f%66_175_____Retail_ServerRdsh
|
||||||
d4ef7282-3d2c-4cf0-9976-8854e64a8d1e_V3WVW-N2PV2-CGWC3-34QGF-VMJ2C_178_____Retail_Cloud
|
d4ef7282-3d2c-4cf0-9976-8854e64a8d1e_V3W%f%VW-N2%f%PV2-CGWC%f%3-34Q%f%GF-VMJ%f%2C_178_____Retail_Cloud
|
||||||
af5c9381-9240-417d-8d35-eb40cd03e484_NH9J3-68WK7-6FB93-4K3DF-DJ4F6_179_____Retail_CloudN
|
af5c9381-9240-417d-8d35-eb40cd03e484_NH9%f%J3-68%f%WK7-6FB9%f%3-4K3%f%DF-DJ4%f%F6_179_____Retail_CloudN
|
||||||
8ab9bdd1-1f67-4997-82d9-8878520837d9_XQQYW-NFFMW-XJPBH-K8732-CKFFD_188_____OEM:DM_IoTEnterprise
|
8ab9bdd1-1f67-4997-82d9-8878520837d9_XQQ%f%YW-NF%f%FMW-XJPB%f%H-K87%f%32-CKF%f%FD_188_____OEM:DM_IoTEnterprise
|
||||||
ed655016-a9e8-4434-95d9-4345352c2552_QPM6N-7J2WJ-P88HH-P3YRH-YY74H_191_OEM:NONSLP_IoTEnterpriseS_VB
|
ed655016-a9e8-4434-95d9-4345352c2552_QPM%f%6N-7J%f%2WJ-P88H%f%H-P3Y%f%RH-YY7%f%4H_191_OEM:NONSLP_IoTEnterpriseS_VB
|
||||||
d4bdc678-0a4b-4a32-a5b3-aaa24c3b0f24_K9VKN-3BGWV-Y624W-MCRMQ-BHDCD_202_____Retail_CloudEditionN
|
d4bdc678-0a4b-4a32-a5b3-aaa24c3b0f24_K9V%f%KN-3B%f%GWV-Y624%f%W-MCR%f%MQ-BHD%f%CD_202_____Retail_CloudEditionN
|
||||||
92fb8726-92a8-4ffc-94ce-f82e07444653_KY7PN-VR6RX-83W6Y-6DDYQ-T6R4W_203_____Retail_CloudEdition
|
92fb8726-92a8-4ffc-94ce-f82e07444653_KY7%f%PN-VR%f%6RX-83W6%f%Y-6DD%f%YQ-T6R%f%4W_203_____Retail_CloudEdition
|
||||||
d4f9b41f-205c-405e-8e08-3d16e88e02be_J7NJW-V6KBM-CC8RW-Y29Y4-HQ2MJ_205_OEM:NONSLP_IoTEnterpriseSK
|
d4f9b41f-205c-405e-8e08-3d16e88e02be_J7N%f%JW-V6%f%KBM-CC8R%f%W-Y29%f%Y4-HQ2%f%MJ_205_OEM:NONSLP_IoTEnterpriseSK
|
||||||
) do (
|
) do (
|
||||||
for /f "tokens=1-6 delims=_" %%A in ("%%#") do (
|
for /f "tokens=1-6 delims=_" %%A in ("%%#") do (
|
||||||
|
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
====================================================================================================
|
|
||||||
File Details:
|
|
||||||
====================================================================================================
|
|
||||||
|
|
||||||
cleanosppx64.exe SHA-1: d30a0e4e5911d3ca705617d17225372731c770e2
|
|
||||||
cleanosppx86.exe SHA-1: 39ed8659e7ca16aaccb86def94ce6cec4c847dd6
|
|
||||||
|
|
||||||
- These files are used in cleaning office license in C2R Retail office to VL conversion process.
|
|
||||||
- These files are taken from the old version of Microsoft official tool 'O15CTRRemove.diagcab'.
|
|
||||||
|
|
||||||
File: O15CTRRemove.diagcab (Digitally Signed)
|
|
||||||
Link: app.box.com/s/n8qpb5ljmv6djp77w5p6fk043dm6s3r1 (Unofficial Link)
|
|
||||||
SHA-1: 56c6ca76993a96cf9a255463b90db96cb9d24464
|
|
||||||
|
|
||||||
====================================================================================================
|
|
Binary file not shown.
Binary file not shown.
|
@ -53,7 +53,7 @@ pushd "%~dp0"
|
||||||
>nul findstr /rxc:".*" "%~nx0"
|
>nul findstr /rxc:".*" "%~nx0"
|
||||||
if not %errorlevel%==0 (
|
if not %errorlevel%==0 (
|
||||||
echo:
|
echo:
|
||||||
echo Error: This is not a correct file. It has LF line ending issue.
|
echo Error: Script either has LF line ending issue, or it failed to read itself.
|
||||||
echo:
|
echo:
|
||||||
ping 127.0.0.1 -n 6 > nul
|
ping 127.0.0.1 -n 6 > nul
|
||||||
popd
|
popd
|
||||||
|
@ -65,7 +65,7 @@ popd
|
||||||
|
|
||||||
cls
|
cls
|
||||||
color 07
|
color 07
|
||||||
title Activation Troubleshoot
|
title Troubleshoot
|
||||||
|
|
||||||
set _elev=
|
set _elev=
|
||||||
if /i "%~1"=="-el" set _elev=1
|
if /i "%~1"=="-el" set _elev=1
|
||||||
|
@ -167,9 +167,11 @@ setlocal EnableDelayedExpansion
|
||||||
|
|
||||||
cls
|
cls
|
||||||
color 07
|
color 07
|
||||||
title Activation Troubleshoot
|
title Troubleshoot
|
||||||
mode con cols=77 lines=30
|
mode con cols=77 lines=30
|
||||||
|
|
||||||
|
echo:
|
||||||
|
echo:
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
echo: _______________________________________________________________
|
echo: _______________________________________________________________
|
||||||
|
@ -179,35 +181,23 @@ echo: ___________________________________________________
|
||||||
echo:
|
echo:
|
||||||
echo: [2] Dism RestoreHealth
|
echo: [2] Dism RestoreHealth
|
||||||
echo: [3] SFC Scannow
|
echo: [3] SFC Scannow
|
||||||
echo:
|
|
||||||
echo: [4] Rebuild Licensing Tokens
|
|
||||||
echo: [5] Rebuild ClipSVC Licences
|
|
||||||
echo: [6] Clear Office vNext Licences
|
|
||||||
echo: ___________________________________________________
|
|
||||||
echo:
|
echo:
|
||||||
echo: [7] Rebuild WMI Repository
|
echo: [4] Fix WMI
|
||||||
echo: [8] Fix: Issues Caused By Gaming Spoofers
|
echo: [5] Fix Licensing
|
||||||
echo: [9] Fix: Issues Caused By KB971033 In Windows 7
|
echo: [6] Fix WPA Registry
|
||||||
echo: [G] Fix: Office Is Not Genuine Banner
|
|
||||||
echo: [E] Export Event Viewer Logs
|
|
||||||
echo: ___________________________________________________
|
echo: ___________________________________________________
|
||||||
echo:
|
echo:
|
||||||
echo: [0] %_exitmsg%
|
echo: [0] %_exitmsg%
|
||||||
echo: _______________________________________________________________
|
echo: _______________________________________________________________
|
||||||
echo:
|
echo:
|
||||||
call :_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard :"
|
call :_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard :"
|
||||||
choice /C:123456789GE0 /N
|
choice /C:1234560 /N
|
||||||
set _erl=%errorlevel%
|
set _erl=%errorlevel%
|
||||||
|
|
||||||
if %_erl%==12 exit /b
|
if %_erl%==7 exit /b
|
||||||
if %_erl%==11 goto:exportevtlogs
|
if %_erl%==6 start https://massgrave.dev/fix-wpa-registry.html &goto at_menu
|
||||||
if %_erl%==10 start https://massgrave.dev/office-license-is-not-genuine &goto at_menu
|
if %_erl%==5 goto:retokens
|
||||||
if %_erl%==9 goto:fixwindows7
|
if %_erl%==4 goto:fixwmi
|
||||||
if %_erl%==8 goto:fixspoofer
|
|
||||||
if %_erl%==7 goto:rewmi
|
|
||||||
if %_erl%==6 goto:clearvnext
|
|
||||||
if %_erl%==5 goto:reclipsvc
|
|
||||||
if %_erl%==4 goto:retokens
|
|
||||||
if %_erl%==3 goto:sfcscan
|
if %_erl%==3 goto:sfcscan
|
||||||
if %_erl%==2 goto:dism_rest
|
if %_erl%==2 goto:dism_rest
|
||||||
if %_erl%==1 start https://massgrave.dev/troubleshoot.html &goto at_menu
|
if %_erl%==1 start https://massgrave.dev/troubleshoot.html &goto at_menu
|
||||||
|
@ -219,7 +209,7 @@ goto :at_menu
|
||||||
|
|
||||||
cls
|
cls
|
||||||
mode 98, 30
|
mode 98, 30
|
||||||
title Dism /Online /Cleanup-Image /RestoreHealth
|
title Dism /English /Online /Cleanup-Image /RestoreHealth
|
||||||
|
|
||||||
if %winbuild% LSS 9200 (
|
if %winbuild% LSS 9200 (
|
||||||
%eline%
|
%eline%
|
||||||
|
@ -229,8 +219,9 @@ goto :at_back
|
||||||
)
|
)
|
||||||
|
|
||||||
set _int=
|
set _int=
|
||||||
for %%a in (dns.msftncsi.com) do (
|
for %%a in (l.root-servers.net resolver1.opendns.com download.windowsupdate.com google.com) do if not defined _int (
|
||||||
if not defined _int (for /f "delims=[] tokens=2" %%# in ('ping -n 1 %%a') do if not [%%#]==[] set _int=1))
|
for /f "delims=[] tokens=2" %%# in ('ping -n 1 %%a') do (if not [%%#]==[] set _int=1)
|
||||||
|
)
|
||||||
|
|
||||||
echo:
|
echo:
|
||||||
if defined _int (
|
if defined _int (
|
||||||
|
@ -266,9 +257,9 @@ set _time=
|
||||||
for /f %%a in ('%psc% "Get-Date -format HH_mm_ss"') do set _time=%%a
|
for /f %%a in ('%psc% "Get-Date -format HH_mm_ss"') do set _time=%%a
|
||||||
echo:
|
echo:
|
||||||
echo Applying the command,
|
echo Applying the command,
|
||||||
echo dism /online /cleanup-image /restorehealth /Logpath:"%SystemRoot%\Temp\RHealth_DISM_%_time%.txt" /loglevel:4
|
echo dism /english /online /cleanup-image /restorehealth
|
||||||
echo:
|
echo:
|
||||||
dism /online /cleanup-image /restorehealth /Logpath:"%SystemRoot%\Temp\RHealth_DISM_%_time%.txt" /loglevel:4
|
dism /english /online /cleanup-image /restorehealth /Logpath:"%SystemRoot%\Temp\RHealth_DISM_%_time%.txt" /loglevel:4
|
||||||
|
|
||||||
if not exist "!desktop!\AT_Logs\" md "!desktop!\AT_Logs\" %nul%
|
if not exist "!desktop!\AT_Logs\" md "!desktop!\AT_Logs\" %nul%
|
||||||
copy /y /b "%SystemRoot%\Temp\RHealth_DISM_%_time%.txt" "!desktop!\AT_Logs\RHealth_DISM_%_time%.txt" %nul%
|
copy /y /b "%SystemRoot%\Temp\RHealth_DISM_%_time%.txt" "!desktop!\AT_Logs\RHealth_DISM_%_time%.txt" %nul%
|
||||||
|
@ -319,35 +310,153 @@ sfc /scannow
|
||||||
if not exist "!desktop!\AT_Logs\" md "!desktop!\AT_Logs\" %nul%
|
if not exist "!desktop!\AT_Logs\" md "!desktop!\AT_Logs\" %nul%
|
||||||
|
|
||||||
copy /y /b "%cbs_log%" "!desktop!\AT_Logs\SFC_CBS_%_time%.txt" %nul%
|
copy /y /b "%cbs_log%" "!desktop!\AT_Logs\SFC_CBS_%_time%.txt" %nul%
|
||||||
findstr /i /c:"[SR]" %cbs_log% | findstr /i /v /c:verify >"!desktop!\AT_Logs\SFC_Main_%_time%.txt"
|
|
||||||
|
|
||||||
echo:
|
echo:
|
||||||
call :_color %Gray% "CBS and main extracted logs are copied to the AT_Logs folder on the dekstop."
|
call :_color %Gray% "CBS log is copied to the AT_Logs folder on the dekstop."
|
||||||
goto :at_back
|
goto :at_back
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:clearvnext
|
:retokens
|
||||||
|
|
||||||
cls
|
cls
|
||||||
mode 98, 30
|
mode con cols=115 lines=32
|
||||||
title Clear Office vNext License
|
%nul% %psc% "&{$W=$Host.UI.RawUI.WindowSize;$B=$Host.UI.RawUI.BufferSize;$W.Height=31;$B.Height=200;$Host.UI.RawUI.WindowSize=$W;$Host.UI.RawUI.BufferSize=$B;}"
|
||||||
|
title Fix Licensing ^(ClipSVC ^+ Office vNext ^+ SPP ^+ OSPP^)
|
||||||
|
|
||||||
echo:
|
echo:
|
||||||
echo %line%
|
echo %line%
|
||||||
echo:
|
|
||||||
echo This options will clear Office vNext ^(subscription^) license
|
|
||||||
echo:
|
|
||||||
echo You need to use this option when,
|
|
||||||
echo - KMS option is not activating office due to existing subscription license
|
|
||||||
echo - KMS option activated Office but Office activation page is not showing activated
|
|
||||||
echo:
|
echo:
|
||||||
|
echo Notes:
|
||||||
|
echo:
|
||||||
|
echo - It helps in troubleshooting activation issues.
|
||||||
|
echo:
|
||||||
|
echo - This option will,
|
||||||
|
echo - Deactivate Windows and Office, you may need to reactivate
|
||||||
|
echo - Clear ClipSVC, Office vNext, SPP and OSPP licenses
|
||||||
|
echo - Fix SPP permissions of tokens folder and registries
|
||||||
|
echo - Trigger the repair option for Office.
|
||||||
|
echo:
|
||||||
|
call :_color2 %_White% " - " %Red% "Apply it only when it is necessary."
|
||||||
|
echo:
|
||||||
echo %line%
|
echo %line%
|
||||||
echo:
|
echo:
|
||||||
choice /C:09 /N /M "> [9] Continue [0] Go back : "
|
choice /C:09 /N /M "> [9] Continue [0] Go back : "
|
||||||
if %errorlevel%==1 goto at_menu
|
if %errorlevel%==1 goto at_menu
|
||||||
|
|
||||||
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
:: Rebuild ClipSVC Licences
|
||||||
|
|
||||||
cls
|
cls
|
||||||
|
:cleanlicensing
|
||||||
|
|
||||||
|
echo:
|
||||||
|
echo %line%
|
||||||
|
echo:
|
||||||
|
call :_color %Magenta% "Rebuilding ClipSVC Licences"
|
||||||
|
echo:
|
||||||
|
|
||||||
|
if %winbuild% LSS 10240 (
|
||||||
|
echo ClipSVC Licence rebuilding is supported only on Win 10/11 and Server equivalent.
|
||||||
|
echo Skipping...
|
||||||
|
goto :cleanvnext
|
||||||
|
)
|
||||||
|
|
||||||
|
%psc% "(([WMISEARCHER]'SELECT Name FROM SoftwareLicensingProduct WHERE LicenseStatus=1 AND GracePeriodRemaining=0 AND PartialProductKey IS NOT NULL').Get()).Name" 2>nul | findstr /i "Windows" 1>nul && (
|
||||||
|
echo Windows is permanently activated.
|
||||||
|
echo Skipping rebuilding ClipSVC licences...
|
||||||
|
goto :cleanvnext
|
||||||
|
)
|
||||||
|
|
||||||
|
echo Stopping ClipSVC service...
|
||||||
|
call :_stopservice ClipSVC
|
||||||
|
timeout /t 2 %nul%
|
||||||
|
|
||||||
|
echo:
|
||||||
|
echo Applying the command to Clean ClipSVC Licences...
|
||||||
|
echo rundll32 clipc.dll,ClipCleanUpState
|
||||||
|
|
||||||
|
rundll32 clipc.dll,ClipCleanUpState
|
||||||
|
|
||||||
|
if %winbuild% LEQ 10240 (
|
||||||
|
echo [Successful]
|
||||||
|
) else (
|
||||||
|
if exist "%ProgramData%\Microsoft\Windows\ClipSVC\tokens.dat" (
|
||||||
|
call :_color %Red% "[Failed]"
|
||||||
|
) else (
|
||||||
|
echo [Successful]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
:: Below registry key (Volatile & Protected) gets created after the ClipSVC License cleanup command, and gets automatically deleted after
|
||||||
|
:: system restart. It needs to be deleted to activate the system without restart.
|
||||||
|
|
||||||
|
set "RegKey=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ClipSVC\Volatile\PersistedSystemState"
|
||||||
|
set "_ident=HKU\S-1-5-19\SOFTWARE\Microsoft\IdentityCRL"
|
||||||
|
|
||||||
|
reg query "%RegKey%" %nul% && %nul% call :regownstart
|
||||||
|
reg delete "%RegKey%" /f %nul%
|
||||||
|
|
||||||
|
echo:
|
||||||
|
echo Deleting a Volatile ^& Protected Registry Key...
|
||||||
|
echo [%RegKey%]
|
||||||
|
reg query "%RegKey%" %nul% && (
|
||||||
|
call :_color %Red% "[Failed]"
|
||||||
|
echo Restart the system, that will delete this registry key automatically.
|
||||||
|
) || (
|
||||||
|
echo [Successful]
|
||||||
|
)
|
||||||
|
|
||||||
|
:: Clear HWID token related registry to fix activation incase if there is any corruption
|
||||||
|
|
||||||
|
echo:
|
||||||
|
echo Deleting a IdentityCRL Registry Key...
|
||||||
|
echo [%_ident%]
|
||||||
|
reg delete "%_ident%" /f %nul%
|
||||||
|
reg query "%_ident%" %nul% && (
|
||||||
|
call :_color %Red% "[Failed]"
|
||||||
|
) || (
|
||||||
|
echo [Successful]
|
||||||
|
)
|
||||||
|
|
||||||
|
call :_stopservice ClipSVC
|
||||||
|
|
||||||
|
:: Rebuild ClipSVC folder to fix permission issues
|
||||||
|
|
||||||
|
echo:
|
||||||
|
if %winbuild% GTR 10240 (
|
||||||
|
echo Deleting Folder %ProgramData%\Microsoft\Windows\ClipSVC\
|
||||||
|
rmdir /s /q "C:\ProgramData\Microsoft\Windows\ClipSvc" %nul%
|
||||||
|
|
||||||
|
if exist "%ProgramData%\Microsoft\Windows\ClipSVC\" (
|
||||||
|
call :_color %Red% "[Failed]"
|
||||||
|
) else (
|
||||||
|
echo [Successful]
|
||||||
|
)
|
||||||
|
|
||||||
|
echo:
|
||||||
|
echo Rebuilding Folder %ProgramData%\Microsoft\Windows\ClipSVC\
|
||||||
|
net start ClipSVC /y %nul%
|
||||||
|
timeout /t 3 %nul%
|
||||||
|
if not exist "%ProgramData%\Microsoft\Windows\ClipSVC\" timeout /t 5 %nul%
|
||||||
|
if not exist "%ProgramData%\Microsoft\Windows\ClipSVC\" (
|
||||||
|
call :_color %Red% "[Failed]"
|
||||||
|
) else (
|
||||||
|
echo [Successful]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
echo:
|
||||||
|
echo Restarting [wlidsvc LicenseManager] services...
|
||||||
|
for %%# in (wlidsvc LicenseManager) do (net stop %%# /y %nul% & net start %%# /y %nul%)
|
||||||
|
|
||||||
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
:: Clear Office vNext License
|
||||||
|
|
||||||
|
:cleanvnext
|
||||||
|
|
||||||
echo:
|
echo:
|
||||||
echo %line%
|
echo %line%
|
||||||
echo:
|
echo:
|
||||||
|
@ -360,20 +469,28 @@ setlocal EnableDelayedExpansion
|
||||||
|
|
||||||
attrib -R "!ProgramData!\Microsoft\Office\Licenses" %nul%
|
attrib -R "!ProgramData!\Microsoft\Office\Licenses" %nul%
|
||||||
attrib -R "!_Local!\Microsoft\Office\Licenses" %nul%
|
attrib -R "!_Local!\Microsoft\Office\Licenses" %nul%
|
||||||
rd /s /q "!ProgramData!\Microsoft\Office\Licenses\" %nul%
|
|
||||||
rd /s /q "!_Local!\Microsoft\Office\Licenses\" %nul%
|
|
||||||
|
|
||||||
|
if exist "!ProgramData!\Microsoft\Office\Licenses\" (
|
||||||
|
rd /s /q "!ProgramData!\Microsoft\Office\Licenses\" %nul%
|
||||||
if exist "!ProgramData!\Microsoft\Office\Licenses\" (
|
if exist "!ProgramData!\Microsoft\Office\Licenses\" (
|
||||||
echo Failed To Delete - !ProgramData!\Microsoft\Office\Licenses\
|
echo Failed To Delete - !ProgramData!\Microsoft\Office\Licenses\
|
||||||
) else (
|
) else (
|
||||||
echo Deleted Folder - !ProgramData!\Microsoft\Office\Licenses\
|
echo Deleted Folder - !ProgramData!\Microsoft\Office\Licenses\
|
||||||
)
|
)
|
||||||
|
) else (
|
||||||
|
echo Not Found - !ProgramData!\Microsoft\Office\Licenses\
|
||||||
|
)
|
||||||
|
|
||||||
|
if exist "!_Local!\Microsoft\Office\Licenses\" (
|
||||||
|
rd /s /q "!_Local!\Microsoft\Office\Licenses\" %nul%
|
||||||
if exist "!_Local!\Microsoft\Office\Licenses\" (
|
if exist "!_Local!\Microsoft\Office\Licenses\" (
|
||||||
echo Failed To Delete - !_Local!\Microsoft\Office\Licenses\
|
echo Failed To Delete - !_Local!\Microsoft\Office\Licenses\
|
||||||
) else (
|
) else (
|
||||||
echo Deleted Folder - !_Local!\Microsoft\Office\Licenses\
|
echo Deleted Folder - !_Local!\Microsoft\Office\Licenses\
|
||||||
)
|
)
|
||||||
|
) else (
|
||||||
|
echo Not Found - !_Local!\Microsoft\Office\Licenses\
|
||||||
|
)
|
||||||
|
|
||||||
echo:
|
echo:
|
||||||
for %%# in (
|
for %%# in (
|
||||||
|
@ -387,44 +504,14 @@ echo Deleted Registry - %%#
|
||||||
echo Failed to Delete - %%#
|
echo Failed to Delete - %%#
|
||||||
)
|
)
|
||||||
) || (
|
) || (
|
||||||
echo Deleted Registry - %%#
|
echo Not Found Registry - %%#
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
goto :at_back
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:retokens
|
:: Rebuild SPP Tokens
|
||||||
|
|
||||||
cls
|
|
||||||
mode con cols=115 lines=32
|
|
||||||
%nul% %psc% "&{$W=$Host.UI.RawUI.WindowSize;$B=$Host.UI.RawUI.BufferSize;$W.Height=31;$B.Height=200;$Host.UI.RawUI.WindowSize=$W;$Host.UI.RawUI.BufferSize=$B;}"
|
|
||||||
title Rebuild Licensing Tokens ^(SPP ^+ OSPP)
|
|
||||||
|
|
||||||
echo:
|
|
||||||
echo %line%
|
|
||||||
echo:
|
|
||||||
echo Notes:
|
|
||||||
echo:
|
|
||||||
echo - It helps in troubleshooting activation issues.
|
|
||||||
echo:
|
|
||||||
call :_color2 %_White% " - " %Magenta% "This option will,"
|
|
||||||
call :_color2 %_White% " " %Magenta% "- Deactivate Windows and Office, you will need to reactivate"
|
|
||||||
call :_color2 %_White% " " %Magenta% "- Uninstall Office licenses and keys"
|
|
||||||
call :_color2 %_White% " " %Magenta% "- Clear SPP-OSPP data.dat, tokens.dat, cache.dat"
|
|
||||||
call :_color2 %_White% " " %Magenta% "- Trigger the repair option for Office"
|
|
||||||
echo:
|
|
||||||
call :_color2 %_White% " - " %Red% "Apply it only when it is necessary."
|
|
||||||
echo:
|
|
||||||
echo %line%
|
|
||||||
echo:
|
|
||||||
choice /C:09 /N /M "> [9] Continue [0] Go back : "
|
|
||||||
if %errorlevel%==1 goto at_menu
|
|
||||||
|
|
||||||
|
|
||||||
cls
|
|
||||||
:cleanspptoken
|
|
||||||
echo:
|
echo:
|
||||||
echo %line%
|
echo %line%
|
||||||
echo:
|
echo:
|
||||||
|
@ -439,6 +526,64 @@ call :_color %Red% "tokens.dat file not found."
|
||||||
echo tokens.dat file: [%token%]
|
echo tokens.dat file: [%token%]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if %winbuild% GEQ 14393 (
|
||||||
|
set wpaerror=
|
||||||
|
set /a count=0
|
||||||
|
for /f %%a in ('reg query "HKLM\SYSTEM\WPA" 2^>nul') do set /a count+=1
|
||||||
|
for /L %%# in (1,1,!count!) do (
|
||||||
|
reg query "HKLM\SYSTEM\WPA\8DEC0AF1-0341-4b93-85CD-72606C2DF94C-7P-%%#" /ve /t REG_BINARY %nul% || set wpaerror=1
|
||||||
|
)
|
||||||
|
|
||||||
|
if defined wpaerror (
|
||||||
|
echo:
|
||||||
|
echo Checking WPA Registry Keys...
|
||||||
|
call :_color %Red% "[Error Found] [Registry Count - !count!]"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
set tokenstore=
|
||||||
|
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v TokenStore 2^>nul') do call set "tokenstore=%%b"
|
||||||
|
|
||||||
|
:: Check sppsvc permissions and apply fixes
|
||||||
|
|
||||||
|
if %winbuild% GEQ 10240 (
|
||||||
|
|
||||||
|
echo:
|
||||||
|
echo Checking SPP permission related issues...
|
||||||
|
call :checkperms
|
||||||
|
|
||||||
|
if defined permerror (
|
||||||
|
|
||||||
|
mkdir "%tokenstore%" %nul%
|
||||||
|
set "d=$sddl = 'O:BAG:BAD:PAI(A;OICI;FA;;;SY)(A;OICI;FA;;;BA)(A;OICIIO;GR;;;BU)(A;;FR;;;BU)(A;OICI;FA;;;S-1-5-80-123231216-2592883651-3715271367-3753151631-4175906628)';"
|
||||||
|
set "d=!d! $AclObject = New-Object System.Security.AccessControl.DirectorySecurity;"
|
||||||
|
set "d=!d! $AclObject.SetSecurityDescriptorSddlForm($sddl);"
|
||||||
|
set "d=!d! Set-Acl -Path %tokenstore% -AclObject $AclObject;"
|
||||||
|
%psc% "!d!" %nul%
|
||||||
|
|
||||||
|
for %%# in (
|
||||||
|
"HKLM:\SYSTEM\WPA_QueryValues, EnumerateSubKeys, WriteKey"
|
||||||
|
"HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform_SetValue"
|
||||||
|
) do for /f "tokens=1,2 delims=_" %%A in (%%#) do (
|
||||||
|
set "d=$acl = Get-Acl '%%A';"
|
||||||
|
set "d=!d! $rule = New-Object System.Security.AccessControl.RegistryAccessRule ('NT Service\sppsvc', '%%B', 'ContainerInherit, ObjectInherit','None','Allow');"
|
||||||
|
set "d=!d! $acl.ResetAccessRule($rule);"
|
||||||
|
set "d=!d! $acl.SetAccessRule($rule);"
|
||||||
|
set "d=!d! Set-Acl -Path '%%A' -AclObject $acl"
|
||||||
|
%psc% "!d!" %nul%
|
||||||
|
)
|
||||||
|
|
||||||
|
call :checkperms
|
||||||
|
if defined permerror (
|
||||||
|
call :_color %Red% "[Failed To Fix]"
|
||||||
|
) else (
|
||||||
|
echo [Successfully Fixed]
|
||||||
|
)
|
||||||
|
) else (
|
||||||
|
echo [Error Not Found]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
echo:
|
echo:
|
||||||
echo Stopping sppsvc service...
|
echo Stopping sppsvc service...
|
||||||
call :_stopservice sppsvc
|
call :_stopservice sppsvc
|
||||||
|
@ -469,7 +614,7 @@ echo:
|
||||||
if not defined token (
|
if not defined token (
|
||||||
call :_color %Red% "Failed to rebuilt tokens.dat file."
|
call :_color %Red% "Failed to rebuilt tokens.dat file."
|
||||||
) else (
|
) else (
|
||||||
call :_color %Green% "tokens.dat file was rebuilt successfully."
|
echo tokens.dat file was rebuilt successfully.
|
||||||
)
|
)
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
@ -479,17 +624,15 @@ call :_color %Green% "tokens.dat file was rebuilt successfully."
|
||||||
echo:
|
echo:
|
||||||
echo %line%
|
echo %line%
|
||||||
echo:
|
echo:
|
||||||
|
|
||||||
sc qc osppsvc %nul% || (
|
|
||||||
echo:
|
|
||||||
call :_color %Magenta% "OSPP based Office is not installed"
|
|
||||||
call :_color %Magenta% "Skipping rebuilding OSPP tokens"
|
|
||||||
goto :repairoffice
|
|
||||||
)
|
|
||||||
|
|
||||||
call :_color %Magenta% "Rebuilding OSPP Licensing Tokens"
|
call :_color %Magenta% "Rebuilding OSPP Licensing Tokens"
|
||||||
echo:
|
echo:
|
||||||
|
|
||||||
|
sc qc osppsvc %nul% || (
|
||||||
|
echo OSPP based Office is not installed
|
||||||
|
echo Skipping rebuilding OSPP tokens...
|
||||||
|
goto :repairoffice
|
||||||
|
)
|
||||||
|
|
||||||
call :scandatospp check
|
call :scandatospp check
|
||||||
|
|
||||||
if not defined token (
|
if not defined token (
|
||||||
|
@ -528,7 +671,7 @@ echo:
|
||||||
if not defined token (
|
if not defined token (
|
||||||
call :_color %Red% "Failed to rebuilt tokens.dat file."
|
call :_color %Red% "Failed to rebuilt tokens.dat file."
|
||||||
) else (
|
) else (
|
||||||
call :_color %Green% "tokens.dat file was rebuilt successfully."
|
echo tokens.dat file was rebuilt successfully.
|
||||||
)
|
)
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
@ -678,215 +821,11 @@ goto :at_back
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:reclipsvc
|
:fixwmi
|
||||||
|
|
||||||
cls
|
cls
|
||||||
mode 98, 30
|
mode 98, 34
|
||||||
title Rebuild ClipSVC Licences
|
title Fix WMI
|
||||||
|
|
||||||
if %winbuild% LSS 10240 (
|
|
||||||
%eline%
|
|
||||||
echo Unsupported OS version Detected.
|
|
||||||
echo This command is supported only for Windows 10/11 and their Server equivalent..
|
|
||||||
goto :at_back
|
|
||||||
)
|
|
||||||
|
|
||||||
echo:
|
|
||||||
echo %line%
|
|
||||||
echo:
|
|
||||||
echo Notes:
|
|
||||||
echo:
|
|
||||||
echo - Rebuilding ClipSVC Licences helps in troubleshooting HWID-KMS38 activation issues.
|
|
||||||
echo:
|
|
||||||
echo - Do not run this option unless you are having issues in HWID-KMS38 activation.
|
|
||||||
echo:
|
|
||||||
echo - System restart is recommended after applying it.
|
|
||||||
echo:
|
|
||||||
echo %line%
|
|
||||||
echo:
|
|
||||||
choice /C:09 /N /M "> [9] Continue [0] Go back : "
|
|
||||||
if %errorlevel%==1 goto at_menu
|
|
||||||
|
|
||||||
cls
|
|
||||||
echo:
|
|
||||||
|
|
||||||
echo Stopping ClipSVC service...
|
|
||||||
call :_stopservice ClipSVC
|
|
||||||
timeout /t 2 %nul%
|
|
||||||
|
|
||||||
echo:
|
|
||||||
echo Applying the command to Clean ClipSVC Licences...
|
|
||||||
echo rundll32 clipc.dll,ClipCleanUpState
|
|
||||||
|
|
||||||
rundll32 clipc.dll,ClipCleanUpState
|
|
||||||
|
|
||||||
if %winbuild% LEQ 10240 (
|
|
||||||
call :_color %Green% "[Successful]"
|
|
||||||
) else (
|
|
||||||
if exist "%ProgramData%\Microsoft\Windows\ClipSVC\tokens.dat" (
|
|
||||||
call :_color %Red% "[Failed]"
|
|
||||||
) else (
|
|
||||||
call :_color %Green% "[Successful]"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
:: Below registry key (Volatile & Protected) gets created after the ClipSVC License cleanup command, and gets automatically deleted after
|
|
||||||
:: system restart. It needs to be deleted to activate the system without restart.
|
|
||||||
|
|
||||||
set "RegKey=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ClipSVC\Volatile\PersistedSystemState"
|
|
||||||
set "_ident=HKU\S-1-5-19\SOFTWARE\Microsoft\IdentityCRL"
|
|
||||||
|
|
||||||
reg query "%RegKey%" %nul% && %nul% call :regownstart
|
|
||||||
reg delete "%RegKey%" /f %nul%
|
|
||||||
|
|
||||||
echo:
|
|
||||||
echo Deleting a Volatile ^& Protected Registry Key...
|
|
||||||
echo [%RegKey%]
|
|
||||||
reg query "%RegKey%" %nul% && (
|
|
||||||
call :_color %Red% "[Failed]"
|
|
||||||
echo Restart the system, that will delete this registry key automatically.
|
|
||||||
) || (
|
|
||||||
call :_color %Green% "[Successful]"
|
|
||||||
)
|
|
||||||
|
|
||||||
:: Clear HWID token related registry to fix activation incase if there is any corruption
|
|
||||||
|
|
||||||
echo:
|
|
||||||
echo Deleting a IdentityCRL Registry Key...
|
|
||||||
echo [%_ident%]
|
|
||||||
reg delete "%_ident%" /f %nul%
|
|
||||||
reg query "%_ident%" %nul% && (
|
|
||||||
call :_color %Red% "[Failed]"
|
|
||||||
) || (
|
|
||||||
call :_color %Green% "[Successful]"
|
|
||||||
)
|
|
||||||
|
|
||||||
echo:
|
|
||||||
echo Restarting [ClipSVC wlidsvc LicenseManager sppsvc] services...
|
|
||||||
for %%# in (ClipSVC wlidsvc LicenseManager sppsvc) do (net stop %%# /y %nul% & net start %%# /y %nul%)
|
|
||||||
goto :at_back
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:fixspoofer
|
|
||||||
|
|
||||||
cls
|
|
||||||
mode con cols=115 lines=32
|
|
||||||
%nul% %psc% "&{$W=$Host.UI.RawUI.WindowSize;$B=$Host.UI.RawUI.BufferSize;$W.Height=31;$B.Height=200;$Host.UI.RawUI.WindowSize=$W;$Host.UI.RawUI.BufferSize=$B;}"
|
|
||||||
title Fix: Issues Caused By Gaming Spoofers
|
|
||||||
|
|
||||||
%psc% $ExecutionContext.SessionState.LanguageMode 2>nul | find /i "Full" 1>nul || (
|
|
||||||
%eline%
|
|
||||||
echo Powershell is not responding properly. Aborting."
|
|
||||||
goto :at_back
|
|
||||||
)
|
|
||||||
|
|
||||||
echo:
|
|
||||||
echo %line%
|
|
||||||
echo:
|
|
||||||
echo Notes:
|
|
||||||
echo:
|
|
||||||
echo - Gaming unban/spoofers/cleaners often cause Windows activation issues.
|
|
||||||
echo:
|
|
||||||
call :_color2 %_White% " - " %Red% "Apply this fix ONLY if you have used these things."
|
|
||||||
echo:
|
|
||||||
echo - This option will fix files and registry permissions and rebuild licensing tokens.
|
|
||||||
echo:
|
|
||||||
echo - System restart is recommended after applying it.
|
|
||||||
echo:
|
|
||||||
echo %line%
|
|
||||||
echo:
|
|
||||||
choice /C:09 /N /M "> [9] Continue [0] Go back : "
|
|
||||||
if %errorlevel%==1 goto at_menu
|
|
||||||
|
|
||||||
cls
|
|
||||||
echo:
|
|
||||||
echo Fixing registry and files permissions...
|
|
||||||
call :fixpermissions %nul%
|
|
||||||
goto :cleanspptoken
|
|
||||||
|
|
||||||
:fixpermissions
|
|
||||||
|
|
||||||
:: Thanks to skidaim for the fix
|
|
||||||
|
|
||||||
takeown /F %windir%\System32\sppsvc.exe
|
|
||||||
icacls %windir%\System32 /grant administrators:F /T
|
|
||||||
icacls %windir%\System32\spp /grant administrators:F /T
|
|
||||||
|
|
||||||
:: I know it's bad but people have messed up system32 permissions, that's why I don't recommend to run this unless users have messed up systems
|
|
||||||
|
|
||||||
%psc% $acl = Get-Acl 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform'; $rule = New-Object System.Security.AccessControl.RegistryAccessRule ('NT Service\sppsvc','FullControl','ContainerInherit, ObjectInherit','None','Allow'); $acl.SetAccessRule($rule); Set-Acl -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform' -AclObject $acl
|
|
||||||
%psc% $acl = Get-Acl 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SPP'; $rule = New-Object System.Security.AccessControl.RegistryAccessRule ('NT Service\sppsvc','FullControl','ContainerInherit, ObjectInherit','None','Allow'); $acl.SetAccessRule($rule); Set-Acl -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SPP' -AclObject $acl
|
|
||||||
%psc% $acl = Get-Acl 'HKLM:\SYSTEM\CurrentControlSet\Services\SPPSVC'; $rule = New-Object System.Security.AccessControl.RegistryAccessRule ('NT Service\sppsvc','FullControl','ContainerInherit, ObjectInherit','None','Allow'); $acl.SetAccessRule($rule); Set-Acl -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\SPPSVC' -AclObject $acl
|
|
||||||
%psc% $acl = Get-Acl 'HKLM:\SYSTEM\WPA'; $rule = New-Object System.Security.AccessControl.RegistryAccessRule ('NT Service\sppsvc','FullControl','ContainerInherit, ObjectInherit','None','Allow'); $acl.SetAccessRule($rule); Set-Acl -Path 'HKLM:\SYSTEM\WPA' -AclObject $acl
|
|
||||||
%psc% $acl = Get-Acl '%windir%\System32'; $rule = New-Object System.Security.AccessControl.FileSystemAccessRule ('NT Service\sppsvc','FullControl','ContainerInherit, ObjectInherit','None','Allow'); $acl.SetAccessRule($rule); Set-Acl -Path '%windir%\System32' -AclObject $acl
|
|
||||||
%psc% $acl = Get-Acl '%windir%\System32\spp'; $rule = New-Object System.Security.AccessControl.FileSystemAccessRule ('NT Service\sppsvc','FullControl','ContainerInherit, ObjectInherit','None','Allow'); $acl.SetAccessRule($rule); Set-Acl -Path '%windir%\System32\spp' -AclObject $acl
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:fixwindows7
|
|
||||||
|
|
||||||
cls
|
|
||||||
mode 98, 30
|
|
||||||
title Fix: Issues Caused By KB971033 In Windows 7
|
|
||||||
|
|
||||||
if %winbuild% GEQ 9200 (
|
|
||||||
%eline%
|
|
||||||
echo Unsupported OS version Detected.
|
|
||||||
echo This option is supported only for Windows 7 and it's Server equivalent.
|
|
||||||
goto :at_back
|
|
||||||
)
|
|
||||||
|
|
||||||
echo:
|
|
||||||
echo %line%
|
|
||||||
echo:
|
|
||||||
echo Notes:
|
|
||||||
echo:
|
|
||||||
echo - This option fixes issues caused by Update KB971033 in Windows 7.
|
|
||||||
echo https://support.microsoft.com/en-us/help/4487266
|
|
||||||
echo:
|
|
||||||
echo %line%
|
|
||||||
echo:
|
|
||||||
choice /C:01 /N /M "> [1] Continue [0] Go back : "
|
|
||||||
if %errorlevel%==1 goto at_menu
|
|
||||||
|
|
||||||
cls
|
|
||||||
echo:
|
|
||||||
|
|
||||||
echo Checking Update KB971033...
|
|
||||||
dism /online /get-packages | find /i "Microsoft-Windows-Security-WindowsActivationTechnologies-package~31bf3856ad364e35~amd64~~7.1.7600.16395" 1>nul && (
|
|
||||||
echo [Found]
|
|
||||||
echo Uninstalling it...
|
|
||||||
) || (
|
|
||||||
echo [Not Found]
|
|
||||||
)
|
|
||||||
|
|
||||||
wusa /uninstall /quiet /norestart /kb:971033
|
|
||||||
|
|
||||||
echo:
|
|
||||||
echo Applying Fixes...
|
|
||||||
echo:
|
|
||||||
|
|
||||||
net stop sppuinotify /y
|
|
||||||
sc config sppuinotify start= disabled
|
|
||||||
net stop sppsvc /y
|
|
||||||
del %windir%\system32\7B296FB0-376B-497e-B012-9C450E1B7327-5P-0.C7483456-A289-439d-8115-601632D005A0 /ah
|
|
||||||
del %windir%\system32\7B296FB0-376B-497e-B012-9C450E1B7327-5P-1.C7483456-A289-439d-8115-601632D005A0 /ah
|
|
||||||
del %windir%\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform\tokens.dat
|
|
||||||
del %windir%\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform\cache\cache.dat
|
|
||||||
cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul%
|
|
||||||
sc config sppuinotify start= demand
|
|
||||||
|
|
||||||
goto :at_back
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:rewmi
|
|
||||||
|
|
||||||
cls
|
|
||||||
mode 98, 30
|
|
||||||
title Rebuild WMI Repository
|
|
||||||
|
|
||||||
:: https://techcommunity.microsoft.com/t5/ask-the-performance-team/wmi-repository-corruption-or-not/ba-p/375484
|
:: https://techcommunity.microsoft.com/t5/ask-the-performance-team/wmi-repository-corruption-or-not/ba-p/375484
|
||||||
|
|
||||||
|
@ -896,183 +835,129 @@ echo WMI rebuild is not recommended on Windows Server. Aborting...
|
||||||
goto :at_back
|
goto :at_back
|
||||||
)
|
)
|
||||||
|
|
||||||
echo:
|
for %%# in (wmic.exe) do @if "%%~$PATH:#"=="" (
|
||||||
echo Initializing...
|
%eline%
|
||||||
|
echo wmic.exe file is not found in the system. Aborting...
|
||||||
|
goto :at_back
|
||||||
|
)
|
||||||
|
|
||||||
set _wmic=0
|
echo:
|
||||||
for %%# in (wmic.exe) do @if not "%%~$PATH:#"=="" set _wmic=1
|
echo Checking WMI
|
||||||
|
|
||||||
set error=
|
set error=
|
||||||
if %_wmic% EQU 1 wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i "computersystem" 1>nul
|
wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i "computersystem" 1>nul
|
||||||
if %_wmic% EQU 0 %psc% "Get-CIMInstance -Class Win32_ComputerSystem | Select-Object -Property CreationClassName" 2>nul | find /i "computersystem" 1>nul
|
|
||||||
if %errorlevel% NEQ 0 set error=1
|
if %errorlevel% NEQ 0 set error=1
|
||||||
winmgmt /verifyrepository %nul%
|
winmgmt /verifyrepository %nul%
|
||||||
if %errorlevel% NEQ 0 set error=1
|
if %errorlevel% NEQ 0 set error=1
|
||||||
|
|
||||||
cls
|
if not defined error (
|
||||||
echo:
|
echo [Working]
|
||||||
echo %line%
|
echo No need to apply this option. Aborting...
|
||||||
echo:
|
goto :at_back
|
||||||
if defined error (
|
|
||||||
echo WMI Status - [Not Responding] %_wmic%
|
|
||||||
) else (
|
|
||||||
call :_color %_Green% " WMI Status - [Working]"
|
|
||||||
)
|
)
|
||||||
echo:
|
|
||||||
echo Notes:
|
|
||||||
echo:
|
|
||||||
call :_color2 %_White% " - " %Magenta% "WMI rebuild can cause some 3rd party apps to not work until reinstall."
|
|
||||||
echo:
|
|
||||||
call :_color2 %_White% " - " %Red% "Apply this fix ONLY if WMI is not working."
|
|
||||||
echo:
|
|
||||||
echo %line%
|
|
||||||
echo:
|
|
||||||
choice /C:09 /N /M "> [9] Continue [0] Go back : "
|
|
||||||
if %errorlevel%==1 goto at_menu
|
|
||||||
|
|
||||||
:: Below fixes are taken from https://kb.acronis.com/content/62731
|
call :_color %Red% "[Not Responding]"
|
||||||
|
|
||||||
cls
|
|
||||||
echo:
|
echo:
|
||||||
|
|
||||||
sc query Winmgmt %nul% || (
|
sc query Winmgmt %nul% || (
|
||||||
%eline%
|
%eline%
|
||||||
echo Winmgmt service is not installed. Aborting...
|
echo Winmgmt service is not installed. Aborting...
|
||||||
goto :at_back
|
goto :at_back
|
||||||
)
|
)
|
||||||
|
|
||||||
echo Disabling Winmgmt service...
|
echo Disabling Winmgmt service
|
||||||
sc config Winmgmt start= disabled %nul%
|
sc config Winmgmt start= disabled %nul%
|
||||||
if %errorlevel% EQU 0 (
|
if %errorlevel% EQU 0 (
|
||||||
call :_color %Green% "[Successful]"
|
echo [Successful]
|
||||||
) else (
|
) else (
|
||||||
call :_color %Red% "[Failed] Aborting..."
|
call :_color %Red% "[Failed] Aborting..."
|
||||||
goto :wmifixend
|
sc config Winmgmt start= auto %nul%
|
||||||
|
goto :at_back
|
||||||
)
|
)
|
||||||
|
|
||||||
echo:
|
echo:
|
||||||
echo Stopping Winmgmt service...
|
echo Stopping Winmgmt service
|
||||||
|
call :_stopservice Winmgmt
|
||||||
call :_stopservice Winmgmt
|
call :_stopservice Winmgmt
|
||||||
call :_stopservice Winmgmt
|
call :_stopservice Winmgmt
|
||||||
sc query Winmgmt | find /i "1 STOPPED" %nul% && (
|
sc query Winmgmt | find /i "1 STOPPED" %nul% && (
|
||||||
call :_color %Green% "[Successful]"
|
echo [Successful]
|
||||||
) || (
|
) || (
|
||||||
call :_color %Red% "[Failed] Aborting..."
|
call :_color %Red% "[Failed]"
|
||||||
goto :wmifixend
|
echo:
|
||||||
|
call :_color %Magenta% "Its recommended to select [Restart] option and then apply Fix WMI option again."
|
||||||
|
echo %line%
|
||||||
|
echo:
|
||||||
|
choice /C:21 /N /M "> [1] Restart [2] Revert Back Changes :"
|
||||||
|
if !errorlevel!==1 (sc config Winmgmt start= auto %nul%&goto :at_back)
|
||||||
|
echo:
|
||||||
|
echo Restarting...
|
||||||
|
shutdown -t 5 -r
|
||||||
|
exit
|
||||||
)
|
)
|
||||||
|
|
||||||
echo:
|
echo:
|
||||||
echo Deleting WMI repository...
|
echo Deleting WMI repository
|
||||||
if exist "%windir%\System32\wbem\repository\" rmdir /s /q "%windir%\System32\wbem\repository\" %nul%
|
rmdir /s /q "%windir%\System32\wbem\repository\" %nul%
|
||||||
if exist "%windir%\System32\wbem\repository\" (
|
if exist "%windir%\System32\wbem\repository\" (
|
||||||
call :_color %Red% "[Failed]"
|
call :_color %Red% "[Failed]"
|
||||||
) else (
|
) else (
|
||||||
call :_color %Green% "[Successful]"
|
echo [Successful]
|
||||||
)
|
)
|
||||||
|
|
||||||
echo:
|
echo:
|
||||||
echo Enabling Winmgmt service...
|
echo Enabling Winmgmt service
|
||||||
sc config Winmgmt start= auto %nul%
|
sc config Winmgmt start= auto %nul%
|
||||||
if %errorlevel% EQU 0 (
|
if %errorlevel% EQU 0 (
|
||||||
call :_color %Green% "[Successful]"
|
echo [Successful]
|
||||||
) else (
|
) else (
|
||||||
call :_color %Red% "[Failed]"
|
call :_color %Red% "[Failed]"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i "computersystem" 1>nul
|
||||||
|
if %errorlevel% EQU 0 (
|
||||||
echo:
|
echo:
|
||||||
echo Checking WMI...
|
echo Checking WMI
|
||||||
if %_wmic% EQU 1 wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i "computersystem" 1>nul
|
call :_color %Green% "[Working]"
|
||||||
if %_wmic% EQU 0 %psc% "Get-CIMInstance -Class Win32_ComputerSystem | Select-Object -Property CreationClassName" 2>nul | find /i "computersystem" 1>nul
|
goto :at_back
|
||||||
|
)
|
||||||
|
|
||||||
|
echo:
|
||||||
|
echo Registering .dll's and Compiling .mof's, .mfl's
|
||||||
|
call :registerobj %nul%
|
||||||
|
|
||||||
|
echo:
|
||||||
|
echo Checking WMI
|
||||||
|
wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i "computersystem" 1>nul
|
||||||
if %errorlevel% NEQ 0 (
|
if %errorlevel% NEQ 0 (
|
||||||
call :_color %Red% "[Not Responding]"
|
call :_color %Red% "[Not Responding]"
|
||||||
|
echo:
|
||||||
|
echo Run [Dism RestoreHealth] and [SFC Scannow] options and make sure there are no errors.
|
||||||
) else (
|
) else (
|
||||||
call :_color %Green% "[Working]"
|
call :_color %Green% "[Working]"
|
||||||
)
|
)
|
||||||
|
|
||||||
goto :at_back
|
goto :at_back
|
||||||
|
|
||||||
:wmifixend
|
:registerobj
|
||||||
|
|
||||||
echo:
|
:: https://eskonr.com/2012/01/how-to-fix-wmi-issues-automatically/
|
||||||
echo Enabling Winmgmt service...
|
|
||||||
sc config Winmgmt start= auto %nul%
|
|
||||||
if %errorlevel% EQU 0 (
|
|
||||||
call :_color %Green% "[Successful]"
|
|
||||||
) else (
|
|
||||||
call :_color %Red% "[Failed]"
|
|
||||||
)
|
|
||||||
|
|
||||||
goto :at_back
|
call :_stopservice Winmgmt
|
||||||
|
cd /d %systemroot%\system32\wbem\
|
||||||
|
regsvr32 /s %systemroot%\system32\scecli.dll
|
||||||
|
regsvr32 /s %systemroot%\system32\userenv.dll
|
||||||
|
mofcomp cimwin32.mof
|
||||||
|
mofcomp cimwin32.mfl
|
||||||
|
mofcomp rsop.mof
|
||||||
|
mofcomp rsop.mfl
|
||||||
|
for /f %%s in ('dir /b /s *.dll') do regsvr32 /s %%s
|
||||||
|
for /f %%s in ('dir /b *.mof') do mofcomp %%s
|
||||||
|
for /f %%s in ('dir /b *.mfl') do mofcomp %%s
|
||||||
|
|
||||||
::========================================================================================================================================
|
winmgmt /salvagerepository
|
||||||
|
winmgmt /resetrepository
|
||||||
:exportevtlogs
|
exit /b
|
||||||
|
|
||||||
cls
|
|
||||||
mode con cols=125 lines=32
|
|
||||||
%nul% %psc% "&{$W=$Host.UI.RawUI.WindowSize;$B=$Host.UI.RawUI.BufferSize;$W.Height=31;$B.Height=500;$Host.UI.RawUI.WindowSize=$W;$Host.UI.RawUI.BufferSize=$B;}"
|
|
||||||
title Export Event Viewer Logs
|
|
||||||
|
|
||||||
set tdir=%SystemRoot%\Temp\_EventLogs
|
|
||||||
if exist %tdir%\. rd /s /q %tdir%\ %nul%
|
|
||||||
if exist %tdir%\ (
|
|
||||||
%eline%
|
|
||||||
echo Failed to delete below folder. Aborting...
|
|
||||||
echo %tdir%\
|
|
||||||
goto :at_back
|
|
||||||
)
|
|
||||||
|
|
||||||
md %tdir%\
|
|
||||||
|
|
||||||
echo:
|
|
||||||
echo Creating archive file of Event logs...
|
|
||||||
|
|
||||||
set _time=
|
|
||||||
for /f %%a in ('%psc% "Get-Date -format HH_mm_ss"') do set _time=%%a
|
|
||||||
%nul% robocopy %SystemRoot%\System32\winevt\Logs\ %tdir%\
|
|
||||||
|
|
||||||
:: https://stackoverflow.com/a/46268232
|
|
||||||
|
|
||||||
set "ddf="%SystemRoot%\Temp\ddf""
|
|
||||||
%nul% del /q /f %ddf%
|
|
||||||
echo/.New Cabinet>%ddf%
|
|
||||||
echo/.set Cabinet=ON>>%ddf%
|
|
||||||
echo/.set CabinetFileCountThreshold=0;>>%ddf%
|
|
||||||
echo/.set Compress=ON>>%ddf%
|
|
||||||
echo/.set CompressionType=LZX>>%ddf%
|
|
||||||
echo/.set CompressionLevel=7;>>%ddf%
|
|
||||||
echo/.set CompressionMemory=21;>>%ddf%
|
|
||||||
echo/.set FolderFileCountThreshold=0;>>%ddf%
|
|
||||||
echo/.set FolderSizeThreshold=0;>>%ddf%
|
|
||||||
echo/.set GenerateInf=OFF>>%ddf%
|
|
||||||
echo/.set InfFileName=nul>>%ddf%
|
|
||||||
echo/.set MaxCabinetSize=0;>>%ddf%
|
|
||||||
echo/.set MaxDiskFileCount=0;>>%ddf%
|
|
||||||
echo/.set MaxDiskSize=0;>>%ddf%
|
|
||||||
echo/.set MaxErrors=1;>>%ddf%
|
|
||||||
echo/.set RptFileName=nul>>%ddf%
|
|
||||||
echo/.set UniqueFiles=ON>>%ddf%
|
|
||||||
pushd "%tdir%\"
|
|
||||||
for /f "tokens=* delims=" %%D in ('dir /a:-D/b/s "%tdir%\"') do (
|
|
||||||
echo/"%%~fD" /inf=no;>>%ddf%
|
|
||||||
)
|
|
||||||
makecab /F %ddf% /D DiskDirectory1="" /D CabinetNameTemplate=%tdir%\Logs.cab
|
|
||||||
del /q /f %ddf%
|
|
||||||
popd
|
|
||||||
|
|
||||||
if not exist "!desktop!\AT_Logs\" md "!desktop!\AT_Logs\" %nul%
|
|
||||||
copy /y /b "%tdir%\Logs.cab" "!desktop!\AT_Logs\EventLogs_%_time%.cab" %nul%
|
|
||||||
if exist %tdir%\. rd /s /q %tdir%\ %nul%
|
|
||||||
|
|
||||||
echo:
|
|
||||||
if exist "!desktop!\AT_Logs\EventLogs_%_time%.cab" (
|
|
||||||
call :_color %Green% "[Successful]"
|
|
||||||
echo EventLogs_%_time%.cab created inside AT_Logs folder on the dekstop.
|
|
||||||
) else (
|
|
||||||
call :_color %Red% "[Failed]"
|
|
||||||
)
|
|
||||||
|
|
||||||
goto :at_back
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
@ -1114,6 +999,23 @@ exit /b
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
:checkperms
|
||||||
|
|
||||||
|
set permerror=
|
||||||
|
if not exist "%tokenstore%\" set permerror=1
|
||||||
|
|
||||||
|
for %%# in (
|
||||||
|
"%tokenstore%"
|
||||||
|
"HKLM:\SYSTEM\WPA"
|
||||||
|
"HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform"
|
||||||
|
) do if not defined permerror (
|
||||||
|
%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%
|
||||||
|
if !errorlevel!==2 set permerror=1
|
||||||
|
)
|
||||||
|
exit /b
|
||||||
|
|
||||||
|
::========================================================================================================================================
|
||||||
|
|
||||||
:scandat
|
:scandat
|
||||||
|
|
||||||
set token=
|
set token=
|
||||||
|
@ -1165,35 +1067,19 @@ exit /b
|
||||||
|
|
||||||
:regownstart
|
:regownstart
|
||||||
|
|
||||||
setlocal
|
|
||||||
set "TMP=%SystemRoot%\Temp"
|
|
||||||
set "TEMP=%SystemRoot%\Temp"
|
|
||||||
%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':regown\:.*';iex ($f[1]);"
|
%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':regown\:.*';iex ($f[1]);"
|
||||||
endlocal
|
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
:: Below code takes ownership of a volatile registry key and deletes it
|
:: Below code takes ownership of a volatile registry key and deletes it
|
||||||
:: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ClipSVC\Volatile\PersistedSystemState
|
:: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ClipSVC\Volatile\PersistedSystemState
|
||||||
|
|
||||||
:: Thanks to Remko Weijnen for the code and thanks to abbodi1406 for the help
|
|
||||||
:: remkoweijnen.nl/blog/2012/01/16/take-ownership-of-a-registry-key-in-powershell/
|
|
||||||
|
|
||||||
:regown:
|
:regown:
|
||||||
$definition = @"
|
$AssemblyBuilder = [AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1)
|
||||||
using System;
|
$ModuleBuilder = $AssemblyBuilder.DefineDynamicModule(2, $False)
|
||||||
using System.Runtime.InteropServices;
|
$TypeBuilder = $ModuleBuilder.DefineType(0)
|
||||||
namespace Win32Api
|
|
||||||
{
|
|
||||||
public class NtDll
|
|
||||||
{
|
|
||||||
[DllImport("ntdll.dll", EntryPoint="RtlAdjustPrivilege")]
|
|
||||||
public static extern int RtlAdjustPrivilege(int Privilege, bool Enable, bool CurrentThread, ref bool Enabled);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
"@
|
|
||||||
|
|
||||||
Add-Type -TypeDefinition $definition -PassThru | Out-Null
|
$TypeBuilder.DefinePInvokeMethod('RtlAdjustPrivilege', 'ntdll.dll', 'Public, Static', 1, [int], @([int], [bool], [bool], [bool].MakeByRefType()), 1, 3) | Out-Null
|
||||||
[Win32Api.NtDll]::RtlAdjustPrivilege(9, $true, $false, [ref]$false) | Out-Null
|
$TypeBuilder.CreateType()::RtlAdjustPrivilege(9, $true, $false, [ref]$false) | Out-Null
|
||||||
|
|
||||||
$SID = New-Object System.Security.Principal.SecurityIdentifier('S-1-5-32-544')
|
$SID = New-Object System.Security.Principal.SecurityIdentifier('S-1-5-32-544')
|
||||||
$IDN = ($SID.Translate([System.Security.Principal.NTAccount])).Value
|
$IDN = ($SID.Translate([System.Security.Principal.NTAccount])).Value
|
|
@ -6,7 +6,7 @@ A Windows and Office activator using HWID / KMS38 / Online KMS activation method
|
||||||
|
|
||||||
### Method 1 - PowerShell
|
### Method 1 - PowerShell
|
||||||
|
|
||||||
- On Windows 10/11, right-click on the windows start menu and select PowerShell or Terminal.
|
- On Windows 10/11, right-click on the windows start menu and select PowerShell or Terminal (Not CMD).
|
||||||
- Copy-paste the below code and press enter\
|
- Copy-paste the below code and press enter\
|
||||||
`irm https://massgrave.dev/get | iex`
|
`irm https://massgrave.dev/get | iex`
|
||||||
- You will see the activation options, and follow onscreen instructions.
|
- You will see the activation options, and follow onscreen instructions.
|
||||||
|
@ -14,7 +14,7 @@ A Windows and Office activator using HWID / KMS38 / Online KMS activation method
|
||||||
|
|
||||||
### Method 2 - Traditional
|
### Method 2 - Traditional
|
||||||
|
|
||||||
- Download the file named `MAS_1.7_Password_1234.7z` from [here](https://github.com/massgravel/Microsoft-Activation-Scripts/releases)
|
- Download the file named `MAS_1.8_Password_1234.7z` from [here](https://github.com/massgravel/Microsoft-Activation-Scripts/releases)
|
||||||
- Extract this file with a 3rd party archive manager, such as [7zip](https://www.7-zip.org/download.html)
|
- Extract this file with a 3rd party archive manager, such as [7zip](https://www.7-zip.org/download.html)
|
||||||
- Password is `1234`
|
- Password is `1234`
|
||||||
- In the extracted folder, find the folder named `All-In-One-Version`
|
- In the extracted folder, find the folder named `All-In-One-Version`
|
||||||
|
@ -25,8 +25,8 @@ A Windows and Office activator using HWID / KMS38 / Online KMS activation method
|
||||||
To run the scripts in unattended mode, check [here](https://massgrave.dev/command_line_switches.html)
|
To run the scripts in unattended mode, check [here](https://massgrave.dev/command_line_switches.html)
|
||||||
|
|
||||||
```
|
```
|
||||||
Latest Version: 1.7
|
Latest Version: 1.8
|
||||||
Release date: 7-Nov-2022
|
Release date: 16-Mar-2023
|
||||||
```
|
```
|
||||||
|
|
||||||
### For more details, check Homepage: https://massgrave.dev/
|
### For more details, check Homepage: https://massgrave.dev/
|
||||||
|
|
Loading…
Reference in New Issue