Compare commits

..

4 Commits

11 changed files with 144 additions and 110 deletions

View File

@ -1,5 +1,5 @@
@::r45f3r3-random @::r45f3r3-random
@set masver=3.5 @set masver=3.6
@setlocal DisableDelayedExpansion @setlocal DisableDelayedExpansion
@echo off @echo off
@ -2171,19 +2171,22 @@ call :dk_color %Gray% "Checking SkipRearm [Default 0 Value
if %winbuild% GEQ 9200 if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" ( if %winbuild% GEQ 9200 if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" (
%psc% "Get-WmiObject -Query 'SELECT Description FROM SoftwareLicensingProduct WHERE PartialProductKey IS NOT NULL AND LicenseDependsOn IS NULL' | Select-Object -Property Description" %nul2% | findstr /i "KMS_" %nul1% || ( %psc% "Get-WmiObject -Query 'SELECT Description FROM SoftwareLicensingProduct WHERE PartialProductKey IS NOT NULL AND LicenseDependsOn IS NULL' | Select-Object -Property Description" %nul2% | findstr /i "KMS_" %nul1% || (
for /f "delims=" %%a in ('%psc% "(Get-ScheduledTask -TaskName 'SvcRestartTask' -TaskPath '\Microsoft\Windows\SoftwareProtectionPlatform\').State" %nul6%') do (set taskinfo=%%a) for /f "delims=" %%a in ('%psc% "$s=New-Object -ComObject 'Schedule.Service'; $s.Connect(); $state=$s.GetFolder('\Microsoft\Windows\SoftwareProtectionPlatform').GetTask('SvcRestartTask').State; @{0='Unknown';1='Disabled';2='Queued';3='Ready';4='Running'}[$state]" %nul6%') do (set taskinfo=%%a)
echo !taskinfo! | find /i "Ready" %nul% || ( echo !taskinfo! | find /i "Ready" %nul% || (
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "actionlist" /f %nul% reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "actionlist" /f %nul%
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Microsoft\Windows\SoftwareProtectionPlatform\SvcRestartTask" %nul% || set taskinfo=Removed reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Microsoft\Windows\SoftwareProtectionPlatform\SvcRestartTask" %nul% || set taskinfo=Removed
if "!taskinfo!"=="" set "taskinfo=Not Found" if "!taskinfo!"=="" set "taskinfo=Not Found"
call :dk_color %Red% "Checking SvcRestartTask Status [!taskinfo!, system might deactivate later]" call :dk_color %Gray% "Checking SvcRestartTask Status [!taskinfo!. System might deactivate later.]"
if not defined showfix ( if not defined showfix (
echo: echo:
echo "!taskinfo!" | findstr /i "Removed Not Found" %nul1% && (
set fixes=%fixes% %mas%in-place_repair_upgrade
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%in-place_repair_upgrade"
) || (
call :dk_color %Blue% "Reboot your machine using the restart option and run the script again." call :dk_color %Blue% "Reboot your machine using the restart option and run the script again."
set fixes=%fixes% %mas%troubleshoot )
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
echo: echo:
) )
) )
@ -4280,7 +4283,7 @@ set tsids=
set _resall=0 set _resall=0
:: Choose activation method: :: Choose activation method:
:: In builds 19041 and later, the script will auto select StaticCID (requires internet). If no internet is detected, it will then auto select the KMS4k method. For builds lower than 19041, the script will auto select ZeroCID. :: In builds 26100 and later, the script will auto select StaticCID (requires internet). If no internet is detected, it will then auto select the KMS4k method. For builds lower than 26100, the script will auto select ZeroCID.
:: To change the activation method, run the script with the parameters "/Z-SCID", "/Z-ZCID", or "/Z-KMS4k", or modify the option from Auto to SCID, ZCID, or KMS4k in the line below. :: To change the activation method, run the script with the parameters "/Z-SCID", "/Z-ZCID", or "/Z-KMS4k", or modify the option from Auto to SCID, ZCID, or KMS4k in the line below.
set _actmethod=Auto set _actmethod=Auto
@ -4415,8 +4418,8 @@ echo:
echo ______________________________________________________________ echo ______________________________________________________________
echo: echo:
call :dk_color2 %_White% " [1] " %_Green% "Auto" call :dk_color2 %_White% " [1] " %_Green% "Auto"
echo Builds ^>= 19041 - StaticCID (KMS4k if offline) echo Builds ^>= 26100 - StaticCID (KMS4k if offline)
echo Builds ^< 19041 - ZeroCID echo Builds ^< 26100 - ZeroCID
echo __________________________________________________ echo __________________________________________________
echo: echo:
echo [2] StaticCID echo [2] StaticCID
@ -4425,8 +4428,7 @@ echo Not for Windows 7 or older
echo __________________________________________________ echo __________________________________________________
echo: echo:
echo [3] ZeroCID echo [3] ZeroCID
echo Works reliably on builds below 19041 echo Works reliably on builds below 26100
echo May break on builds between 19041-26100
echo Does not work on builds above 26100.4188 echo Does not work on builds above 26100.4188
echo __________________________________________________ echo __________________________________________________
echo: echo:
@ -4538,7 +4540,7 @@ if /i %_actmethod%==ZCID set tsmethod=ZeroCID
if /i %_actmethod%==KMS4k set tsmethod=KMS4k if /i %_actmethod%==KMS4k set tsmethod=KMS4k
if /i %_actmethod%==Auto ( if /i %_actmethod%==Auto (
if %winbuild% GEQ 19041 ( if %winbuild% GEQ 26100 (
set tsmethod=StaticCID set tsmethod=StaticCID
) else ( ) else (
set tsmethod=ZeroCID set tsmethod=ZeroCID
@ -6320,7 +6322,7 @@ using System.Xml.Linq;
} }
#endif #endif
// Common.cs // LibTSforge/Common.cs
namespace LibTSforge namespace LibTSforge
{ {
using System; using System;
@ -6562,7 +6564,7 @@ namespace LibTSforge
} }
// SPP/PKeyConfig.cs // LibTSforge/SPP/PKeyConfig.cs
namespace LibTSforge.SPP namespace LibTSforge.SPP
{ {
using System; using System;
@ -6588,7 +6590,7 @@ namespace LibTSforge.SPP
public bool Contains(int n) public bool Contains(int n)
{ {
return Start <= n && End <= n; return Start <= n && n <= End;
} }
} }
@ -6718,10 +6720,19 @@ namespace LibTSforge.SPP
string refActIdStr = configNode.SelectSingleNode("./p:ActConfigId", nsmgr).InnerText; string refActIdStr = configNode.SelectSingleNode("./p:ActConfigId", nsmgr).InnerText;
Guid refActId = new Guid(refActIdStr); Guid refActId = new Guid(refActIdStr);
int group = int.Parse(configNode.SelectSingleNode("./p:RefGroupId", nsmgr).InnerText); int group = int.Parse(configNode.SelectSingleNode("./p:RefGroupId", nsmgr).InnerText);
List<KeyRange> keyRanges = ranges[refActIdStr]; List<KeyRange> keyRanges;
ranges.TryGetValue(refActIdStr, out keyRanges);
if (keyRanges == null)
{
continue;
}
if (keyRanges.Count > 0 && !Products.ContainsKey(refActId)) if (keyRanges.Count > 0 && !Products.ContainsKey(refActId))
{ {
PKeyAlgorithm algorithm;
algorithms.TryGetValue(group, out algorithm);
ProductConfig productConfig = new ProductConfig ProductConfig productConfig = new ProductConfig
{ {
GroupId = group, GroupId = group,
@ -6729,7 +6740,7 @@ namespace LibTSforge.SPP
Description = configNode.SelectSingleNode("./p:ProductDescription", nsmgr).InnerText, Description = configNode.SelectSingleNode("./p:ProductDescription", nsmgr).InnerText,
Channel = configNode.SelectSingleNode("./p:ProductKeyType", nsmgr).InnerText, Channel = configNode.SelectSingleNode("./p:ProductKeyType", nsmgr).InnerText,
Randomized = configNode.SelectSingleNode("./p:ProductKeyType", nsmgr).InnerText.ToLower() == "true", Randomized = configNode.SelectSingleNode("./p:ProductKeyType", nsmgr).InnerText.ToLower() == "true",
Algorithm = algorithms[group], Algorithm = algorithm,
Ranges = keyRanges, Ranges = keyRanges,
ActivationId = refActId ActivationId = refActId
}; };
@ -6779,7 +6790,7 @@ namespace LibTSforge.SPP
} }
// SPP/ProductKey.cs // LibTSforge/SPP/ProductKey.cs
namespace LibTSforge.SPP namespace LibTSforge.SPP
{ {
using System; using System;
@ -7095,7 +7106,7 @@ namespace LibTSforge.SPP
} }
// SPP/SLAPI.cs // LibTSforge/SPP/SLAPI.cs
namespace LibTSforge.SPP namespace LibTSforge.SPP
{ {
using System; using System;
@ -7508,7 +7519,7 @@ namespace LibTSforge.SPP
} }
// SPP/SPPUtils.cs // LibTSforge/SPP/SPPUtils.cs
namespace LibTSforge.SPP namespace LibTSforge.SPP
{ {
using Microsoft.Win32; using Microsoft.Win32;
@ -7845,7 +7856,7 @@ namespace LibTSforge.SPP
} }
// SPP/SPSys.cs // LibTSforge/SPP/SPSys.cs
namespace LibTSforge.SPP namespace LibTSforge.SPP
{ {
using Microsoft.Win32.SafeHandles; using Microsoft.Win32.SafeHandles;
@ -7892,7 +7903,7 @@ namespace LibTSforge.SPP
} }
// Crypto/CryptoUtils.cs // LibTSforge/Crypto/CryptoUtils.cs
namespace LibTSforge.Crypto namespace LibTSforge.Crypto
{ {
using System; using System;
@ -8027,7 +8038,7 @@ namespace LibTSforge.Crypto
} }
// Crypto/Keys.cs // LibTSforge/Crypto/Keys.cs
namespace LibTSforge.Crypto namespace LibTSforge.Crypto
{ {
public static class Keys public static class Keys
@ -8117,7 +8128,7 @@ namespace LibTSforge.Crypto
} }
// Crypto/PhysStoreCrypto.cs // LibTSforge/Crypto/PhysStoreCrypto.cs
namespace LibTSforge.Crypto namespace LibTSforge.Crypto
{ {
using System; using System;
@ -8202,7 +8213,7 @@ namespace LibTSforge.Crypto
} }
// Modifiers/GenPKeyInstall.cs // LibTSforge/Modifiers/GenPKeyInstall.cs
namespace LibTSforge.Modifiers namespace LibTSforge.Modifiers
{ {
using System; using System;
@ -8413,7 +8424,7 @@ namespace LibTSforge.Modifiers
} }
// Modifiers/GracePeriodReset.cs // LibTSforge/Modifiers/GracePeriodReset.cs
namespace LibTSforge.Modifiers namespace LibTSforge.Modifiers
{ {
using System.Collections.Generic; using System.Collections.Generic;
@ -8446,7 +8457,7 @@ namespace LibTSforge.Modifiers
} }
// Modifiers/KeyChangeLockDelete.cs // LibTSforge/Modifiers/KeyChangeLockDelete.cs
namespace LibTSforge.Modifiers namespace LibTSforge.Modifiers
{ {
using System.Collections.Generic; using System.Collections.Generic;
@ -8486,7 +8497,7 @@ namespace LibTSforge.Modifiers
} }
// Modifiers/KMSHostCharge.cs // LibTSforge/Modifiers/KMSHostCharge.cs
namespace LibTSforge.Modifiers namespace LibTSforge.Modifiers
{ {
using System; using System;
@ -8647,7 +8658,7 @@ namespace LibTSforge.Modifiers
} }
// Modifiers/RearmReset.cs // LibTSforge/Modifiers/RearmReset.cs
namespace LibTSforge.Modifiers namespace LibTSforge.Modifiers
{ {
using System.Collections.Generic; using System.Collections.Generic;
@ -8703,7 +8714,7 @@ namespace LibTSforge.Modifiers
} }
// Modifiers/SetIIDParams.cs // LibTSforge/Modifiers/SetIIDParams.cs
namespace LibTSforge.Modifiers namespace LibTSforge.Modifiers
{ {
using PhysicalStore; using PhysicalStore;
@ -8772,7 +8783,7 @@ namespace LibTSforge.Modifiers
} }
// Modifiers/TamperedFlagsDelete.cs // LibTSforge/Modifiers/TamperedFlagsDelete.cs
namespace LibTSforge.Modifiers namespace LibTSforge.Modifiers
{ {
using System.Linq; using System.Linq;
@ -8822,7 +8833,7 @@ namespace LibTSforge.Modifiers
} }
// Modifiers/UniqueIdDelete.cs // LibTSforge/Modifiers/UniqueIdDelete.cs
namespace LibTSforge.Modifiers namespace LibTSforge.Modifiers
{ {
using System; using System;
@ -8881,7 +8892,7 @@ namespace LibTSforge.Modifiers
} }
// Activators/KMS4K.cs // LibTSforge/Activators/KMS4K.cs
namespace LibTSforge.Activators namespace LibTSforge.Activators
{ {
using System; using System;
@ -9092,7 +9103,7 @@ namespace LibTSforge.Activators
} }
// Activators/ZeroCID.cs // LibTSforge/Activators/ZeroCID.cs
namespace LibTSforge.Activators namespace LibTSforge.Activators
{ {
using System; using System;
@ -9281,7 +9292,7 @@ namespace LibTSforge.Activators
} }
// TokenStore/Common.cs // LibTSforge/TokenStore/Common.cs
namespace LibTSforge.TokenStore namespace LibTSforge.TokenStore
{ {
using System.Collections.Generic; using System.Collections.Generic;
@ -9351,7 +9362,7 @@ namespace LibTSforge.TokenStore
} }
// TokenStore/ITokenStore.cs // LibTSforge/TokenStore/ITokenStore.cs
namespace LibTSforge.TokenStore namespace LibTSforge.TokenStore
{ {
using System; using System;
@ -9371,7 +9382,7 @@ namespace LibTSforge.TokenStore
} }
// TokenStore/TokenStoreModern.cs // LibTSforge/TokenStore/TokenStoreModern.cs
namespace LibTSforge.TokenStore namespace LibTSforge.TokenStore
{ {
using System; using System;
@ -9657,7 +9668,7 @@ namespace LibTSforge.TokenStore
} }
// PhysicalStore/Common.cs // LibTSforge/PhysicalStore/Common.cs
namespace LibTSforge.PhysicalStore namespace LibTSforge.PhysicalStore
{ {
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
@ -9688,7 +9699,7 @@ namespace LibTSforge.PhysicalStore
} }
// PhysicalStore/IPhysicalStore.cs // LibTSforge/PhysicalStore/IPhysicalStore.cs
namespace LibTSforge.PhysicalStore namespace LibTSforge.PhysicalStore
{ {
using System; using System;
@ -9783,7 +9794,7 @@ namespace LibTSforge.PhysicalStore
} }
// PhysicalStore/PhysicalStoreModern.cs // LibTSforge/PhysicalStore/PhysicalStoreModern.cs
namespace LibTSforge.PhysicalStore namespace LibTSforge.PhysicalStore
{ {
using System; using System;
@ -10201,7 +10212,7 @@ namespace LibTSforge.PhysicalStore
} }
// PhysicalStore/PhysicalStoreVista.cs // LibTSforge/PhysicalStore/PhysicalStoreVista.cs
namespace LibTSforge.PhysicalStore namespace LibTSforge.PhysicalStore
{ {
using System; using System;
@ -10560,7 +10571,7 @@ namespace LibTSforge.PhysicalStore
} }
// PhysicalStore/PhysicalStoreWin7.cs // LibTSforge/PhysicalStore/PhysicalStoreWin7.cs
namespace LibTSforge.PhysicalStore namespace LibTSforge.PhysicalStore
{ {
using System; using System;
@ -10937,7 +10948,7 @@ namespace LibTSforge.PhysicalStore
} }
// PhysicalStore/VariableBag.cs // LibTSforge/PhysicalStore/VariableBag.cs
namespace LibTSforge.PhysicalStore namespace LibTSforge.PhysicalStore
{ {
using System; using System;

View File

@ -1,4 +1,4 @@
@set masver=3.5 @set masver=3.6
@echo off @echo off
@ -1855,19 +1855,22 @@ call :dk_color %Gray% "Checking SkipRearm [Default 0 Value
if %winbuild% GEQ 9200 if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" ( if %winbuild% GEQ 9200 if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" (
%psc% "Get-WmiObject -Query 'SELECT Description FROM SoftwareLicensingProduct WHERE PartialProductKey IS NOT NULL AND LicenseDependsOn IS NULL' | Select-Object -Property Description" %nul2% | findstr /i "KMS_" %nul1% || ( %psc% "Get-WmiObject -Query 'SELECT Description FROM SoftwareLicensingProduct WHERE PartialProductKey IS NOT NULL AND LicenseDependsOn IS NULL' | Select-Object -Property Description" %nul2% | findstr /i "KMS_" %nul1% || (
for /f "delims=" %%a in ('%psc% "(Get-ScheduledTask -TaskName 'SvcRestartTask' -TaskPath '\Microsoft\Windows\SoftwareProtectionPlatform\').State" %nul6%') do (set taskinfo=%%a) for /f "delims=" %%a in ('%psc% "$s=New-Object -ComObject 'Schedule.Service'; $s.Connect(); $state=$s.GetFolder('\Microsoft\Windows\SoftwareProtectionPlatform').GetTask('SvcRestartTask').State; @{0='Unknown';1='Disabled';2='Queued';3='Ready';4='Running'}[$state]" %nul6%') do (set taskinfo=%%a)
echo !taskinfo! | find /i "Ready" %nul% || ( echo !taskinfo! | find /i "Ready" %nul% || (
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "actionlist" /f %nul% reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "actionlist" /f %nul%
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Microsoft\Windows\SoftwareProtectionPlatform\SvcRestartTask" %nul% || set taskinfo=Removed reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Microsoft\Windows\SoftwareProtectionPlatform\SvcRestartTask" %nul% || set taskinfo=Removed
if "!taskinfo!"=="" set "taskinfo=Not Found" if "!taskinfo!"=="" set "taskinfo=Not Found"
call :dk_color %Red% "Checking SvcRestartTask Status [!taskinfo!, system might deactivate later]" call :dk_color %Gray% "Checking SvcRestartTask Status [!taskinfo!. System might deactivate later.]"
if not defined showfix ( if not defined showfix (
echo: echo:
echo "!taskinfo!" | findstr /i "Removed Not Found" %nul1% && (
set fixes=%fixes% %mas%in-place_repair_upgrade
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%in-place_repair_upgrade"
) || (
call :dk_color %Blue% "Reboot your machine using the restart option and run the script again." call :dk_color %Blue% "Reboot your machine using the restart option and run the script again."
set fixes=%fixes% %mas%troubleshoot )
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
echo: echo:
) )
) )

View File

@ -1,4 +1,4 @@
@set masver=3.5 @set masver=3.6
@echo off @echo off
@ -1940,19 +1940,22 @@ call :dk_color %Gray% "Checking SkipRearm [Default 0 Value
if %winbuild% GEQ 9200 if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" ( if %winbuild% GEQ 9200 if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" (
%psc% "Get-WmiObject -Query 'SELECT Description FROM SoftwareLicensingProduct WHERE PartialProductKey IS NOT NULL AND LicenseDependsOn IS NULL' | Select-Object -Property Description" %nul2% | findstr /i "KMS_" %nul1% || ( %psc% "Get-WmiObject -Query 'SELECT Description FROM SoftwareLicensingProduct WHERE PartialProductKey IS NOT NULL AND LicenseDependsOn IS NULL' | Select-Object -Property Description" %nul2% | findstr /i "KMS_" %nul1% || (
for /f "delims=" %%a in ('%psc% "(Get-ScheduledTask -TaskName 'SvcRestartTask' -TaskPath '\Microsoft\Windows\SoftwareProtectionPlatform\').State" %nul6%') do (set taskinfo=%%a) for /f "delims=" %%a in ('%psc% "$s=New-Object -ComObject 'Schedule.Service'; $s.Connect(); $state=$s.GetFolder('\Microsoft\Windows\SoftwareProtectionPlatform').GetTask('SvcRestartTask').State; @{0='Unknown';1='Disabled';2='Queued';3='Ready';4='Running'}[$state]" %nul6%') do (set taskinfo=%%a)
echo !taskinfo! | find /i "Ready" %nul% || ( echo !taskinfo! | find /i "Ready" %nul% || (
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "actionlist" /f %nul% reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "actionlist" /f %nul%
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Microsoft\Windows\SoftwareProtectionPlatform\SvcRestartTask" %nul% || set taskinfo=Removed reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Microsoft\Windows\SoftwareProtectionPlatform\SvcRestartTask" %nul% || set taskinfo=Removed
if "!taskinfo!"=="" set "taskinfo=Not Found" if "!taskinfo!"=="" set "taskinfo=Not Found"
call :dk_color %Red% "Checking SvcRestartTask Status [!taskinfo!, system might deactivate later]" call :dk_color %Gray% "Checking SvcRestartTask Status [!taskinfo!. System might deactivate later.]"
if not defined showfix ( if not defined showfix (
echo: echo:
echo "!taskinfo!" | findstr /i "Removed Not Found" %nul1% && (
set fixes=%fixes% %mas%in-place_repair_upgrade
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%in-place_repair_upgrade"
) || (
call :dk_color %Blue% "Reboot your machine using the restart option and run the script again." call :dk_color %Blue% "Reboot your machine using the restart option and run the script again."
set fixes=%fixes% %mas%troubleshoot )
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
echo: echo:
) )
) )

View File

@ -1,4 +1,4 @@
@set masver=3.5 @set masver=3.6
@echo off @echo off
@ -2541,19 +2541,22 @@ call :dk_color %Gray% "Checking SkipRearm [Default 0 Value
if %winbuild% GEQ 9200 if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" ( if %winbuild% GEQ 9200 if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" (
%psc% "Get-WmiObject -Query 'SELECT Description FROM SoftwareLicensingProduct WHERE PartialProductKey IS NOT NULL AND LicenseDependsOn IS NULL' | Select-Object -Property Description" %nul2% | findstr /i "KMS_" %nul1% || ( %psc% "Get-WmiObject -Query 'SELECT Description FROM SoftwareLicensingProduct WHERE PartialProductKey IS NOT NULL AND LicenseDependsOn IS NULL' | Select-Object -Property Description" %nul2% | findstr /i "KMS_" %nul1% || (
for /f "delims=" %%a in ('%psc% "(Get-ScheduledTask -TaskName 'SvcRestartTask' -TaskPath '\Microsoft\Windows\SoftwareProtectionPlatform\').State" %nul6%') do (set taskinfo=%%a) for /f "delims=" %%a in ('%psc% "$s=New-Object -ComObject 'Schedule.Service'; $s.Connect(); $state=$s.GetFolder('\Microsoft\Windows\SoftwareProtectionPlatform').GetTask('SvcRestartTask').State; @{0='Unknown';1='Disabled';2='Queued';3='Ready';4='Running'}[$state]" %nul6%') do (set taskinfo=%%a)
echo !taskinfo! | find /i "Ready" %nul% || ( echo !taskinfo! | find /i "Ready" %nul% || (
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "actionlist" /f %nul% reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "actionlist" /f %nul%
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Microsoft\Windows\SoftwareProtectionPlatform\SvcRestartTask" %nul% || set taskinfo=Removed reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Microsoft\Windows\SoftwareProtectionPlatform\SvcRestartTask" %nul% || set taskinfo=Removed
if "!taskinfo!"=="" set "taskinfo=Not Found" if "!taskinfo!"=="" set "taskinfo=Not Found"
call :dk_color %Red% "Checking SvcRestartTask Status [!taskinfo!, system might deactivate later]" call :dk_color %Gray% "Checking SvcRestartTask Status [!taskinfo!. System might deactivate later.]"
if not defined showfix ( if not defined showfix (
echo: echo:
echo "!taskinfo!" | findstr /i "Removed Not Found" %nul1% && (
set fixes=%fixes% %mas%in-place_repair_upgrade
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%in-place_repair_upgrade"
) || (
call :dk_color %Blue% "Reboot your machine using the restart option and run the script again." call :dk_color %Blue% "Reboot your machine using the restart option and run the script again."
set fixes=%fixes% %mas%troubleshoot )
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
echo: echo:
) )
) )

View File

@ -1,4 +1,4 @@
@set masver=3.5 @set masver=3.6
@echo off @echo off
@ -3604,19 +3604,22 @@ call :dk_color %Gray% "Checking SkipRearm [Default 0 Value
if %winbuild% GEQ 9200 if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" ( if %winbuild% GEQ 9200 if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" (
%psc% "Get-WmiObject -Query 'SELECT Description FROM SoftwareLicensingProduct WHERE PartialProductKey IS NOT NULL AND LicenseDependsOn IS NULL' | Select-Object -Property Description" %nul2% | findstr /i "KMS_" %nul1% || ( %psc% "Get-WmiObject -Query 'SELECT Description FROM SoftwareLicensingProduct WHERE PartialProductKey IS NOT NULL AND LicenseDependsOn IS NULL' | Select-Object -Property Description" %nul2% | findstr /i "KMS_" %nul1% || (
for /f "delims=" %%a in ('%psc% "(Get-ScheduledTask -TaskName 'SvcRestartTask' -TaskPath '\Microsoft\Windows\SoftwareProtectionPlatform\').State" %nul6%') do (set taskinfo=%%a) for /f "delims=" %%a in ('%psc% "$s=New-Object -ComObject 'Schedule.Service'; $s.Connect(); $state=$s.GetFolder('\Microsoft\Windows\SoftwareProtectionPlatform').GetTask('SvcRestartTask').State; @{0='Unknown';1='Disabled';2='Queued';3='Ready';4='Running'}[$state]" %nul6%') do (set taskinfo=%%a)
echo !taskinfo! | find /i "Ready" %nul% || ( echo !taskinfo! | find /i "Ready" %nul% || (
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "actionlist" /f %nul% reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "actionlist" /f %nul%
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Microsoft\Windows\SoftwareProtectionPlatform\SvcRestartTask" %nul% || set taskinfo=Removed reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Microsoft\Windows\SoftwareProtectionPlatform\SvcRestartTask" %nul% || set taskinfo=Removed
if "!taskinfo!"=="" set "taskinfo=Not Found" if "!taskinfo!"=="" set "taskinfo=Not Found"
call :dk_color %Red% "Checking SvcRestartTask Status [!taskinfo!, system might deactivate later]" call :dk_color %Gray% "Checking SvcRestartTask Status [!taskinfo!. System might deactivate later.]"
if not defined showfix ( if not defined showfix (
echo: echo:
echo "!taskinfo!" | findstr /i "Removed Not Found" %nul1% && (
set fixes=%fixes% %mas%in-place_repair_upgrade
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%in-place_repair_upgrade"
) || (
call :dk_color %Blue% "Reboot your machine using the restart option and run the script again." call :dk_color %Blue% "Reboot your machine using the restart option and run the script again."
set fixes=%fixes% %mas%troubleshoot )
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
echo: echo:
) )
) )

View File

@ -1,4 +1,4 @@
@set masver=3.5 @set masver=3.6
@echo off @echo off
@ -46,7 +46,7 @@ set tsids=
set _resall=0 set _resall=0
:: Choose activation method: :: Choose activation method:
:: In builds 19041 and later, the script will auto select StaticCID (requires internet). If no internet is detected, it will then auto select the KMS4k method. For builds lower than 19041, the script will auto select ZeroCID. :: In builds 26100 and later, the script will auto select StaticCID (requires internet). If no internet is detected, it will then auto select the KMS4k method. For builds lower than 26100, the script will auto select ZeroCID.
:: To change the activation method, run the script with the parameters "/Z-SCID", "/Z-ZCID", or "/Z-KMS4k", or modify the option from Auto to SCID, ZCID, or KMS4k in the line below. :: To change the activation method, run the script with the parameters "/Z-SCID", "/Z-ZCID", or "/Z-KMS4k", or modify the option from Auto to SCID, ZCID, or KMS4k in the line below.
set _actmethod=Auto set _actmethod=Auto
@ -545,8 +545,8 @@ echo:
echo ______________________________________________________________ echo ______________________________________________________________
echo: echo:
call :dk_color2 %_White% " [1] " %_Green% "Auto" call :dk_color2 %_White% " [1] " %_Green% "Auto"
echo Builds ^>= 19041 - StaticCID (KMS4k if offline) echo Builds ^>= 26100 - StaticCID (KMS4k if offline)
echo Builds ^< 19041 - ZeroCID echo Builds ^< 26100 - ZeroCID
echo __________________________________________________ echo __________________________________________________
echo: echo:
echo [2] StaticCID echo [2] StaticCID
@ -555,8 +555,7 @@ echo Not for Windows 7 or older
echo __________________________________________________ echo __________________________________________________
echo: echo:
echo [3] ZeroCID echo [3] ZeroCID
echo Works reliably on builds below 19041 echo Works reliably on builds below 26100
echo May break on builds between 19041-26100
echo Does not work on builds above 26100.4188 echo Does not work on builds above 26100.4188
echo __________________________________________________ echo __________________________________________________
echo: echo:
@ -668,7 +667,7 @@ if /i %_actmethod%==ZCID set tsmethod=ZeroCID
if /i %_actmethod%==KMS4k set tsmethod=KMS4k if /i %_actmethod%==KMS4k set tsmethod=KMS4k
if /i %_actmethod%==Auto ( if /i %_actmethod%==Auto (
if %winbuild% GEQ 19041 ( if %winbuild% GEQ 26100 (
set tsmethod=StaticCID set tsmethod=StaticCID
) else ( ) else (
set tsmethod=ZeroCID set tsmethod=ZeroCID
@ -3610,19 +3609,22 @@ call :dk_color %Gray% "Checking SkipRearm [Default 0 Value
if %winbuild% GEQ 9200 if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" ( if %winbuild% GEQ 9200 if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" (
%psc% "Get-WmiObject -Query 'SELECT Description FROM SoftwareLicensingProduct WHERE PartialProductKey IS NOT NULL AND LicenseDependsOn IS NULL' | Select-Object -Property Description" %nul2% | findstr /i "KMS_" %nul1% || ( %psc% "Get-WmiObject -Query 'SELECT Description FROM SoftwareLicensingProduct WHERE PartialProductKey IS NOT NULL AND LicenseDependsOn IS NULL' | Select-Object -Property Description" %nul2% | findstr /i "KMS_" %nul1% || (
for /f "delims=" %%a in ('%psc% "(Get-ScheduledTask -TaskName 'SvcRestartTask' -TaskPath '\Microsoft\Windows\SoftwareProtectionPlatform\').State" %nul6%') do (set taskinfo=%%a) for /f "delims=" %%a in ('%psc% "$s=New-Object -ComObject 'Schedule.Service'; $s.Connect(); $state=$s.GetFolder('\Microsoft\Windows\SoftwareProtectionPlatform').GetTask('SvcRestartTask').State; @{0='Unknown';1='Disabled';2='Queued';3='Ready';4='Running'}[$state]" %nul6%') do (set taskinfo=%%a)
echo !taskinfo! | find /i "Ready" %nul% || ( echo !taskinfo! | find /i "Ready" %nul% || (
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "actionlist" /f %nul% reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "actionlist" /f %nul%
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Microsoft\Windows\SoftwareProtectionPlatform\SvcRestartTask" %nul% || set taskinfo=Removed reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Microsoft\Windows\SoftwareProtectionPlatform\SvcRestartTask" %nul% || set taskinfo=Removed
if "!taskinfo!"=="" set "taskinfo=Not Found" if "!taskinfo!"=="" set "taskinfo=Not Found"
call :dk_color %Red% "Checking SvcRestartTask Status [!taskinfo!, system might deactivate later]" call :dk_color %Gray% "Checking SvcRestartTask Status [!taskinfo!. System might deactivate later.]"
if not defined showfix ( if not defined showfix (
echo: echo:
echo "!taskinfo!" | findstr /i "Removed Not Found" %nul1% && (
set fixes=%fixes% %mas%in-place_repair_upgrade
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%in-place_repair_upgrade"
) || (
call :dk_color %Blue% "Reboot your machine using the restart option and run the script again." call :dk_color %Blue% "Reboot your machine using the restart option and run the script again."
set fixes=%fixes% %mas%troubleshoot )
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
echo: echo:
) )
) )
@ -3952,7 +3954,7 @@ using System.Xml.Linq;
} }
#endif #endif
// Common.cs // LibTSforge/Common.cs
namespace LibTSforge namespace LibTSforge
{ {
using System; using System;
@ -4194,7 +4196,7 @@ namespace LibTSforge
} }
// SPP/PKeyConfig.cs // LibTSforge/SPP/PKeyConfig.cs
namespace LibTSforge.SPP namespace LibTSforge.SPP
{ {
using System; using System;
@ -4220,7 +4222,7 @@ namespace LibTSforge.SPP
public bool Contains(int n) public bool Contains(int n)
{ {
return Start <= n && End <= n; return Start <= n && n <= End;
} }
} }
@ -4350,10 +4352,19 @@ namespace LibTSforge.SPP
string refActIdStr = configNode.SelectSingleNode("./p:ActConfigId", nsmgr).InnerText; string refActIdStr = configNode.SelectSingleNode("./p:ActConfigId", nsmgr).InnerText;
Guid refActId = new Guid(refActIdStr); Guid refActId = new Guid(refActIdStr);
int group = int.Parse(configNode.SelectSingleNode("./p:RefGroupId", nsmgr).InnerText); int group = int.Parse(configNode.SelectSingleNode("./p:RefGroupId", nsmgr).InnerText);
List<KeyRange> keyRanges = ranges[refActIdStr]; List<KeyRange> keyRanges;
ranges.TryGetValue(refActIdStr, out keyRanges);
if (keyRanges == null)
{
continue;
}
if (keyRanges.Count > 0 && !Products.ContainsKey(refActId)) if (keyRanges.Count > 0 && !Products.ContainsKey(refActId))
{ {
PKeyAlgorithm algorithm;
algorithms.TryGetValue(group, out algorithm);
ProductConfig productConfig = new ProductConfig ProductConfig productConfig = new ProductConfig
{ {
GroupId = group, GroupId = group,
@ -4361,7 +4372,7 @@ namespace LibTSforge.SPP
Description = configNode.SelectSingleNode("./p:ProductDescription", nsmgr).InnerText, Description = configNode.SelectSingleNode("./p:ProductDescription", nsmgr).InnerText,
Channel = configNode.SelectSingleNode("./p:ProductKeyType", nsmgr).InnerText, Channel = configNode.SelectSingleNode("./p:ProductKeyType", nsmgr).InnerText,
Randomized = configNode.SelectSingleNode("./p:ProductKeyType", nsmgr).InnerText.ToLower() == "true", Randomized = configNode.SelectSingleNode("./p:ProductKeyType", nsmgr).InnerText.ToLower() == "true",
Algorithm = algorithms[group], Algorithm = algorithm,
Ranges = keyRanges, Ranges = keyRanges,
ActivationId = refActId ActivationId = refActId
}; };
@ -4411,7 +4422,7 @@ namespace LibTSforge.SPP
} }
// SPP/ProductKey.cs // LibTSforge/SPP/ProductKey.cs
namespace LibTSforge.SPP namespace LibTSforge.SPP
{ {
using System; using System;
@ -4727,7 +4738,7 @@ namespace LibTSforge.SPP
} }
// SPP/SLAPI.cs // LibTSforge/SPP/SLAPI.cs
namespace LibTSforge.SPP namespace LibTSforge.SPP
{ {
using System; using System;
@ -5140,7 +5151,7 @@ namespace LibTSforge.SPP
} }
// SPP/SPPUtils.cs // LibTSforge/SPP/SPPUtils.cs
namespace LibTSforge.SPP namespace LibTSforge.SPP
{ {
using Microsoft.Win32; using Microsoft.Win32;
@ -5477,7 +5488,7 @@ namespace LibTSforge.SPP
} }
// SPP/SPSys.cs // LibTSforge/SPP/SPSys.cs
namespace LibTSforge.SPP namespace LibTSforge.SPP
{ {
using Microsoft.Win32.SafeHandles; using Microsoft.Win32.SafeHandles;
@ -5524,7 +5535,7 @@ namespace LibTSforge.SPP
} }
// Crypto/CryptoUtils.cs // LibTSforge/Crypto/CryptoUtils.cs
namespace LibTSforge.Crypto namespace LibTSforge.Crypto
{ {
using System; using System;
@ -5659,7 +5670,7 @@ namespace LibTSforge.Crypto
} }
// Crypto/Keys.cs // LibTSforge/Crypto/Keys.cs
namespace LibTSforge.Crypto namespace LibTSforge.Crypto
{ {
public static class Keys public static class Keys
@ -5749,7 +5760,7 @@ namespace LibTSforge.Crypto
} }
// Crypto/PhysStoreCrypto.cs // LibTSforge/Crypto/PhysStoreCrypto.cs
namespace LibTSforge.Crypto namespace LibTSforge.Crypto
{ {
using System; using System;
@ -5834,7 +5845,7 @@ namespace LibTSforge.Crypto
} }
// Modifiers/GenPKeyInstall.cs // LibTSforge/Modifiers/GenPKeyInstall.cs
namespace LibTSforge.Modifiers namespace LibTSforge.Modifiers
{ {
using System; using System;
@ -6045,7 +6056,7 @@ namespace LibTSforge.Modifiers
} }
// Modifiers/GracePeriodReset.cs // LibTSforge/Modifiers/GracePeriodReset.cs
namespace LibTSforge.Modifiers namespace LibTSforge.Modifiers
{ {
using System.Collections.Generic; using System.Collections.Generic;
@ -6078,7 +6089,7 @@ namespace LibTSforge.Modifiers
} }
// Modifiers/KeyChangeLockDelete.cs // LibTSforge/Modifiers/KeyChangeLockDelete.cs
namespace LibTSforge.Modifiers namespace LibTSforge.Modifiers
{ {
using System.Collections.Generic; using System.Collections.Generic;
@ -6118,7 +6129,7 @@ namespace LibTSforge.Modifiers
} }
// Modifiers/KMSHostCharge.cs // LibTSforge/Modifiers/KMSHostCharge.cs
namespace LibTSforge.Modifiers namespace LibTSforge.Modifiers
{ {
using System; using System;
@ -6279,7 +6290,7 @@ namespace LibTSforge.Modifiers
} }
// Modifiers/RearmReset.cs // LibTSforge/Modifiers/RearmReset.cs
namespace LibTSforge.Modifiers namespace LibTSforge.Modifiers
{ {
using System.Collections.Generic; using System.Collections.Generic;
@ -6335,7 +6346,7 @@ namespace LibTSforge.Modifiers
} }
// Modifiers/SetIIDParams.cs // LibTSforge/Modifiers/SetIIDParams.cs
namespace LibTSforge.Modifiers namespace LibTSforge.Modifiers
{ {
using PhysicalStore; using PhysicalStore;
@ -6404,7 +6415,7 @@ namespace LibTSforge.Modifiers
} }
// Modifiers/TamperedFlagsDelete.cs // LibTSforge/Modifiers/TamperedFlagsDelete.cs
namespace LibTSforge.Modifiers namespace LibTSforge.Modifiers
{ {
using System.Linq; using System.Linq;
@ -6454,7 +6465,7 @@ namespace LibTSforge.Modifiers
} }
// Modifiers/UniqueIdDelete.cs // LibTSforge/Modifiers/UniqueIdDelete.cs
namespace LibTSforge.Modifiers namespace LibTSforge.Modifiers
{ {
using System; using System;
@ -6513,7 +6524,7 @@ namespace LibTSforge.Modifiers
} }
// Activators/KMS4K.cs // LibTSforge/Activators/KMS4K.cs
namespace LibTSforge.Activators namespace LibTSforge.Activators
{ {
using System; using System;
@ -6724,7 +6735,7 @@ namespace LibTSforge.Activators
} }
// Activators/ZeroCID.cs // LibTSforge/Activators/ZeroCID.cs
namespace LibTSforge.Activators namespace LibTSforge.Activators
{ {
using System; using System;
@ -6913,7 +6924,7 @@ namespace LibTSforge.Activators
} }
// TokenStore/Common.cs // LibTSforge/TokenStore/Common.cs
namespace LibTSforge.TokenStore namespace LibTSforge.TokenStore
{ {
using System.Collections.Generic; using System.Collections.Generic;
@ -6983,7 +6994,7 @@ namespace LibTSforge.TokenStore
} }
// TokenStore/ITokenStore.cs // LibTSforge/TokenStore/ITokenStore.cs
namespace LibTSforge.TokenStore namespace LibTSforge.TokenStore
{ {
using System; using System;
@ -7003,7 +7014,7 @@ namespace LibTSforge.TokenStore
} }
// TokenStore/TokenStoreModern.cs // LibTSforge/TokenStore/TokenStoreModern.cs
namespace LibTSforge.TokenStore namespace LibTSforge.TokenStore
{ {
using System; using System;
@ -7289,7 +7300,7 @@ namespace LibTSforge.TokenStore
} }
// PhysicalStore/Common.cs // LibTSforge/PhysicalStore/Common.cs
namespace LibTSforge.PhysicalStore namespace LibTSforge.PhysicalStore
{ {
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
@ -7320,7 +7331,7 @@ namespace LibTSforge.PhysicalStore
} }
// PhysicalStore/IPhysicalStore.cs // LibTSforge/PhysicalStore/IPhysicalStore.cs
namespace LibTSforge.PhysicalStore namespace LibTSforge.PhysicalStore
{ {
using System; using System;
@ -7415,7 +7426,7 @@ namespace LibTSforge.PhysicalStore
} }
// PhysicalStore/PhysicalStoreModern.cs // LibTSforge/PhysicalStore/PhysicalStoreModern.cs
namespace LibTSforge.PhysicalStore namespace LibTSforge.PhysicalStore
{ {
using System; using System;
@ -7833,7 +7844,7 @@ namespace LibTSforge.PhysicalStore
} }
// PhysicalStore/PhysicalStoreVista.cs // LibTSforge/PhysicalStore/PhysicalStoreVista.cs
namespace LibTSforge.PhysicalStore namespace LibTSforge.PhysicalStore
{ {
using System; using System;
@ -8192,7 +8203,7 @@ namespace LibTSforge.PhysicalStore
} }
// PhysicalStore/PhysicalStoreWin7.cs // LibTSforge/PhysicalStore/PhysicalStoreWin7.cs
namespace LibTSforge.PhysicalStore namespace LibTSforge.PhysicalStore
{ {
using System; using System;
@ -8569,7 +8580,7 @@ namespace LibTSforge.PhysicalStore
} }
// PhysicalStore/VariableBag.cs // LibTSforge/PhysicalStore/VariableBag.cs
namespace LibTSforge.PhysicalStore namespace LibTSforge.PhysicalStore
{ {
using System; using System;

View File

@ -1,4 +1,4 @@
@set masver=3.5 @set masver=3.6
@echo off @echo off

View File

@ -1,4 +1,4 @@
@set masver=3.5 @set masver=3.6
@echo off @echo off

View File

@ -1,4 +1,4 @@
@set masver=3.5 @set masver=3.6
@echo off @echo off

View File

@ -1,4 +1,4 @@
@set masver=3.5 @set masver=3.6
@echo off @echo off

View File

@ -84,8 +84,8 @@ or
--- ---
``` ```
Latest Version: 3.5 Latest Version: 3.6
Release date: 10-Aug-2025 Release date: 9-Sep-2025
``` ```
### [Troubleshooting / Help](https://massgrave.dev/troubleshoot) ### [Troubleshooting / Help](https://massgrave.dev/troubleshoot)