mirror of
				https://github.com/massgravel/Microsoft-Activation-Scripts.git
				synced 2025-10-30 08:01:39 +00:00 
			
		
		
		
	Remove KMS38 protection feature, it's not important.
This commit is contained in:
		
							parent
							
								
									43cceb366e
								
							
						
					
					
						commit
						bc781ad079
					
				
					 3 changed files with 179 additions and 120 deletions
				
			
		|  | @ -11706,9 +11706,6 @@ exit /b | ||||||
| ::  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 |  | ||||||
| set _rem=0 |  | ||||||
| 
 |  | ||||||
| ::  To disable changing edition if current edition doesn't support KMS38 activation, change the value to 1 from 0 or run the script with "/KMS38-NoEditionChange" parameter | ::  To disable changing edition if current edition doesn't support KMS38 activation, change the value to 1 from 0 or run the script with "/KMS38-NoEditionChange" parameter | ||||||
| set _NoEditionChange=0 | set _NoEditionChange=0 | ||||||
| 
 | 
 | ||||||
|  | @ -11729,13 +11726,12 @@ if defined _args set _args=%_args:"=% | ||||||
| if defined _args ( | if defined _args ( | ||||||
| for %%A in (%_args%) do ( | for %%A in (%_args%) do ( | ||||||
| if /i "%%A"=="/KMS38"                  set _act=1 | if /i "%%A"=="/KMS38"                  set _act=1 | ||||||
| if /i "%%A"=="/KMS38-RemoveProtection" set _rem=1 |  | ||||||
| if /i "%%A"=="/KMS38-NoEditionChange"  set _NoEditionChange=1 | if /i "%%A"=="/KMS38-NoEditionChange"  set _NoEditionChange=1 | ||||||
| if /i "%%A"=="-el"                     set _elev=1 | if /i "%%A"=="-el"                     set _elev=1 | ||||||
| ) | ) | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| for %%A in (%_act% %_rem% %_NoEditionChange%) do (if "%%A"=="1" set _unattended=1) | for %%A in (%_act% %_NoEditionChange%) do (if "%%A"=="1" set _unattended=1) | ||||||
| 
 | 
 | ||||||
| ::======================================================================================================================================== | ::======================================================================================================================================== | ||||||
| 
 | 
 | ||||||
|  | @ -11758,8 +11754,6 @@ goto dk_done | ||||||
| 
 | 
 | ||||||
| ::======================================================================================================================================== | ::======================================================================================================================================== | ||||||
| 
 | 
 | ||||||
| if %_rem%==1 goto :k_uninstall |  | ||||||
| 
 |  | ||||||
| :k_menu | :k_menu | ||||||
| 
 | 
 | ||||||
| if %_unattended%==0 ( | if %_unattended%==0 ( | ||||||
|  | @ -11776,7 +11770,7 @@ echo: | ||||||
| echo                 [1] KMS38 Activation | echo                 [1] KMS38 Activation | ||||||
| echo                 ____________________________________________ | echo                 ____________________________________________ | ||||||
| echo: | echo: | ||||||
| echo                 [2] Remove KM38 Protection | echo                 [2] Remove KMS38 Activation | ||||||
| echo: | echo: | ||||||
| echo                 [0] %_exitmsg% | echo                 [0] %_exitmsg% | ||||||
| echo:           ______________________________________________________ | echo:           ______________________________________________________ | ||||||
|  | @ -12043,8 +12037,7 @@ echo: | ||||||
| %nul% reg delete "HKU\S-1-5-20\%specific_kms%" /f | %nul% reg delete "HKU\S-1-5-20\%specific_kms%" /f | ||||||
| 
 | 
 | ||||||
| %nul% reg query "HKLM\%specific_kms%" && ( | %nul% reg query "HKLM\%specific_kms%" && ( | ||||||
| %psc% "$f=[System.IO.File]::ReadAllText('!_batp!') -split ':regdel\:.*';& ([scriptblock]::Create($f[1]))" | call :dk_color %Blue% "Specific KMS registry is locked. %_fixmsg%" | ||||||
| %nul% reg delete "HKLM\%specific_kms%" /f |  | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| set k_error= | set k_error= | ||||||
|  | @ -12210,18 +12203,6 @@ echo Removing the Added Specific KMS Host    [Successful] | ||||||
| ) | ) | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| ::  Protect KMS38 if opted by the user and conditions are correct |  | ||||||
| 
 |  | ||||||
| if defined _k38 ( |  | ||||||
| %psc% "$f=[System.IO.File]::ReadAllText('!_batp!') -split ':regdel\:.*';& ([ScriptBlock]::Create($f[1])) -protect" |  | ||||||
| %nul% reg delete "HKLM\%specific_kms%" /f |  | ||||||
| %nul% reg query "HKLM\%specific_kms%" && ( |  | ||||||
| echo Protect KMS38 From KMS                  [Successful] [Locked a Registry Key] |  | ||||||
| ) || ( |  | ||||||
| call :dk_color %Red% "Protect KMS38 From KMS                  [Failed to Lock a Registry Key]" |  | ||||||
| ) |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| ::  clipup.exe does not exist in server cor and acor editions by default, it was copied there with this script | ::  clipup.exe does not exist in server cor and acor editions by default, it was copied there with this script | ||||||
| 
 | 
 | ||||||
| if defined a_cor if exist "%_clipup%" del /f /q "%_clipup%" %nul% | if defined a_cor if exist "%_clipup%" del /f /q "%_clipup%" %nul% | ||||||
|  | @ -12251,57 +12232,30 @@ goto :dk_done | ||||||
| 
 | 
 | ||||||
| cls | cls | ||||||
| if not defined terminal mode 99, 28 | if not defined terminal mode 99, 28 | ||||||
| title  Remove KMS38 Protection %masver% | title  Remove KMS38 Activation %masver% | ||||||
| 
 | 
 | ||||||
| %nul% reg delete "HKLM\%specific_kms%" /f | %nul% reg delete "HKLM\%specific_kms%" /f | ||||||
| %nul% reg delete "HKU\S-1-5-20\%specific_kms%" /f | %nul% reg delete "HKU\S-1-5-20\%specific_kms%" /f | ||||||
| 
 | 
 | ||||||
|  | echo: | ||||||
| %nul% reg query "HKLM\%specific_kms%" && ( | %nul% reg query "HKLM\%specific_kms%" && ( | ||||||
| %psc% "$f=[System.IO.File]::ReadAllText('!_batp!') -split ':regdel\:.*';& ([scriptblock]::Create($f[1]))" | call :dk_color %Red% "Failed to remove specific KMS Host." | ||||||
| %nul% reg delete "HKLM\%specific_kms%" /f | call :dk_color %Blue% "%_fixmsg%" | ||||||
|  | ) || ( | ||||||
|  | echo Successfully removed specific KMS Host. | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| echo: | echo: | ||||||
| %nul% reg query "HKLM\%specific_kms%" && ( | echo KMS38 activation doesn't modify any Windows components and doesn't install any new files. | ||||||
| call :dk_color %Red% "Removing Specific KMS Host              [Failed]" | echo: | ||||||
| ) || ( | call :dk_color %Gray% "If you want to reset the activation status," | ||||||
| echo Removing Specific KMS Host              [Successful] | call :dk_color %Blue% "%_fixmsg%" | ||||||
| ) | echo: | ||||||
| 
 | 
 | ||||||
| goto :dk_done | goto :dk_done | ||||||
| 
 | 
 | ||||||
| ::======================================================================================================================================== | ::======================================================================================================================================== | ||||||
| 
 | 
 | ||||||
| ::  This code runs to protect/undo below registry key for KMS38 protection |  | ||||||
| ::  HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\55c92734-d682-4d71-983e-d6ec3f16059f |  | ||||||
| 
 |  | ||||||
| ::  KMS38 protection stops 180 days KMS Activation from replacing KMS38 activation |  | ||||||
| 
 |  | ||||||
| :regdel: |  | ||||||
| param ( |  | ||||||
|     [switch]$protect |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| $SID = New-Object System.Security.Principal.SecurityIdentifier('S-1-5-32-544') |  | ||||||
| $Admin = ($SID.Translate([System.Security.Principal.NTAccount])).Value |  | ||||||
| 
 |  | ||||||
| if($protect) { |  | ||||||
| $ruleArgs = @("$Admin", "Delete, SetValue", "ContainerInherit", "None", "Deny") |  | ||||||
| } else { |  | ||||||
| $ruleArgs = @("$Admin", "FullControl", "Allow") |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| $path = 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\55c92734-d682-4d71-983e-d6ec3f16059f' |  | ||||||
| $key = [Microsoft.Win32.RegistryKey]::OpenBaseKey('LocalMachine', 'Registry64').OpenSubKey($path, 'ReadWriteSubTree', 'ChangePermissions') |  | ||||||
| $acl = $key.GetAccessControl() |  | ||||||
| 
 |  | ||||||
| $rule = [System.Security.AccessControl.RegistryAccessRule]::new.Invoke($ruleArgs) |  | ||||||
| $acl.ResetAccessRule($rule) |  | ||||||
| $key.SetAccessControl($acl) |  | ||||||
| :regdel: |  | ||||||
| 
 |  | ||||||
| ::======================================================================================================================================== |  | ||||||
| 
 |  | ||||||
| ::  Check KMS activation status | ::  Check KMS activation status | ||||||
| 
 | 
 | ||||||
| :k_actinfo | :k_actinfo | ||||||
|  | @ -16692,6 +16646,25 @@ echo: | ||||||
| call :dk_color %Blue% "Rebuilding SPP licensing tokens..." | call :dk_color %Blue% "Rebuilding SPP licensing tokens..." | ||||||
| echo: | echo: | ||||||
| 
 | 
 | ||||||
|  | echo Clearing KMS Cache... | ||||||
|  | echo: | ||||||
|  | call :_taskclear-cache | ||||||
|  | 
 | ||||||
|  | %nul% reg query "HKLM\%SPPk%\%_wApp%" && ( | ||||||
|  | echo Removing KMS38 protection... | ||||||
|  | %psc% "$f=[System.IO.File]::ReadAllText('!_batp!') -split ':regdel\:.*';& ([scriptblock]::Create($f[1]))" | ||||||
|  | %nul% reg delete "HKLM\%SPPk%\%_wApp%" /f | ||||||
|  | %nul% reg query "HKLM\%SPPk%\%_wApp%" && ( | ||||||
|  | call :dk_color %Red% "Failed to remove KMS38 protection." | ||||||
|  | ) || ( | ||||||
|  | echo Successfully removed KMS38 protection. | ||||||
|  | echo Successfully cleared KMS Cache. | ||||||
|  | ) | ||||||
|  | ) || ( | ||||||
|  | echo Successfully cleared KMS Cache. | ||||||
|  | ) | ||||||
|  | echo: | ||||||
|  | 
 | ||||||
| call :scandat check | call :scandat check | ||||||
| 
 | 
 | ||||||
| if not defined token ( | if not defined token ( | ||||||
|  | @ -17437,6 +17410,36 @@ $acl.SetAccessRule($rule) | ||||||
| $key.SetAccessControl($acl) | $key.SetAccessControl($acl) | ||||||
| :regown: | :regown: | ||||||
| 
 | 
 | ||||||
|  | ::======================================================================================================================================== | ||||||
|  | 
 | ||||||
|  | ::  This code runs to undo below registry key KMS38 protection | ||||||
|  | ::  HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\55c92734-d682-4d71-983e-d6ec3f16059f | ||||||
|  | 
 | ||||||
|  | ::  This option is not used in KMS38 anymore, it's here only to remove previous versions protection. | ||||||
|  | 
 | ||||||
|  | :regdel: | ||||||
|  | param ( | ||||||
|  |     [switch]$protect | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | $SID = New-Object System.Security.Principal.SecurityIdentifier('S-1-5-32-544') | ||||||
|  | $Admin = ($SID.Translate([System.Security.Principal.NTAccount])).Value | ||||||
|  | 
 | ||||||
|  | if($protect) { | ||||||
|  | $ruleArgs = @("$Admin", "Delete, SetValue", "ContainerInherit", "None", "Deny") | ||||||
|  | } else { | ||||||
|  | $ruleArgs = @("$Admin", "FullControl", "Allow") | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | $path = 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\55c92734-d682-4d71-983e-d6ec3f16059f' | ||||||
|  | $key = [Microsoft.Win32.RegistryKey]::OpenBaseKey('LocalMachine', 'Registry64').OpenSubKey($path, 'ReadWriteSubTree', 'ChangePermissions') | ||||||
|  | $acl = $key.GetAccessControl() | ||||||
|  | 
 | ||||||
|  | $rule = [System.Security.AccessControl.RegistryAccessRule]::new.Invoke($ruleArgs) | ||||||
|  | $acl.ResetAccessRule($rule) | ||||||
|  | $key.SetAccessControl($acl) | ||||||
|  | :regdel: | ||||||
|  | 
 | ||||||
| :+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | :+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | ||||||
| 
 | 
 | ||||||
| :change_winedition | :change_winedition | ||||||
|  |  | ||||||
|  | @ -15,9 +15,6 @@ | ||||||
| ::  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 |  | ||||||
| set _rem=0 |  | ||||||
| 
 |  | ||||||
| ::  To disable changing edition if current edition doesn't support KMS38 activation, change the value to 1 from 0 or run the script with "/KMS38-NoEditionChange" parameter | ::  To disable changing edition if current edition doesn't support KMS38 activation, change the value to 1 from 0 or run the script with "/KMS38-NoEditionChange" parameter | ||||||
| set _NoEditionChange=0 | set _NoEditionChange=0 | ||||||
| 
 | 
 | ||||||
|  | @ -155,13 +152,12 @@ if defined _args set _args=%_args:re2=% | ||||||
| if defined _args ( | if defined _args ( | ||||||
| for %%A in (%_args%) do ( | for %%A in (%_args%) do ( | ||||||
| if /i "%%A"=="/KMS38"                  set _act=1 | if /i "%%A"=="/KMS38"                  set _act=1 | ||||||
| if /i "%%A"=="/KMS38-RemoveProtection" set _rem=1 |  | ||||||
| if /i "%%A"=="/KMS38-NoEditionChange"  set _NoEditionChange=1 | if /i "%%A"=="/KMS38-NoEditionChange"  set _NoEditionChange=1 | ||||||
| if /i "%%A"=="-el"                     set _elev=1 | if /i "%%A"=="-el"                     set _elev=1 | ||||||
| ) | ) | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| for %%A in (%_act% %_rem% %_NoEditionChange%) do (if "%%A"=="1" set _unattended=1) | for %%A in (%_act% %_NoEditionChange%) do (if "%%A"=="1" set _unattended=1) | ||||||
| 
 | 
 | ||||||
| ::======================================================================================================================================== | ::======================================================================================================================================== | ||||||
| 
 | 
 | ||||||
|  | @ -382,8 +378,6 @@ cls | ||||||
| 
 | 
 | ||||||
| ::======================================================================================================================================== | ::======================================================================================================================================== | ||||||
| 
 | 
 | ||||||
| if %_rem%==1 goto :k_uninstall |  | ||||||
| 
 |  | ||||||
| :k_menu | :k_menu | ||||||
| 
 | 
 | ||||||
| if %_unattended%==0 ( | if %_unattended%==0 ( | ||||||
|  | @ -400,7 +394,7 @@ echo: | ||||||
| echo                 [1] KMS38 Activation | echo                 [1] KMS38 Activation | ||||||
| echo                 ____________________________________________ | echo                 ____________________________________________ | ||||||
| echo: | echo: | ||||||
| echo                 [2] Remove KM38 Protection | echo                 [2] Remove KMS38 Activation | ||||||
| echo: | echo: | ||||||
| echo                 [0] %_exitmsg% | echo                 [0] %_exitmsg% | ||||||
| echo:           ______________________________________________________ | echo:           ______________________________________________________ | ||||||
|  | @ -667,8 +661,7 @@ echo: | ||||||
| %nul% reg delete "HKU\S-1-5-20\%specific_kms%" /f | %nul% reg delete "HKU\S-1-5-20\%specific_kms%" /f | ||||||
| 
 | 
 | ||||||
| %nul% reg query "HKLM\%specific_kms%" && ( | %nul% reg query "HKLM\%specific_kms%" && ( | ||||||
| %psc% "$f=[System.IO.File]::ReadAllText('!_batp!') -split ':regdel\:.*';& ([scriptblock]::Create($f[1]))" | call :dk_color %Blue% "Specific KMS registry is locked. %_fixmsg%" | ||||||
| %nul% reg delete "HKLM\%specific_kms%" /f |  | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| set k_error= | set k_error= | ||||||
|  | @ -834,18 +827,6 @@ echo Removing the Added Specific KMS Host    [Successful] | ||||||
| ) | ) | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| ::  Protect KMS38 if opted by the user and conditions are correct |  | ||||||
| 
 |  | ||||||
| if defined _k38 ( |  | ||||||
| %psc% "$f=[System.IO.File]::ReadAllText('!_batp!') -split ':regdel\:.*';& ([ScriptBlock]::Create($f[1])) -protect" |  | ||||||
| %nul% reg delete "HKLM\%specific_kms%" /f |  | ||||||
| %nul% reg query "HKLM\%specific_kms%" && ( |  | ||||||
| echo Protect KMS38 From KMS                  [Successful] [Locked a Registry Key] |  | ||||||
| ) || ( |  | ||||||
| call :dk_color %Red% "Protect KMS38 From KMS                  [Failed to Lock a Registry Key]" |  | ||||||
| ) |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| ::  clipup.exe does not exist in server cor and acor editions by default, it was copied there with this script | ::  clipup.exe does not exist in server cor and acor editions by default, it was copied there with this script | ||||||
| 
 | 
 | ||||||
| if defined a_cor if exist "%_clipup%" del /f /q "%_clipup%" %nul% | if defined a_cor if exist "%_clipup%" del /f /q "%_clipup%" %nul% | ||||||
|  | @ -875,57 +856,30 @@ goto :dk_done | ||||||
| 
 | 
 | ||||||
| cls | cls | ||||||
| if not defined terminal mode 99, 28 | if not defined terminal mode 99, 28 | ||||||
| title  Remove KMS38 Protection %masver% | title  Remove KMS38 Activation %masver% | ||||||
| 
 | 
 | ||||||
| %nul% reg delete "HKLM\%specific_kms%" /f | %nul% reg delete "HKLM\%specific_kms%" /f | ||||||
| %nul% reg delete "HKU\S-1-5-20\%specific_kms%" /f | %nul% reg delete "HKU\S-1-5-20\%specific_kms%" /f | ||||||
| 
 | 
 | ||||||
|  | echo: | ||||||
| %nul% reg query "HKLM\%specific_kms%" && ( | %nul% reg query "HKLM\%specific_kms%" && ( | ||||||
| %psc% "$f=[System.IO.File]::ReadAllText('!_batp!') -split ':regdel\:.*';& ([scriptblock]::Create($f[1]))" | call :dk_color %Red% "Failed to remove specific KMS Host." | ||||||
| %nul% reg delete "HKLM\%specific_kms%" /f | call :dk_color %Blue% "%_fixmsg%" | ||||||
|  | ) || ( | ||||||
|  | echo Successfully removed specific KMS Host. | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| echo: | echo: | ||||||
| %nul% reg query "HKLM\%specific_kms%" && ( | echo KMS38 activation doesn't modify any Windows components and doesn't install any new files. | ||||||
| call :dk_color %Red% "Removing Specific KMS Host              [Failed]" | echo: | ||||||
| ) || ( | call :dk_color %Gray% "If you want to reset the activation status," | ||||||
| echo Removing Specific KMS Host              [Successful] | call :dk_color %Blue% "%_fixmsg%" | ||||||
| ) | echo: | ||||||
| 
 | 
 | ||||||
| goto :dk_done | goto :dk_done | ||||||
| 
 | 
 | ||||||
| ::======================================================================================================================================== | ::======================================================================================================================================== | ||||||
| 
 | 
 | ||||||
| ::  This code runs to protect/undo below registry key for KMS38 protection |  | ||||||
| ::  HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\55c92734-d682-4d71-983e-d6ec3f16059f |  | ||||||
| 
 |  | ||||||
| ::  KMS38 protection stops 180 days KMS Activation from replacing KMS38 activation |  | ||||||
| 
 |  | ||||||
| :regdel: |  | ||||||
| param ( |  | ||||||
|     [switch]$protect |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| $SID = New-Object System.Security.Principal.SecurityIdentifier('S-1-5-32-544') |  | ||||||
| $Admin = ($SID.Translate([System.Security.Principal.NTAccount])).Value |  | ||||||
| 
 |  | ||||||
| if($protect) { |  | ||||||
| $ruleArgs = @("$Admin", "Delete, SetValue", "ContainerInherit", "None", "Deny") |  | ||||||
| } else { |  | ||||||
| $ruleArgs = @("$Admin", "FullControl", "Allow") |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| $path = 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\55c92734-d682-4d71-983e-d6ec3f16059f' |  | ||||||
| $key = [Microsoft.Win32.RegistryKey]::OpenBaseKey('LocalMachine', 'Registry64').OpenSubKey($path, 'ReadWriteSubTree', 'ChangePermissions') |  | ||||||
| $acl = $key.GetAccessControl() |  | ||||||
| 
 |  | ||||||
| $rule = [System.Security.AccessControl.RegistryAccessRule]::new.Invoke($ruleArgs) |  | ||||||
| $acl.ResetAccessRule($rule) |  | ||||||
| $key.SetAccessControl($acl) |  | ||||||
| :regdel: |  | ||||||
| 
 |  | ||||||
| ::======================================================================================================================================== |  | ||||||
| 
 |  | ||||||
| ::  Set variables | ::  Set variables | ||||||
| 
 | 
 | ||||||
| :dk_setvar | :dk_setvar | ||||||
|  |  | ||||||
|  | @ -697,6 +697,25 @@ echo: | ||||||
| call :dk_color %Blue% "Rebuilding SPP licensing tokens..." | call :dk_color %Blue% "Rebuilding SPP licensing tokens..." | ||||||
| echo: | echo: | ||||||
| 
 | 
 | ||||||
|  | echo Clearing KMS Cache... | ||||||
|  | echo: | ||||||
|  | call :_taskclear-cache | ||||||
|  | 
 | ||||||
|  | %nul% reg query "HKLM\%SPPk%\%_wApp%" && ( | ||||||
|  | echo Removing KMS38 protection... | ||||||
|  | %psc% "$f=[System.IO.File]::ReadAllText('!_batp!') -split ':regdel\:.*';& ([scriptblock]::Create($f[1]))" | ||||||
|  | %nul% reg delete "HKLM\%SPPk%\%_wApp%" /f | ||||||
|  | %nul% reg query "HKLM\%SPPk%\%_wApp%" && ( | ||||||
|  | call :dk_color %Red% "Failed to remove KMS38 protection." | ||||||
|  | ) || ( | ||||||
|  | echo Successfully removed KMS38 protection. | ||||||
|  | echo Successfully cleared KMS Cache. | ||||||
|  | ) | ||||||
|  | ) || ( | ||||||
|  | echo Successfully cleared KMS Cache. | ||||||
|  | ) | ||||||
|  | echo: | ||||||
|  | 
 | ||||||
| call :scandat check | call :scandat check | ||||||
| 
 | 
 | ||||||
| if not defined token ( | if not defined token ( | ||||||
|  | @ -1260,6 +1279,59 @@ exit /b | ||||||
| 
 | 
 | ||||||
| ::======================================================================================================================================== | ::======================================================================================================================================== | ||||||
| 
 | 
 | ||||||
|  | ::  Clean existing K-M-S cache from the registry | ||||||
|  | 
 | ||||||
|  | :_taskclear-cache | ||||||
|  | 
 | ||||||
|  | set w= | ||||||
|  | for %%# in (SppE%w%xtComObj.exe sppsvc.exe SLsvc.exe) do ( | ||||||
|  | reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ima%w%ge File Execu%w%tion Options\%%#" /f %nul% | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | set "OPPk=SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform" | ||||||
|  | 
 | ||||||
|  | if %winbuild% LSS 7600 ( | ||||||
|  | reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SL" %nul% && ( | ||||||
|  | set "SPPk=SOFTWARE\Microsoft\Windows NT\CurrentVersion\SL" | ||||||
|  | ) | ||||||
|  | ) | ||||||
|  | if not defined SPPk ( | ||||||
|  | set "SPPk=SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | set "slp=SoftwareLicensingProduct" | ||||||
|  | set "ospp=OfficeSoftwareProtectionProduct" | ||||||
|  | 
 | ||||||
|  | set "_wApp=55c92734-d682-4d71-983e-d6ec3f16059f" | ||||||
|  | set "_oApp=0ff1ce15-a989-479d-af46-f275c6370663" | ||||||
|  | set "_oA14=59a52881-a989-479d-af46-f275c6370663" | ||||||
|  | 
 | ||||||
|  | %nul% reg delete "HKLM\%SPPk%" /f /v KeyManagementServiceName | ||||||
|  | %nul% reg delete "HKLM\%SPPk%" /f /v KeyManagementServiceName /reg:32 | ||||||
|  | %nul% reg delete "HKLM\%SPPk%" /f /v KeyManagementServicePort | ||||||
|  | %nul% reg delete "HKLM\%SPPk%" /f /v KeyManagementServicePort /reg:32 | ||||||
|  | %nul% reg delete "HKLM\%SPPk%" /f /v DisableDnsPublishing | ||||||
|  | %nul% reg delete "HKLM\%SPPk%" /f /v DisableKeyManagementServiceHostCaching | ||||||
|  | %nul% reg delete "HKLM\%SPPk%\%_wApp%" /f | ||||||
|  | if %winbuild% GEQ 9200 ( | ||||||
|  | %nul% reg delete "HKLM\%SPPk%\%_oApp%" /f | ||||||
|  | %nul% reg delete "HKLM\%SPPk%\%_oApp%" /f /reg:32 | ||||||
|  | ) | ||||||
|  | if %winbuild% GEQ 9600 ( | ||||||
|  | %nul% reg delete "HKU\S-1-5-20\%SPPk%\%_wApp%" /f | ||||||
|  | %nul% reg delete "HKU\S-1-5-20\%SPPk%\%_oApp%" /f | ||||||
|  | ) | ||||||
|  | %nul% reg delete "HKLM\%OPPk%" /f /v KeyManagementServiceName | ||||||
|  | %nul% reg delete "HKLM\%OPPk%" /f /v KeyManagementServicePort | ||||||
|  | %nul% reg delete "HKLM\%OPPk%" /f /v DisableDnsPublishing | ||||||
|  | %nul% reg delete "HKLM\%OPPk%" /f /v DisableKeyManagementServiceHostCaching | ||||||
|  | %nul% reg delete "HKLM\%OPPk%\%_oA14%" /f | ||||||
|  | %nul% reg delete "HKLM\%OPPk%\%_oApp%" /f | ||||||
|  | 
 | ||||||
|  | exit /b | ||||||
|  | 
 | ||||||
|  | ::======================================================================================================================================== | ||||||
|  | 
 | ||||||
| ::  Fix SPP related registry and folder permissions | ::  Fix SPP related registry and folder permissions | ||||||
| 
 | 
 | ||||||
| :fixsppperms: | :fixsppperms: | ||||||
|  | @ -1471,6 +1543,36 @@ $key.SetAccessControl($acl) | ||||||
| 
 | 
 | ||||||
| ::======================================================================================================================================== | ::======================================================================================================================================== | ||||||
| 
 | 
 | ||||||
|  | ::  This code runs to undo below registry key KMS38 protection | ||||||
|  | ::  HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\55c92734-d682-4d71-983e-d6ec3f16059f | ||||||
|  | 
 | ||||||
|  | ::  This option is not used in KMS38 anymore, it's here only to remove previous versions protection. | ||||||
|  | 
 | ||||||
|  | :regdel: | ||||||
|  | param ( | ||||||
|  |     [switch]$protect | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | $SID = New-Object System.Security.Principal.SecurityIdentifier('S-1-5-32-544') | ||||||
|  | $Admin = ($SID.Translate([System.Security.Principal.NTAccount])).Value | ||||||
|  | 
 | ||||||
|  | if($protect) { | ||||||
|  | $ruleArgs = @("$Admin", "Delete, SetValue", "ContainerInherit", "None", "Deny") | ||||||
|  | } else { | ||||||
|  | $ruleArgs = @("$Admin", "FullControl", "Allow") | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | $path = 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\55c92734-d682-4d71-983e-d6ec3f16059f' | ||||||
|  | $key = [Microsoft.Win32.RegistryKey]::OpenBaseKey('LocalMachine', 'Registry64').OpenSubKey($path, 'ReadWriteSubTree', 'ChangePermissions') | ||||||
|  | $acl = $key.GetAccessControl() | ||||||
|  | 
 | ||||||
|  | $rule = [System.Security.AccessControl.RegistryAccessRule]::new.Invoke($ruleArgs) | ||||||
|  | $acl.ResetAccessRule($rule) | ||||||
|  | $key.SetAccessControl($acl) | ||||||
|  | :regdel: | ||||||
|  | 
 | ||||||
|  | ::======================================================================================================================================== | ||||||
|  | 
 | ||||||
| :dk_color | :dk_color | ||||||
| 
 | 
 | ||||||
| if %_NCS% EQU 1 ( | if %_NCS% EQU 1 ( | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 WindowsAddict
						WindowsAddict