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 | ||||
| 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 | ||||
| set _NoEditionChange=0 | ||||
| 
 | ||||
|  | @ -11729,13 +11726,12 @@ if defined _args set _args=%_args:"=% | |||
| if defined _args ( | ||||
| for %%A in (%_args%) do ( | ||||
| 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"=="-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 | ||||
| 
 | ||||
| if %_unattended%==0 ( | ||||
|  | @ -11776,7 +11770,7 @@ echo: | |||
| echo                 [1] KMS38 Activation | ||||
| echo                 ____________________________________________ | ||||
| echo: | ||||
| echo                 [2] Remove KM38 Protection | ||||
| echo                 [2] Remove KMS38 Activation | ||||
| echo: | ||||
| echo                 [0] %_exitmsg% | ||||
| echo:           ______________________________________________________ | ||||
|  | @ -12043,8 +12037,7 @@ echo: | |||
| %nul% reg delete "HKU\S-1-5-20\%specific_kms%" /f | ||||
| 
 | ||||
| %nul% reg query "HKLM\%specific_kms%" && ( | ||||
| %psc% "$f=[System.IO.File]::ReadAllText('!_batp!') -split ':regdel\:.*';& ([scriptblock]::Create($f[1]))" | ||||
| %nul% reg delete "HKLM\%specific_kms%" /f | ||||
| call :dk_color %Blue% "Specific KMS registry is locked. %_fixmsg%" | ||||
| ) | ||||
| 
 | ||||
| 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 | ||||
| 
 | ||||
| if defined a_cor if exist "%_clipup%" del /f /q "%_clipup%" %nul% | ||||
|  | @ -12251,57 +12232,30 @@ goto :dk_done | |||
| 
 | ||||
| cls | ||||
| 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 "HKU\S-1-5-20\%specific_kms%" /f | ||||
| 
 | ||||
| echo: | ||||
| %nul% reg query "HKLM\%specific_kms%" && ( | ||||
| %psc% "$f=[System.IO.File]::ReadAllText('!_batp!') -split ':regdel\:.*';& ([scriptblock]::Create($f[1]))" | ||||
| %nul% reg delete "HKLM\%specific_kms%" /f | ||||
| call :dk_color %Red% "Failed to remove specific KMS Host." | ||||
| call :dk_color %Blue% "%_fixmsg%" | ||||
| ) || ( | ||||
| echo Successfully removed specific KMS Host. | ||||
| ) | ||||
| 
 | ||||
| echo: | ||||
| %nul% reg query "HKLM\%specific_kms%" && ( | ||||
| call :dk_color %Red% "Removing Specific KMS Host              [Failed]" | ||||
| ) || ( | ||||
| echo Removing Specific KMS Host              [Successful] | ||||
| ) | ||||
| echo KMS38 activation doesn't modify any Windows components and doesn't install any new files. | ||||
| echo: | ||||
| call :dk_color %Gray% "If you want to reset the activation status," | ||||
| call :dk_color %Blue% "%_fixmsg%" | ||||
| echo: | ||||
| 
 | ||||
| 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 | ||||
| 
 | ||||
| :k_actinfo | ||||
|  | @ -16692,6 +16646,25 @@ echo: | |||
| call :dk_color %Blue% "Rebuilding SPP licensing tokens..." | ||||
| 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 | ||||
| 
 | ||||
| if not defined token ( | ||||
|  | @ -17437,6 +17410,36 @@ $acl.SetAccessRule($rule) | |||
| $key.SetAccessControl($acl) | ||||
| :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 | ||||
|  |  | |||
|  | @ -15,9 +15,6 @@ | |||
| ::  To activate, run the script with "/KMS38" parameter or change 0 to 1 in below line | ||||
| 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 | ||||
| set _NoEditionChange=0 | ||||
| 
 | ||||
|  | @ -155,13 +152,12 @@ if defined _args set _args=%_args:re2=% | |||
| if defined _args ( | ||||
| for %%A in (%_args%) do ( | ||||
| 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"=="-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 | ||||
| 
 | ||||
| if %_unattended%==0 ( | ||||
|  | @ -400,7 +394,7 @@ echo: | |||
| echo                 [1] KMS38 Activation | ||||
| echo                 ____________________________________________ | ||||
| echo: | ||||
| echo                 [2] Remove KM38 Protection | ||||
| echo                 [2] Remove KMS38 Activation | ||||
| echo: | ||||
| echo                 [0] %_exitmsg% | ||||
| echo:           ______________________________________________________ | ||||
|  | @ -667,8 +661,7 @@ echo: | |||
| %nul% reg delete "HKU\S-1-5-20\%specific_kms%" /f | ||||
| 
 | ||||
| %nul% reg query "HKLM\%specific_kms%" && ( | ||||
| %psc% "$f=[System.IO.File]::ReadAllText('!_batp!') -split ':regdel\:.*';& ([scriptblock]::Create($f[1]))" | ||||
| %nul% reg delete "HKLM\%specific_kms%" /f | ||||
| call :dk_color %Blue% "Specific KMS registry is locked. %_fixmsg%" | ||||
| ) | ||||
| 
 | ||||
| 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 | ||||
| 
 | ||||
| if defined a_cor if exist "%_clipup%" del /f /q "%_clipup%" %nul% | ||||
|  | @ -875,57 +856,30 @@ goto :dk_done | |||
| 
 | ||||
| cls | ||||
| 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 "HKU\S-1-5-20\%specific_kms%" /f | ||||
| 
 | ||||
| echo: | ||||
| %nul% reg query "HKLM\%specific_kms%" && ( | ||||
| %psc% "$f=[System.IO.File]::ReadAllText('!_batp!') -split ':regdel\:.*';& ([scriptblock]::Create($f[1]))" | ||||
| %nul% reg delete "HKLM\%specific_kms%" /f | ||||
| call :dk_color %Red% "Failed to remove specific KMS Host." | ||||
| call :dk_color %Blue% "%_fixmsg%" | ||||
| ) || ( | ||||
| echo Successfully removed specific KMS Host. | ||||
| ) | ||||
| 
 | ||||
| echo: | ||||
| %nul% reg query "HKLM\%specific_kms%" && ( | ||||
| call :dk_color %Red% "Removing Specific KMS Host              [Failed]" | ||||
| ) || ( | ||||
| echo Removing Specific KMS Host              [Successful] | ||||
| ) | ||||
| echo KMS38 activation doesn't modify any Windows components and doesn't install any new files. | ||||
| echo: | ||||
| call :dk_color %Gray% "If you want to reset the activation status," | ||||
| call :dk_color %Blue% "%_fixmsg%" | ||||
| echo: | ||||
| 
 | ||||
| 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 | ||||
| 
 | ||||
| :dk_setvar | ||||
|  |  | |||
|  | @ -697,6 +697,25 @@ echo: | |||
| call :dk_color %Blue% "Rebuilding SPP licensing tokens..." | ||||
| 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 | ||||
| 
 | ||||
| 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 | ||||
| 
 | ||||
| :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 | ||||
| 
 | ||||
| if %_NCS% EQU 1 ( | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 WindowsAddict
						WindowsAddict