mirror of
https://github.com/massgravel/Microsoft-Activation-Scripts.git
synced 2025-07-23 20:18:21 +00:00
Remove KMS38 protection feature, it's not important.
This commit is contained in:
parent
43cceb366e
commit
bc781ad079
|
@ -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…
Reference in a new issue