Compare commits

..

No commits in common. "05c4f881efec946c0040cdd552d1afa9a519704b" and "166814e52d10204aaa5c3c7db03a3dae9d866509" have entirely different histories.

10 changed files with 270 additions and 312 deletions

View File

@ -3,7 +3,7 @@
@::Is a real person even the one deciding to flag this or is it Copilot told to flag anything it decides not to like?
@::If a campaign is using this script as a cover, please flag parts of the campaign instead of the script. This isn't the first time we experienced collateral damage due to campaigns completely unrelated to us.
@::If you disagree that MAS is not malicious, we would appreciate if you contacted us to explain what constitutes MAS as "Sonbokli" and we'll look into it. Thank you.
@set masver=3.12
@set masver=3.11
@setlocal DisableDelayedExpansion
@echo off
@ -41,20 +41,9 @@ set "Path=%SystemRoot%\Sysnative;%SystemRoot%;%SystemRoot%\Sysnative\Wbem;%Syste
set "ComSpec=%SysPath%\cmd.exe"
set "PSModulePath=%ProgramFiles%\WindowsPowerShell\Modules;%SysPath%\WindowsPowerShell\v1.0\Modules"
cd /d "%SysPath%"
:: Workaround for https://github.com/microsoft/terminal/issues/15212, when %0 starts with a quote %0 parameter expansion is not specialcased.
:: Changing %0 to something that is not quoted bypasses the issue.
goto arg_workaround_end
:arg_workaround
set "_cmdf=%~f0"
exit /b
:arg_workaround_end
call :arg_workaround
set re1=
set re2=
set "_cmdf=%~f0"
for %%# in (%*) do (
if /i "%%#"=="re1" set re1=1
if /i "%%#"=="re2" set re2=1
@ -102,7 +91,8 @@ cls
:: Check LF line ending
>nul findstr /v "$" "%_cmdf%" && (
pushd "%~dp0"
>nul findstr /v "$" "%~nx0" && (
echo:
echo Error - Script either has LF line ending issue or an empty line at the end of the script is missing.
echo:
@ -111,8 +101,10 @@ echo Check this webpage for help - %mas%troubleshoot
echo:
echo:
ping 127.0.0.1 -n 20 >nul
popd
exit /b
)
popd
::========================================================================================================================================
@ -196,9 +188,10 @@ goto dk_done
set "_work=%~dp0"
if "%_work:~-1%"=="\" set "_work=%_work:~0,-1%"
set "_batp=%_cmdf:'=''%"
set "_batf=%~f0"
set "_batp=%_batf:'=''%"
set _PSarg="""%_cmdf%""" -el %_args%
set _PSarg="""%~f0""" -el %_args%
set _PSarg=%_PSarg:'=''%
set "_ttemp=%userprofile%\AppData\Local\Temp"
@ -207,7 +200,7 @@ setlocal EnableDelayedExpansion
::========================================================================================================================================
echo "!_cmdf!" | find /i "!_ttemp!" %nul1% && (
echo "!_batf!" | find /i "!_ttemp!" %nul1% && (
if /i not "!_work!"=="!_ttemp!" (
%eline%
echo The script was launched from the temp folder.
@ -337,11 +330,11 @@ reg query HKCU\Console /v QuickEdit %nul2% | find /i "0x0" %nul1% && set resetQE
reg add HKCU\Console /v QuickEdit /t REG_DWORD /d 0 /f %nul1%
if defined terminal (
start conhost.exe "!_cmdf!" %_args% -qedit
start conhost.exe "!_batf!" %_args% -qedit
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
exit /b
) else if %resetQE% EQU 1 (
start cmd.exe /c ""!_cmdf!" %_args% -qedit"
start cmd.exe /c ""!_batf!" %_args% -qedit"
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
exit /b
)
@ -2338,7 +2331,7 @@ set key=%%B
REM Generate ticket
if %1==ticket if "%key%"=="%%B" (
set "SessionIdStr=OSMajorVersion=5;OSMinorVersion=1;OSPlatformId=2;PP=0;Pfn=Microsoft.Windows.%%C.%%D_8wekyb3d8bbwe;PKeyIID=221306452340115677963964261259250411589493550039199940431586886;"
set "SessionIdStr=OSMajorVersion=5;OSMinorVersion=1;OSPlatformId=2;PP=0;Pfn=Microsoft.Windows.%%C.%%D_8wekyb3d8bbwe;PKeyIID=465145217131314304264339481117862266242033457260311819664735280;"
%psc% "$f=[IO.File]::ReadAllText('!_batp!') -split ':sign\:.*';. ([scriptblock]::Create($f[1]))"
)
@ -3236,9 +3229,18 @@ set ierror=mklink sppcs.dll
goto :oh_hookinstall_error
)
set exhook=
if exist "!_work!\BIN\%_hook%" set exhook=1
if not exist "%_hookPath%\sppc.dll" (
if defined exhook (
pushd "!_work!\BIN\"
copy /y /b "%_hook%" "%_hookPath%\sppc.dll" %nul%
popd
) else (
call :oh_extractdll "%_hookPath%\sppc.dll" "%offset%"
)
)
if not exist "%_hookPath%\sppc.dll" (
set ierror=Copy
goto :oh_hookinstall_error
@ -3246,7 +3248,11 @@ goto :oh_hookinstall_error
echo:
echo Symlinking System's sppc.dll ["%_hookPath%\sppcs.dll"] [Successful]
if defined exhook (
echo Copying Custom %_hook% to ["%_hookPath%\sppc.dll"] [Successful]
) else (
echo Extracting Custom %_hook% to ["%_hookPath%\sppc.dll"] [Successful]
)
goto :oh_hookinstall_error
@ -3312,8 +3318,18 @@ set ierror=mklink sppcs.dll
goto :oh_hookinstall_error
)
set exhook=
if exist "!_work!\BIN\%_hook68%" if exist "!_work!\BIN\%_hook86%" set exhook=1
if defined exhook (
pushd "!_work!\BIN\"
if defined _osppPath68 (copy /y /b "%_hook68%" "%_osppPath68%\OSPPC.DLL" %nul%)
if defined _osppPath86 (copy /y /b "%_hook86%" "%_osppPath86%\OSPPC.DLL" %nul%)
popd
) else (
if defined _osppPath68 (set _hook=%_hook68%&call :oh_extractdll "%_osppPath68%\OSPPC.DLL" "%offset68%")
if defined _osppPath86 (set _hook=%_hook86%&call :oh_extractdll "%_osppPath86%\OSPPC.DLL" "%offset86%")
)
if defined _osppPath68 (if not exist "%_osppPath68%\OSPPC.DLL" set ierror=1)
if defined _osppPath86 (if not exist "%_osppPath86%\OSPPC.DLL" set ierror=1)
@ -3326,8 +3342,13 @@ goto :oh_hookinstall_error
echo:
if defined _osppPath68 (echo Renaming OSPPC.DLL to sppcs.dll ["%_osppPath68%\sppcs.dll"])
if defined _osppPath86 (echo Renaming OSPPC.DLL to sppcs.dll ["%_osppPath86%\sppcs.dll"])
if defined exhook (
if defined _osppPath68 (echo Copying Custom %_hook68% to ["%_osppPath68%\OSPPC.DLL"])
if defined _osppPath86 (echo Copying Custom %_hook86% to ["%_osppPath86%\OSPPC.DLL"])
) else (
if defined _osppPath68 (echo Extracting Custom %_hook68% to ["%_osppPath68%\OSPPC.DLL"])
if defined _osppPath86 (echo Extracting Custom %_hook86% to ["%_osppPath86%\OSPPC.DLL"])
)
echo Symlinking Renamed sppcs.dll ["%_hookPath%\sppcs.dll"]
@ -4075,7 +4096,7 @@ $Writer.Write($unixTimestamp)
$Writer.Flush()
# Write the current state of the MemoryStream to a temporary file
$tempFilePath = "$env:windir\Temp\$([Guid]::NewGuid().Guid)"
$tempFilePath = "$env:windir\Temp\$([System.IO.Path]::GetRandomFileName())"
[IO.File]::WriteAllBytes($tempFilePath, $MemoryStream.ToArray())
# Update hash using the temporary file
@ -4129,6 +4150,12 @@ $MemoryStream.Close()
::
::========================================================================================================================================
::
:: If you want to use a different sppc.dll or without base64 format, then create a folder named "BIN" where this script is located and
:: place these two files in that "BIN" folder. sppc32.dll, sppc64.dll
:: Script will auto pick that instead of using the below from base64 section. You can also delete the below code in that case.
::
::========================================================================================================================================
::
:: Replace "-" with "A" and "_" with "a" before base64 conversion
:: It was changed to prevent antiviruses from detecting and flagging base64 encoding
@ -4440,9 +4467,7 @@ echo:
echo ______________________________________________________________
echo:
call :dk_color2 %_White% " [1] " %_Green% "Auto"
echo Builds ^>= 26100 - Windows only - KMS4k
echo Other options - StaticCID
echo:
echo Builds ^>= 26100 - StaticCID (KMS4k if offline)
echo Builds ^< 26100 - ZeroCID
echo __________________________________________________
echo:
@ -4563,9 +4588,6 @@ if /i %_actmethod%==KMS4k set tsmethod=KMS4k
if /i %_actmethod%==Auto (
if %winbuild% GEQ 26100 (
set tsmethod=StaticCID
if !_actwin!==1 if not !_actwinesuoff!==1 (
set tsmethod=KMS4k
)
) else (
set tsmethod=ZeroCID
)
@ -4681,7 +4703,7 @@ call :dk_color %Red% "Checking Activation ID [Not Found] [%tsed
set error=1
if /i %tsmethod%==KMS4k (
if /i %_actmethod%==Auto (
call :dk_color %Blue% "Return to the previous menu and select StaticCID activation method. Internet connection is required to activate."
call :dk_color %Blue% "Connect to the Internet and try again. Script will use the StaticCID activation method."
) else (
call :dk_color %Blue% "Use non-KMS4K activation options from the previous menu."
)
@ -5853,7 +5875,7 @@ if %_actman%==0 (if not defined showfix call :dk_color %Blue% "%_fixmsg%")
set fixes=%fixes% %mas%troubleshoot
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
) else (
if /i %tsmethod%==KMS4k if %winbuild% GEQ 26100 if %_actwin%==1 (
if /i %tsmethod%==KMS4k if %winbuild% GEQ 26100 (
echo:
call :dk_color %Gray% "In Windows settings, you may see a renewal notification for activation that can be ignored."
if /i %_actmethod%==Auto call :dk_color %Gray% "To avoid this notification, run the script with an internet connection to use the StaticCID method."
@ -11239,27 +11261,27 @@ namespace LibTSforge.PhysicalStore
}
'@
$ErrorActionPreference = 'Stop'
$binPath = "$env:_work\BIN\LibTSforge.dll"
$psMajorVer = (Get-Host).Version.Major
$build = [System.Environment]::OSVersion.Version.Build
if (Test-Path -LiteralPath $binPath) {
Write-Host "LibTSforge.dll found in BIN folder. Loading the DLL..."
Add-Type -Path $binPath
}
else {
$cp = [CodeDom.Compiler.CompilerParameters] [string[]]@("System.dll", "System.Core.dll", "System.ServiceProcess.dll", "System.Xml.dll", "System.Xml.Linq.dll")
if ($psMajorVer -le 2) { $cp.CompilerOptions = "/define:POWERSHELL2 /unsafe" } else { $cp.CompilerOptions = "/unsafe" }
$lang = if ($psMajorVer -gt 2) { "CSharp" } else { "CSharpVersion3" }
$ctemp = "$env:SystemRoot\Temp\$([Guid]::NewGuid().Guid)\"
$ctemp = "$env:SystemRoot\Temp\"
if (-Not (Test-Path -Path $ctemp)) { New-Item -Path $ctemp -ItemType Directory > $null }
$env:TMP = $ctemp
$env:TEMP = $ctemp
$cp.GenerateInMemory = $true
Add-Type -Language $lang -TypeDefinition $src -CompilerParameters $cp
try {
$cp.TempFiles.Dispose()
} catch {
# Older .NET Framework versions do not have that method, but they also don't create the folder that it removes.
}
Remove-Item -Path $ctemp
if ($env:_debug -eq '0') {
[LibTSforge.Logger]::HideOutput = $true
@ -11361,7 +11383,7 @@ if (-not $env:resetstuff) {
if ($env:tsmethod -eq "KMS4k") {
if ($build -ge 26100) {
Write-Host "[$prodName] is activated with KMS4k for over 4,000 years." -ForegroundColor White -BackgroundColor DarkGreen
Write-Host "From build 26100.7019, Windows will always display a remaining activation period of 180 days in Settings." -ForegroundColor White -BackgroundColor Darkgray
Write-Host "From build 26100.7019, Windows will always display and stay at 180 days remaining if the actual period is longer." -ForegroundColor White -BackgroundColor Darkgray
}
else {
Write-Host "[$prodName] is activated till $([DateTime]::Now.AddMinutes($GracePeriodStatus).ToString('yyyy-MM-dd HH:mm:ss')) with $env:tsmethod." -ForegroundColor White -BackgroundColor DarkGreen
@ -16879,8 +16901,8 @@ goto :at_menu
:: https://stackoverflow.com/a/46268232
for /f %%G in ('%psc% "[Guid]::NewGuid().Guid"') do set "randguid=%%G"
set "ddf="%SystemRoot%\Temp\%Random%%randguid%""
set "ddf="%SystemRoot%\Temp\%Random%%Random%%Random%%Random%""
%nul% del /q /f %ddf%
echo/.New Cabinet>%ddf%
echo/.set Cabinet=ON>>%ddf%
echo/.set CabinetFileCountThreshold=0;>>%ddf%
@ -16902,6 +16924,7 @@ for /f "tokens=* delims=" %%D in ('dir /a:-D/b/s "%SystemRoot%\logs\%1"') do (
echo/"%%~fD" /inf=no;>>%ddf%
)
makecab /F %ddf% /D DiskDirectory1="" /D CabinetNameTemplate="!desktop!\%2_%_time%.cab"
del /q /f %ddf%
exit /b
::========================================================================================================================================
@ -17867,7 +17890,7 @@ if($false -eq ($installCandidates.Keys -contains $SetEdition)) {
Exit 1
}
$xmlPath = $Env:SystemRoot + '\Temp' + "\$([Guid]::NewGuid().Guid)CbsUpgrade.xml"
$xmlPath = $Env:SystemRoot + '\Temp' + '\CbsUpgrade.xml'
Write-UpgradeXml -RemovalCandidates $removalCandidates `
-InstallCandidates $installCandidates[$SetEdition] `
@ -18161,18 +18184,6 @@ call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%trouble
goto dk_done
)
set "o_randguid="
for /f %%G in ('%psc% "[Guid]::NewGuid().Guid" ^| findstr /r "^[0123456789abcdef]*-[0123456789abcdef]*-[0123456789abcdef]*-[0123456789abcdef]*-[0123456789abcdef]*$"') do set "o_randguid=%%G"
if not defined o_randguid (
%eline%
echo Unable to generate GUID with PowerShell.
echo Aborting...
set fixes=%fixes% %mas%troubleshoot
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
goto dk_done
)
md "%SystemRoot%\Temp\%o_randguid%\"
::========================================================================================================================================
:oemenu
@ -18271,7 +18282,7 @@ mode 98, 45
%psc% "&{$W=$Host.UI.RawUI.WindowSize;$B=$Host.UI.RawUI.BufferSize;$W.Height=44;$B.Height=100;$Host.UI.RawUI.WindowSize=$W;$Host.UI.RawUI.BufferSize=$B;}" %nul%
)
if not exist %SystemRoot%\Temp\%o_randguid%\%list%.txt (
if not exist %SystemRoot%\Temp\%list%.txt (
%eline%
echo Failed to generate available editions list.
set fixes=%fixes% %mas%troubleshoot
@ -18293,7 +18304,7 @@ if %winbuild% LSS 10240 (
echo Unsupported products such as 2019/2021/2024 are excluded from this list.
) else (
for %%# in (2019 2021 2024) do (
find /i "%%#" "%SystemRoot%\Temp\%o_randguid%\%list%.txt" %nul1% || (
find /i "%%#" "%SystemRoot%\Temp\%list%.txt" %nul1% || (
if defined _notfound (set _notfound=%%#, !_notfound!) else (set _notfound=%%#)
)
)
@ -18302,7 +18313,7 @@ if defined _notfound call :dk_color %Gray% "Office !_notfound! is not in this li
%line%
echo:
for /f "usebackq delims=" %%A in (%SystemRoot%\Temp\%o_randguid%\%list%.txt) do (
for /f "usebackq delims=" %%A in (%SystemRoot%\Temp\%list%.txt) do (
set /a counter+=1
if !counter! LSS 10 (
echo [!counter!] %%A
@ -18335,7 +18346,7 @@ set suites=
echo %list% | find /i "Suites" %nul1% && (
set suites=1
%psc% "$f=[IO.File]::ReadAllText('!_batp!') -split ':getappnames\:.*';. ([scriptblock]::Create($f[1]))"
if not exist %SystemRoot%\Temp\%o_randguid%\getAppIds.txt (
if not exist %SystemRoot%\Temp\getAppIds.txt (
%eline%
echo Failed to generate available apps list.
set fixes=%fixes% %mas%troubleshoot
@ -18357,7 +18368,7 @@ Visio
Word
) do (
if defined suites (
find /i "%%#" "%SystemRoot%\Temp\%o_randguid%\getAppIds.txt" %nul1% && (set %%#_st=On) || (set %%#_st=)
find /i "%%#" "%SystemRoot%\Temp\getAppIds.txt" %nul1% && (set %%#_st=On) || (set %%#_st=)
) else (
set %%#_st=
)
@ -18981,11 +18992,11 @@ exit /b
:oe_tempcleanup
del %SystemRoot%\Temp\%o_randguid%\SingleApps_Volume.txt %nul%
del %SystemRoot%\Temp\%o_randguid%\SingleApps_Retail.txt %nul%
del %SystemRoot%\Temp\%o_randguid%\Suites_Volume.txt %nul%
del %SystemRoot%\Temp\%o_randguid%\Suites_Retail.txt %nul%
del %SystemRoot%\Temp\%o_randguid%\getAppIds.txt %nul%
del /f /q %SystemRoot%\Temp\SingleApps_Volume.txt %nul%
del /f /q %SystemRoot%\Temp\SingleApps_Retail.txt %nul%
del /f /q %SystemRoot%\Temp\Suites_Volume.txt %nul%
del /f /q %SystemRoot%\Temp\Suites_Retail.txt %nul%
del /f /q %SystemRoot%\Temp\getAppIds.txt %nul%
exit /b
::========================================================================================================================================
@ -19139,7 +19150,7 @@ if ($windowsBuild -lt 9200) {
:getlist:
$xmlPath1 = $env:_c2rXml
$xmlPath2 = $env:_masterxml
$outputDir = $env:SystemRoot + "\Temp\$env:o_randguid\"
$outputDir = $env:SystemRoot + "\Temp\"
$buildNumber = [System.Environment]::OSVersion.Version.Build
$excludedKeywords = @("2019", "2021", "2024")
$productReleaseIds = @()
@ -19199,7 +19210,7 @@ foreach ($section in $categories.Keys) {
:getappnames:
$xmlPath = $env:_masterxml
$targetSkuId = $env:targetedition
$outputDir = $env:SystemRoot + "\Temp\$env:o_randguid\"
$outputDir = $env:SystemRoot + "\Temp\"
$outputFile = Join-Path -Path $outputDir -ChildPath "getAppIds.txt"
$excludeIds = @("shared", "PowerPivot", "PowerView", "MondoOnly", "OSM", "OSMUX", "Groove", "DCF")

View File

@ -1,4 +1,4 @@
@set masver=3.12
@set masver=3.11
@echo off
@ -43,18 +43,6 @@ set "Path=%SystemRoot%\Sysnative;%SystemRoot%;%SystemRoot%\Sysnative\Wbem;%Syste
set "ComSpec=%SysPath%\cmd.exe"
set "PSModulePath=%ProgramFiles%\WindowsPowerShell\Modules;%SysPath%\WindowsPowerShell\v1.0\Modules"
cd /d "%SysPath%"
:: Workaround for https://github.com/microsoft/terminal/issues/15212, when %0 starts with a quote %0 parameter expansion is not specialcased.
:: Changing %0 to something that is not quoted bypasses the issue.
goto arg_workaround_end
:arg_workaround
set "_cmdf=%~f0"
exit /b
:arg_workaround_end
call :arg_workaround
set re1=
set re2=
set "_cmdf=%~f0"
@ -132,7 +120,8 @@ cls
:: Check LF line ending
>nul findstr /v "$" "%_cmdf%" && (
pushd "%~dp0"
>nul findstr /v "$" "%~nx0" && (
echo:
echo Error - Script either has LF line ending issue or an empty line at the end of the script is missing.
echo:
@ -141,8 +130,10 @@ echo Check this webpage for help - %mas%troubleshoot
echo:
echo:
ping 127.0.0.1 -n 20 >nul
popd
exit /b
)
popd
::========================================================================================================================================
@ -214,9 +205,10 @@ goto dk_done
set "_work=%~dp0"
if "%_work:~-1%"=="\" set "_work=%_work:~0,-1%"
set "_batp=%_cmdf:'=''%"
set "_batf=%~f0"
set "_batp=%_batf:'=''%"
set _PSarg="""%_cmdf%""" -el %_args%
set _PSarg="""%~f0""" -el %_args%
set _PSarg=%_PSarg:'=''%
set "_ttemp=%userprofile%\AppData\Local\Temp"
@ -225,7 +217,7 @@ setlocal EnableDelayedExpansion
::========================================================================================================================================
echo "!_cmdf!" | find /i "!_ttemp!" %nul1% && (
echo "!_batf!" | find /i "!_ttemp!" %nul1% && (
if /i not "!_work!"=="!_ttemp!" (
%eline%
echo The script was launched from the temp folder.
@ -355,11 +347,11 @@ reg query HKCU\Console /v QuickEdit %nul2% | find /i "0x0" %nul1% && set resetQE
reg add HKCU\Console /v QuickEdit /t REG_DWORD /d 0 /f %nul1%
if defined terminal (
start conhost.exe "!_cmdf!" %_args% -qedit
start conhost.exe "!_batf!" %_args% -qedit
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
exit /b
) else if %resetQE% EQU 1 (
start cmd.exe /c ""!_cmdf!" %_args% -qedit"
start cmd.exe /c ""!_batf!" %_args% -qedit"
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
exit /b
)
@ -415,7 +407,7 @@ title HWID Activation %masver%
echo:
echo Initializing...
echo:
call :dk_chkmal
for %%# in (
sppsvc.exe
@ -1209,15 +1201,15 @@ exit /b
set w=
set results=
if exist "%ProgramFiles%\KM%w%Spico" set pupfound=[KM%w%Spico]
if exist "%ProgramFiles%\KM%w%Spico" set pupfound= KM%w%Spico
if not defined pupfound (
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\taskcache\tasks" /f Path /s | find /i "AutoPico" %nul% && set pupfound=[KM%w%Spico]
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\taskcache\tasks" /f Path /s | find /i "AutoPico" %nul% && set pupfound= KM%w%Spico
)
set hcount=0
for %%# in (avira.com kaspersky.com virustotal.com mcafee.com) do (
find /i "%%#" %SysPath%\drivers\etc\hosts %nul% && set /a hcount+=1)
if %hcount%==4 set "results=[Antivirus Domains Blocked In Hosts File] "
if %hcount%==4 set "results=[Antivirus URLs are blocked in hosts]"
sc start %_slser% %nul%
echo "%errorlevel%" | findstr "577 225" %nul% && (
@ -1227,9 +1219,9 @@ if not exist %SysPath%\%_slexe% if not exist %SysPath%\alg.exe (set "results=%re
)
if not "%results%%pupfound%"=="" (
if defined pupfound call :dk_color %Gray% "Checking PUP Activators %pupfound%"
if defined results call :dk_color %Red% "Checking for Mal%w%ware Infection... %results%"
call :dk_color %Gray% "It is highly likely that your Windows install is infected with mal%w%ware. Windows may fail to activate."
if defined pupfound call :dk_color %Gray% "Checking PUP Activators [Found%pupfound%]"
if defined results call :dk_color %Red% "Checking Probable Mal%w%ware Infection..."
if defined results (call :dk_color %Red% "%results%"&set showfix=1)
set fixes=%fixes% %mas%remove_mal%w%ware
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%remove_mal%w%ware"
echo:
@ -1247,7 +1239,6 @@ exit /b
:dk_errorcheck
echo:
set showfix=
call :dk_chkmal
@ -1947,7 +1938,7 @@ if %_unattended%==1 timeout /t 2 & exit /b
if defined fixes (
call :dk_color %White% "Follow ALL the ABOVE blue lines. "
call :dk_color2 %Blue% "Press [1] to Open Support Webpage " %Gray% " Press [0] to Go Back"
call :dk_color2 %Blue% "Press [1] to Open Support Webpage " %Gray% " Press [0] to Ignore"
choice /C:10 /N
if !errorlevel!==2 exit /b
if !errorlevel!==1 (start %selfgit% & start %github% & for %%# in (%fixes%) do (start %%#))
@ -2029,7 +2020,7 @@ set key=%%B
REM Generate ticket
if %1==ticket if "%key%"=="%%B" (
set "SessionIdStr=OSMajorVersion=5;OSMinorVersion=1;OSPlatformId=2;PP=0;Pfn=Microsoft.Windows.%%C.%%D_8wekyb3d8bbwe;PKeyIID=221306452340115677963964261259250411589493550039199940431586886;"
set "SessionIdStr=OSMajorVersion=5;OSMinorVersion=1;OSPlatformId=2;PP=0;Pfn=Microsoft.Windows.%%C.%%D_8wekyb3d8bbwe;PKeyIID=465145217131314304264339481117862266242033457260311819664735280;"
%psc% "$f=[IO.File]::ReadAllText('!_batp!') -split ':sign\:.*';. ([scriptblock]::Create($f[1]))"
)

View File

@ -1,4 +1,4 @@
@set masver=3.12
@set masver=3.11
@echo off
@ -43,18 +43,6 @@ set "Path=%SystemRoot%\Sysnative;%SystemRoot%;%SystemRoot%\Sysnative\Wbem;%Syste
set "ComSpec=%SysPath%\cmd.exe"
set "PSModulePath=%ProgramFiles%\WindowsPowerShell\Modules;%SysPath%\WindowsPowerShell\v1.0\Modules"
cd /d "%SysPath%"
:: Workaround for https://github.com/microsoft/terminal/issues/15212, when %0 starts with a quote %0 parameter expansion is not specialcased.
:: Changing %0 to something that is not quoted bypasses the issue.
goto arg_workaround_end
:arg_workaround
set "_cmdf=%~f0"
exit /b
:arg_workaround_end
call :arg_workaround
set re1=
set re2=
set "_cmdf=%~f0"
@ -132,7 +120,8 @@ cls
:: Check LF line ending
>nul findstr /v "$" "%_cmdf%" && (
pushd "%~dp0"
>nul findstr /v "$" "%~nx0" && (
echo:
echo Error - Script either has LF line ending issue or an empty line at the end of the script is missing.
echo:
@ -141,8 +130,10 @@ echo Check this webpage for help - %mas%troubleshoot
echo:
echo:
ping 127.0.0.1 -n 20 >nul
popd
exit /b
)
popd
::========================================================================================================================================
@ -223,9 +214,10 @@ goto dk_done
set "_work=%~dp0"
if "%_work:~-1%"=="\" set "_work=%_work:~0,-1%"
set "_batp=%_cmdf:'=''%"
set "_batf=%~f0"
set "_batp=%_batf:'=''%"
set _PSarg="""%_cmdf%""" -el %_args%
set _PSarg="""%~f0""" -el %_args%
set _PSarg=%_PSarg:'=''%
set "_ttemp=%userprofile%\AppData\Local\Temp"
@ -234,7 +226,7 @@ setlocal EnableDelayedExpansion
::========================================================================================================================================
echo "!_cmdf!" | find /i "!_ttemp!" %nul1% && (
echo "!_batf!" | find /i "!_ttemp!" %nul1% && (
if /i not "!_work!"=="!_ttemp!" (
%eline%
echo The script was launched from the temp folder.
@ -364,11 +356,11 @@ reg query HKCU\Console /v QuickEdit %nul2% | find /i "0x0" %nul1% && set resetQE
reg add HKCU\Console /v QuickEdit /t REG_DWORD /d 0 /f %nul1%
if defined terminal (
start conhost.exe "!_cmdf!" %_args% -qedit
start conhost.exe "!_batf!" %_args% -qedit
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
exit /b
) else if %resetQE% EQU 1 (
start cmd.exe /c ""!_cmdf!" %_args% -qedit"
start cmd.exe /c ""!_batf!" %_args% -qedit"
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
exit /b
)
@ -465,7 +457,7 @@ title Ohook Activation %masver%
echo:
echo Initializing...
echo:
call :dk_chkmal
if not exist %SysPath%\%_slexe% (
%eline%
@ -1158,9 +1150,18 @@ set ierror=mklink sppcs.dll
goto :oh_hookinstall_error
)
set exhook=
if exist "!_work!\BIN\%_hook%" set exhook=1
if not exist "%_hookPath%\sppc.dll" (
if defined exhook (
pushd "!_work!\BIN\"
copy /y /b "%_hook%" "%_hookPath%\sppc.dll" %nul%
popd
) else (
call :oh_extractdll "%_hookPath%\sppc.dll" "%offset%"
)
)
if not exist "%_hookPath%\sppc.dll" (
set ierror=Copy
goto :oh_hookinstall_error
@ -1168,7 +1169,11 @@ goto :oh_hookinstall_error
echo:
echo Symlinking System's sppc.dll ["%_hookPath%\sppcs.dll"] [Successful]
if defined exhook (
echo Copying Custom %_hook% to ["%_hookPath%\sppc.dll"] [Successful]
) else (
echo Extracting Custom %_hook% to ["%_hookPath%\sppc.dll"] [Successful]
)
goto :oh_hookinstall_error
@ -1234,8 +1239,18 @@ set ierror=mklink sppcs.dll
goto :oh_hookinstall_error
)
set exhook=
if exist "!_work!\BIN\%_hook68%" if exist "!_work!\BIN\%_hook86%" set exhook=1
if defined exhook (
pushd "!_work!\BIN\"
if defined _osppPath68 (copy /y /b "%_hook68%" "%_osppPath68%\OSPPC.DLL" %nul%)
if defined _osppPath86 (copy /y /b "%_hook86%" "%_osppPath86%\OSPPC.DLL" %nul%)
popd
) else (
if defined _osppPath68 (set _hook=%_hook68%&call :oh_extractdll "%_osppPath68%\OSPPC.DLL" "%offset68%")
if defined _osppPath86 (set _hook=%_hook86%&call :oh_extractdll "%_osppPath86%\OSPPC.DLL" "%offset86%")
)
if defined _osppPath68 (if not exist "%_osppPath68%\OSPPC.DLL" set ierror=1)
if defined _osppPath86 (if not exist "%_osppPath86%\OSPPC.DLL" set ierror=1)
@ -1248,8 +1263,13 @@ goto :oh_hookinstall_error
echo:
if defined _osppPath68 (echo Renaming OSPPC.DLL to sppcs.dll ["%_osppPath68%\sppcs.dll"])
if defined _osppPath86 (echo Renaming OSPPC.DLL to sppcs.dll ["%_osppPath86%\sppcs.dll"])
if defined exhook (
if defined _osppPath68 (echo Copying Custom %_hook68% to ["%_osppPath68%\OSPPC.DLL"])
if defined _osppPath86 (echo Copying Custom %_hook86% to ["%_osppPath86%\OSPPC.DLL"])
) else (
if defined _osppPath68 (echo Extracting Custom %_hook68% to ["%_osppPath68%\OSPPC.DLL"])
if defined _osppPath86 (echo Extracting Custom %_hook86% to ["%_osppPath86%\OSPPC.DLL"])
)
echo Symlinking Renamed sppcs.dll ["%_hookPath%\sppcs.dll"]
@ -1900,19 +1920,19 @@ reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\taskcache\
set hcount=0
for %%# in (avira.com kaspersky.com virustotal.com mcafee.com) do (
find /i "%%#" %SysPath%\drivers\etc\hosts %nul% && set /a hcount+=1)
if %hcount%==4 set "results=Antivirus URLs blocked in hosts file"
if %hcount%==4 set "results=[Antivirus URLs are blocked in hosts]"
sc start %_slser% %nul%
echo "%errorlevel%" | findstr "577 225" %nul% && (
set "results=%results%Likely File Infector"
set "results=%results%[Likely File Infector]"
) || (
if not exist %SysPath%\%_slexe% if not exist %SysPath%\alg.exe (set "results=%results%[Likely File Infector]")
)
if not "%results%%pupfound%"=="" (
if defined pupfound call :dk_color %Gray% "Checking PUP Activators [%pupfound%]"
if defined results call :dk_color %Red% "Checking for Mal%w%ware Infection... [%results%]"
call :dk_color %Gray% "It is highly likely that your Windows install is infected with mal%w%ware. Windows cannot be activated."
if defined pupfound call :dk_color %Gray% "Checking PUP Activators [Found%pupfound%]"
if defined results call :dk_color %Red% "Checking Probable Mal%w%ware Infection..."
if defined results (call :dk_color %Red% "%results%"&set showfix=1)
set fixes=%fixes% %mas%remove_mal%w%ware
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%remove_mal%w%ware"
echo:
@ -2629,7 +2649,7 @@ if %_unattended%==1 timeout /t 2 & exit /b
if defined fixes (
call :dk_color %White% "Follow ALL the ABOVE blue lines. "
call :dk_color2 %Blue% "Press [1] to Open Support Webpage " %Gray% " Press [0] to Go Back"
call :dk_color2 %Blue% "Press [1] to Open Support Webpage " %Gray% " Press [0] to Ignore"
choice /C:10 /N
if !errorlevel!==2 exit /b
if !errorlevel!==1 (start %selfgit% & start %github% & for %%# in (%fixes%) do (start %%#))
@ -3166,7 +3186,7 @@ $Writer.Write($unixTimestamp)
$Writer.Flush()
# Write the current state of the MemoryStream to a temporary file
$tempFilePath = "$env:windir\Temp\$([Guid]::NewGuid().Guid)"
$tempFilePath = "$env:windir\Temp\$([System.IO.Path]::GetRandomFileName())"
[IO.File]::WriteAllBytes($tempFilePath, $MemoryStream.ToArray())
# Update hash using the temporary file
@ -3220,6 +3240,12 @@ $MemoryStream.Close()
::
::========================================================================================================================================
::
:: If you want to use a different sppc.dll or without base64 format, then create a folder named "BIN" where this script is located and
:: place these two files in that "BIN" folder. sppc32.dll, sppc64.dll
:: Script will auto pick that instead of using the below from base64 section. You can also delete the below code in that case.
::
::========================================================================================================================================
::
:: Replace "-" with "A" and "_" with "a" before base64 conversion
:: It was changed to prevent antiviruses from detecting and flagging base64 encoding

View File

@ -1,4 +1,4 @@
@set masver=3.12
@set masver=3.11
@echo off
@ -68,18 +68,6 @@ set "Path=%SystemRoot%\Sysnative;%SystemRoot%;%SystemRoot%\Sysnative\Wbem;%Syste
set "ComSpec=%SysPath%\cmd.exe"
set "PSModulePath=%ProgramFiles%\WindowsPowerShell\Modules;%SysPath%\WindowsPowerShell\v1.0\Modules"
cd /d "%SysPath%"
:: Workaround for https://github.com/microsoft/terminal/issues/15212, when %0 starts with a quote %0 parameter expansion is not specialcased.
:: Changing %0 to something that is not quoted bypasses the issue.
goto arg_workaround_end
:arg_workaround
set "_cmdf=%~f0"
exit /b
:arg_workaround_end
call :arg_workaround
set re1=
set re2=
set "_cmdf=%~f0"
@ -157,7 +145,8 @@ cls
:: Check LF line ending
>nul findstr /v "$" "%_cmdf%" && (
pushd "%~dp0"
>nul findstr /v "$" "%~nx0" && (
echo:
echo Error - Script either has LF line ending issue or an empty line at the end of the script is missing.
echo:
@ -166,8 +155,10 @@ echo Check this webpage for help - %mas%troubleshoot
echo:
echo:
ping 127.0.0.1 -n 20 >nul
popd
exit /b
)
popd
::========================================================================================================================================
@ -254,9 +245,10 @@ goto dk_done
set "_work=%~dp0"
if "%_work:~-1%"=="\" set "_work=%_work:~0,-1%"
set "_batp=%_cmdf:'=''%"
set "_batf=%~f0"
set "_batp=%_batf:'=''%"
set _PSarg="""%_cmdf%""" -el %_args%
set _PSarg="""%~f0""" -el %_args%
set _PSarg=%_PSarg:'=''%
set "_ttemp=%userprofile%\AppData\Local\Temp"
@ -265,7 +257,7 @@ setlocal EnableDelayedExpansion
::========================================================================================================================================
echo "!_cmdf!" | find /i "!_ttemp!" %nul1% && (
echo "!_batf!" | find /i "!_ttemp!" %nul1% && (
if /i not "!_work!"=="!_ttemp!" (
%eline%
echo The script was launched from the temp folder.
@ -395,11 +387,11 @@ reg query HKCU\Console /v QuickEdit %nul2% | find /i "0x0" %nul1% && set resetQE
reg add HKCU\Console /v QuickEdit /t REG_DWORD /d 0 /f %nul1%
if defined terminal (
start conhost.exe "!_cmdf!" %_args% -qedit
start conhost.exe "!_batf!" %_args% -qedit
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
exit /b
) else if %resetQE% EQU 1 (
start cmd.exe /c ""!_cmdf!" %_args% -qedit"
start cmd.exe /c ""!_batf!" %_args% -qedit"
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
exit /b
)
@ -528,7 +520,7 @@ title Online %KS% Activation %masver%
echo:
echo Initializing...
echo:
call :dk_chkmal
if not exist %SysPath%\%_slexe% (
%eline%
@ -2972,19 +2964,19 @@ reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\taskcache\
set hcount=0
for %%# in (avira.com kaspersky.com virustotal.com mcafee.com) do (
find /i "%%#" %SysPath%\drivers\etc\hosts %nul% && set /a hcount+=1)
if %hcount%==4 set "results=Antivirus URLs blocked in hosts file"
if %hcount%==4 set "results=[Antivirus URLs are blocked in hosts]"
sc start %_slser% %nul%
echo "%errorlevel%" | findstr "577 225" %nul% && (
set "results=%results%Likely File Infector"
set "results=%results%[Likely File Infector]"
) || (
if not exist %SysPath%\%_slexe% if not exist %SysPath%\alg.exe (set "results=%results%[Likely File Infector]")
)
if not "%results%%pupfound%"=="" (
if defined pupfound call :dk_color %Gray% "Checking PUP Activators [%pupfound%]"
if defined results call :dk_color %Red% "Checking for Mal%w%ware Infection... [%results%]"
call :dk_color %Gray% "It is highly likely that your Windows install is infected with mal%w%ware. Windows cannot be activated."
if defined pupfound call :dk_color %Gray% "Checking PUP Activators [Found%pupfound%]"
if defined results call :dk_color %Red% "Checking Probable Mal%w%ware Infection..."
if defined results (call :dk_color %Red% "%results%"&set showfix=1)
set fixes=%fixes% %mas%remove_mal%w%ware
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%remove_mal%w%ware"
echo:
@ -3701,7 +3693,7 @@ if %_unattended%==1 timeout /t 2 & exit /b
if defined fixes (
call :dk_color %White% "Follow ALL the ABOVE blue lines. "
call :dk_color2 %Blue% "Press [1] to Open Support Webpage " %Gray% " Press [0] to Go Back"
call :dk_color2 %Blue% "Press [1] to Open Support Webpage " %Gray% " Press [0] to Ignore"
choice /C:10 /N
if !errorlevel!==2 exit /b
if !errorlevel!==1 (start %selfgit% & start %github% & for %%# in (%fixes%) do (start %%#))

View File

@ -1,4 +1,4 @@
@set masver=3.12
@set masver=3.11
@echo off
@ -77,18 +77,6 @@ set "Path=%SystemRoot%\Sysnative;%SystemRoot%;%SystemRoot%\Sysnative\Wbem;%Syste
set "ComSpec=%SysPath%\cmd.exe"
set "PSModulePath=%ProgramFiles%\WindowsPowerShell\Modules;%SysPath%\WindowsPowerShell\v1.0\Modules"
cd /d "%SysPath%"
:: Workaround for https://github.com/microsoft/terminal/issues/15212, when %0 starts with a quote %0 parameter expansion is not specialcased.
:: Changing %0 to something that is not quoted bypasses the issue.
goto arg_workaround_end
:arg_workaround
set "_cmdf=%~f0"
exit /b
:arg_workaround_end
call :arg_workaround
set re1=
set re2=
set "_cmdf=%~f0"
@ -166,7 +154,8 @@ cls
:: Check LF line ending
>nul findstr /v "$" "%_cmdf%" && (
pushd "%~dp0"
>nul findstr /v "$" "%~nx0" && (
echo:
echo Error - Script either has LF line ending issue or an empty line at the end of the script is missing.
echo:
@ -175,8 +164,10 @@ echo Check this webpage for help - %mas%troubleshoot
echo:
echo:
ping 127.0.0.1 -n 20 >nul
popd
exit /b
)
popd
::========================================================================================================================================
@ -280,9 +271,10 @@ goto dk_done
set "_work=%~dp0"
if "%_work:~-1%"=="\" set "_work=%_work:~0,-1%"
set "_batp=%_cmdf:'=''%"
set "_batf=%~f0"
set "_batp=%_batf:'=''%"
set _PSarg="""%_cmdf%""" -el %_args%
set _PSarg="""%~f0""" -el %_args%
set _PSarg=%_PSarg:'=''%
set "_ttemp=%userprofile%\AppData\Local\Temp"
@ -291,7 +283,7 @@ setlocal EnableDelayedExpansion
::========================================================================================================================================
echo "!_cmdf!" | find /i "!_ttemp!" %nul1% && (
echo "!_batf!" | find /i "!_ttemp!" %nul1% && (
if /i not "!_work!"=="!_ttemp!" (
%eline%
echo The script was launched from the temp folder.
@ -421,11 +413,11 @@ reg query HKCU\Console /v QuickEdit %nul2% | find /i "0x0" %nul1% && set resetQE
reg add HKCU\Console /v QuickEdit /t REG_DWORD /d 0 /f %nul1%
if defined terminal (
start conhost.exe "!_cmdf!" %_args% -qedit
start conhost.exe "!_batf!" %_args% -qedit
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
exit /b
) else if %resetQE% EQU 1 (
start cmd.exe /c ""!_cmdf!" %_args% -qedit"
start cmd.exe /c ""!_batf!" %_args% -qedit"
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
exit /b
)
@ -546,9 +538,7 @@ echo:
echo ______________________________________________________________
echo:
call :dk_color2 %_White% " [1] " %_Green% "Auto"
echo Builds ^>= 26100 - Windows only - KMS4k
echo Other options - StaticCID
echo:
echo Builds ^>= 26100 - StaticCID (KMS4k if offline)
echo Builds ^< 26100 - ZeroCID
echo __________________________________________________
echo:
@ -599,7 +589,7 @@ title TSforge Activation %masver%
echo:
echo Initializing...
echo:
call :dk_chkmal
if not exist %SysPath%\%_slexe% (
%eline%
@ -669,9 +659,6 @@ if /i %_actmethod%==KMS4k set tsmethod=KMS4k
if /i %_actmethod%==Auto (
if %winbuild% GEQ 26100 (
set tsmethod=StaticCID
if !_actwin!==1 if not !_actwinesuoff!==1 (
set tsmethod=KMS4k
)
) else (
set tsmethod=ZeroCID
)
@ -787,7 +774,7 @@ call :dk_color %Red% "Checking Activation ID [Not Found] [%tsed
set error=1
if /i %tsmethod%==KMS4k (
if /i %_actmethod%==Auto (
call :dk_color %Blue% "Return to the previous menu and select StaticCID activation method. Internet connection is required to activate."
call :dk_color %Blue% "Connect to the Internet and try again. Script will use the StaticCID activation method."
) else (
call :dk_color %Blue% "Use non-KMS4K activation options from the previous menu."
)
@ -1959,7 +1946,7 @@ if %_actman%==0 (if not defined showfix call :dk_color %Blue% "%_fixmsg%")
set fixes=%fixes% %mas%troubleshoot
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
) else (
if /i %tsmethod%==KMS4k if %winbuild% GEQ 26100 if %_actwin%==1 (
if /i %tsmethod%==KMS4k if %winbuild% GEQ 26100 (
echo:
call :dk_color %Gray% "In Windows settings, you may see a renewal notification for activation that can be ignored."
if /i %_actmethod%==Auto call :dk_color %Gray% "To avoid this notification, run the script with an internet connection to use the StaticCID method."
@ -2994,19 +2981,19 @@ reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\taskcache\
set hcount=0
for %%# in (avira.com kaspersky.com virustotal.com mcafee.com) do (
find /i "%%#" %SysPath%\drivers\etc\hosts %nul% && set /a hcount+=1)
if %hcount%==4 set "results=Antivirus URLs blocked in hosts file"
if %hcount%==4 set "results=[Antivirus URLs are blocked in hosts]"
sc start %_slser% %nul%
echo "%errorlevel%" | findstr "577 225" %nul% && (
set "results=%results%Likely File Infector"
set "results=%results%[Likely File Infector]"
) || (
if not exist %SysPath%\%_slexe% if not exist %SysPath%\alg.exe (set "results=%results%[Likely File Infector]")
)
if not "%results%%pupfound%"=="" (
if defined pupfound call :dk_color %Gray% "Checking PUP Activators [%pupfound%]"
if defined results call :dk_color %Red% "Checking for Mal%w%ware Infection... [%results%]"
call :dk_color %Gray% "It is highly likely that your Windows install is infected with mal%w%ware. Windows cannot be activated."
if defined pupfound call :dk_color %Gray% "Checking PUP Activators [Found%pupfound%]"
if defined results call :dk_color %Red% "Checking Probable Mal%w%ware Infection..."
if defined results (call :dk_color %Red% "%results%"&set showfix=1)
set fixes=%fixes% %mas%remove_mal%w%ware
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%remove_mal%w%ware"
echo:
@ -3723,7 +3710,7 @@ if %_unattended%==1 timeout /t 2 & exit /b
if defined fixes (
call :dk_color %White% "Follow ALL the ABOVE blue lines. "
call :dk_color2 %Blue% "Press [1] to Open Support Webpage " %Gray% " Press [0] to Go Back"
call :dk_color2 %Blue% "Press [1] to Open Support Webpage " %Gray% " Press [0] to Ignore"
choice /C:10 /N
if !errorlevel!==2 exit /b
if !errorlevel!==1 (start %selfgit% & start %github% & for %%# in (%fixes%) do (start %%#))
@ -8838,27 +8825,27 @@ namespace LibTSforge.PhysicalStore
}
'@
$ErrorActionPreference = 'Stop'
$binPath = "$env:_work\BIN\LibTSforge.dll"
$psMajorVer = (Get-Host).Version.Major
$build = [System.Environment]::OSVersion.Version.Build
if (Test-Path -LiteralPath $binPath) {
Write-Host "LibTSforge.dll found in BIN folder. Loading the DLL..."
Add-Type -Path $binPath
}
else {
$cp = [CodeDom.Compiler.CompilerParameters] [string[]]@("System.dll", "System.Core.dll", "System.ServiceProcess.dll", "System.Xml.dll", "System.Xml.Linq.dll")
if ($psMajorVer -le 2) { $cp.CompilerOptions = "/define:POWERSHELL2 /unsafe" } else { $cp.CompilerOptions = "/unsafe" }
$lang = if ($psMajorVer -gt 2) { "CSharp" } else { "CSharpVersion3" }
$ctemp = "$env:SystemRoot\Temp\$([Guid]::NewGuid().Guid)\"
$ctemp = "$env:SystemRoot\Temp\"
if (-Not (Test-Path -Path $ctemp)) { New-Item -Path $ctemp -ItemType Directory > $null }
$env:TMP = $ctemp
$env:TEMP = $ctemp
$cp.GenerateInMemory = $true
Add-Type -Language $lang -TypeDefinition $src -CompilerParameters $cp
try {
$cp.TempFiles.Dispose()
} catch {
# Older .NET Framework versions do not have that method, but they also don't create the folder that it removes.
}
Remove-Item -Path $ctemp
if ($env:_debug -eq '0') {
[LibTSforge.Logger]::HideOutput = $true
@ -8960,7 +8947,7 @@ if (-not $env:resetstuff) {
if ($env:tsmethod -eq "KMS4k") {
if ($build -ge 26100) {
Write-Host "[$prodName] is activated with KMS4k for over 4,000 years." -ForegroundColor White -BackgroundColor DarkGreen
Write-Host "From build 26100.7019, Windows will always display a remaining activation period of 180 days in Settings." -ForegroundColor White -BackgroundColor Darkgray
Write-Host "From build 26100.7019, Windows will always display and stay at 180 days remaining if the actual period is longer." -ForegroundColor White -BackgroundColor Darkgray
}
else {
Write-Host "[$prodName] is activated till $([DateTime]::Now.AddMinutes($GracePeriodStatus).ToString('yyyy-MM-dd HH:mm:ss')) with $env:tsmethod." -ForegroundColor White -BackgroundColor DarkGreen

View File

@ -1,4 +1,4 @@
@set masver=3.12
@set masver=3.11
@echo off
@ -479,19 +479,6 @@ call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%trouble
goto dk_done
)
set "o_randguid="
for /f %%G in ('%psc% "[Guid]::NewGuid().Guid" ^| findstr /r "^[0123456789abcdef]*-[0123456789abcdef]*-[0123456789abcdef]*-[0123456789abcdef]*-[0123456789abcdef]*$"') do set "o_randguid=%%G"
if not defined o_randguid (
set "o_randguid="
%eline%
echo Unable to generate GUID with PowerShell.
echo Aborting...
set fixes=%fixes% %mas%troubleshoot
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
goto dk_done
)
md "%SystemRoot%\Temp\%o_randguid%\"
::========================================================================================================================================
:oemenu
@ -590,7 +577,7 @@ mode 98, 45
%psc% "&{$W=$Host.UI.RawUI.WindowSize;$B=$Host.UI.RawUI.BufferSize;$W.Height=44;$B.Height=100;$Host.UI.RawUI.WindowSize=$W;$Host.UI.RawUI.BufferSize=$B;}" %nul%
)
if not exist %SystemRoot%\Temp\%o_randguid%\%list%.txt (
if not exist %SystemRoot%\Temp\%list%.txt (
%eline%
echo Failed to generate available editions list.
set fixes=%fixes% %mas%troubleshoot
@ -612,7 +599,7 @@ if %winbuild% LSS 10240 (
echo Unsupported products such as 2019/2021/2024 are excluded from this list.
) else (
for %%# in (2019 2021 2024) do (
find /i "%%#" "%SystemRoot%\Temp\%o_randguid%\%list%.txt" %nul1% || (
find /i "%%#" "%SystemRoot%\Temp\%list%.txt" %nul1% || (
if defined _notfound (set _notfound=%%#, !_notfound!) else (set _notfound=%%#)
)
)
@ -621,7 +608,7 @@ if defined _notfound call :dk_color %Gray% "Office !_notfound! is not in this li
%line%
echo:
for /f "usebackq delims=" %%A in (%SystemRoot%\Temp\%o_randguid%\%list%.txt) do (
for /f "usebackq delims=" %%A in (%SystemRoot%\Temp\%list%.txt) do (
set /a counter+=1
if !counter! LSS 10 (
echo [!counter!] %%A
@ -654,7 +641,7 @@ set suites=
echo %list% | find /i "Suites" %nul1% && (
set suites=1
%psc% "$f=[IO.File]::ReadAllText('!_batp!') -split ':getappnames\:.*';. ([scriptblock]::Create($f[1]))"
if not exist %SystemRoot%\Temp\%o_randguid%\getAppIds.txt (
if not exist %SystemRoot%\Temp\getAppIds.txt (
%eline%
echo Failed to generate available apps list.
set fixes=%fixes% %mas%troubleshoot
@ -676,7 +663,7 @@ Visio
Word
) do (
if defined suites (
find /i "%%#" "%SystemRoot%\Temp\%o_randguid%\getAppIds.txt" %nul1% && (set %%#_st=On) || (set %%#_st=)
find /i "%%#" "%SystemRoot%\Temp\getAppIds.txt" %nul1% && (set %%#_st=On) || (set %%#_st=)
) else (
set %%#_st=
)
@ -1251,7 +1238,7 @@ call :oe_tempcleanup
echo:
if defined fixes (
call :dk_color %White% "Follow ALL the ABOVE blue lines. "
call :dk_color2 %Blue% "Press [1] to Open Support Webpage " %Gray% " Press [0] to Go Back"
call :dk_color2 %Blue% "Press [1] to Open Support Webpage " %Gray% " Press [0] to Ignore"
choice /C:10 /N
if !errorlevel!==2 goto :oemenu
if !errorlevel!==1 (start %selfgit% & start %github% & for %%# in (%fixes%) do (start %%#))
@ -1300,11 +1287,11 @@ exit /b
:oe_tempcleanup
del %SystemRoot%\Temp\%o_randguid%\SingleApps_Volume.txt %nul%
del %SystemRoot%\Temp\%o_randguid%\SingleApps_Retail.txt %nul%
del %SystemRoot%\Temp\%o_randguid%\Suites_Volume.txt %nul%
del %SystemRoot%\Temp\%o_randguid%\Suites_Retail.txt %nul%
del %SystemRoot%\Temp\%o_randguid%\getAppIds.txt %nul%
del /f /q %SystemRoot%\Temp\SingleApps_Volume.txt %nul%
del /f /q %SystemRoot%\Temp\SingleApps_Retail.txt %nul%
del /f /q %SystemRoot%\Temp\Suites_Volume.txt %nul%
del /f /q %SystemRoot%\Temp\Suites_Retail.txt %nul%
del /f /q %SystemRoot%\Temp\getAppIds.txt %nul%
exit /b
::========================================================================================================================================
@ -1458,7 +1445,7 @@ if ($windowsBuild -lt 9200) {
:getlist:
$xmlPath1 = $env:_c2rXml
$xmlPath2 = $env:_masterxml
$outputDir = $env:SystemRoot + "\Temp\$env:o_randguid\"
$outputDir = $env:SystemRoot + "\Temp\"
$buildNumber = [System.Environment]::OSVersion.Version.Build
$excludedKeywords = @("2019", "2021", "2024")
$productReleaseIds = @()
@ -1518,7 +1505,7 @@ foreach ($section in $categories.Keys) {
:getappnames:
$xmlPath = $env:_masterxml
$targetSkuId = $env:targetedition
$outputDir = $env:SystemRoot + "\Temp\$env:o_randguid\"
$outputDir = $env:SystemRoot + "\Temp\"
$outputFile = Join-Path -Path $outputDir -ChildPath "getAppIds.txt"
$excludeIds = @("shared", "PowerPivot", "PowerView", "MondoOnly", "OSM", "OSMUX", "Groove", "DCF")
@ -1673,7 +1660,7 @@ if %_unattended%==1 timeout /t 2 & exit /b
if defined fixes (
call :dk_color %White% "Follow ALL the ABOVE blue lines. "
call :dk_color2 %Blue% "Press [1] to Open Support Webpage " %Gray% " Press [0] to Go Back"
call :dk_color2 %Blue% "Press [1] to Open Support Webpage " %Gray% " Press [0] to Ignore"
choice /C:10 /N
if !errorlevel!==2 exit /b
if !errorlevel!==1 (start %selfgit% & start %github% & for %%# in (%fixes%) do (start %%#))

View File

@ -1,4 +1,4 @@
@set masver=3.12
@set masver=3.11
@echo off
@ -35,18 +35,6 @@ set "Path=%SystemRoot%\Sysnative;%SystemRoot%;%SystemRoot%\Sysnative\Wbem;%Syste
set "ComSpec=%SysPath%\cmd.exe"
set "PSModulePath=%ProgramFiles%\WindowsPowerShell\Modules;%SysPath%\WindowsPowerShell\v1.0\Modules"
cd /d "%SysPath%"
:: Workaround for https://github.com/microsoft/terminal/issues/15212, when %0 starts with a quote %0 parameter expansion is not specialcased.
:: Changing %0 to something that is not quoted bypasses the issue.
goto arg_workaround_end
:arg_workaround
set "_cmdf=%~f0"
exit /b
:arg_workaround_end
call :arg_workaround
set re1=
set re2=
set "_cmdf=%~f0"
@ -97,7 +85,8 @@ cls
:: Check LF line ending
>nul findstr /v "$" "%_cmdf%" && (
pushd "%~dp0"
>nul findstr /v "$" "%~nx0" && (
echo:
echo Error - Script either has LF line ending issue or an empty line at the end of the script is missing.
echo:
@ -106,8 +95,10 @@ echo Check this webpage for help - %mas%troubleshoot
echo:
echo:
ping 127.0.0.1 -n 20 >nul
popd
exit /b
)
popd
::========================================================================================================================================
@ -173,9 +164,10 @@ goto dk_done
set "_work=%~dp0"
if "%_work:~-1%"=="\" set "_work=%_work:~0,-1%"
set "_batp=%_cmdf:'=''%"
set "_batf=%~f0"
set "_batp=%_batf:'=''%"
set _PSarg="""%_cmdf%""" -el %_args%
set _PSarg="""%~f0""" -el %_args%
set _PSarg=%_PSarg:'=''%
set "_ttemp=%userprofile%\AppData\Local\Temp"
@ -184,7 +176,7 @@ setlocal EnableDelayedExpansion
::========================================================================================================================================
echo "!_cmdf!" | find /i "!_ttemp!" %nul1% && (
echo "!_batf!" | find /i "!_ttemp!" %nul1% && (
if /i not "!_work!"=="!_ttemp!" (
%eline%
echo The script was launched from the temp folder.
@ -314,11 +306,11 @@ reg query HKCU\Console /v QuickEdit %nul2% | find /i "0x0" %nul1% && set resetQE
reg add HKCU\Console /v QuickEdit /t REG_DWORD /d 0 /f %nul1%
if defined terminal (
start conhost.exe "!_cmdf!" %_args% -qedit
start conhost.exe "!_batf!" %_args% -qedit
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
exit /b
) else if %resetQE% EQU 1 (
start cmd.exe /c ""!_cmdf!" %_args% -qedit"
start cmd.exe /c ""!_batf!" %_args% -qedit"
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
exit /b
)
@ -835,8 +827,8 @@ exit /b
:: https://stackoverflow.com/a/46268232
for /f %%G in ('%psc% "[Guid]::NewGuid().Guid"') do set "randguid=%%G"
set "ddf="%SystemRoot%\Temp\%Random%%randguid%""
set "ddf="%SystemRoot%\Temp\%Random%%Random%%Random%%Random%""
%nul% del /q /f %ddf%
echo/.New Cabinet>%ddf%
echo/.set Cabinet=ON>>%ddf%
echo/.set CabinetFileCountThreshold=0;>>%ddf%
@ -1099,7 +1091,7 @@ if %_unattended%==1 timeout /t 2 & exit /b
if defined fixes (
call :dk_color %White% "Follow ALL the ABOVE blue lines. "
call :dk_color2 %Blue% "Press [1] to Open Support Webpage " %Gray% " Press [0] to Go Back"
call :dk_color2 %Blue% "Press [1] to Open Support Webpage " %Gray% " Press [0] to Ignore"
choice /C:10 /N
if !errorlevel!==2 exit /b
if !errorlevel!==1 (start %selfgit% & start %github% & for %%# in (%fixes%) do (start %%#))
@ -1301,7 +1293,7 @@ if($false -eq ($installCandidates.Keys -contains $SetEdition)) {
Exit 1
}
$xmlPath = $Env:SystemRoot + '\Temp' + "\$([Guid]::NewGuid().Guid)CbsUpgrade.xml"
$xmlPath = $Env:SystemRoot + '\Temp' + '\CbsUpgrade.xml'
Write-UpgradeXml -RemovalCandidates $removalCandidates `
-InstallCandidates $installCandidates[$SetEdition] `

View File

@ -26,18 +26,6 @@ set "Path=%SystemRoot%\Sysnative;%SystemRoot%;%SystemRoot%\Sysnative\Wbem;%Syste
set "ComSpec=%SysPath%\cmd.exe"
set "PSModulePath=%ProgramFiles%\WindowsPowerShell\Modules;%SysPath%\WindowsPowerShell\v1.0\Modules"
cd /d "%SysPath%"
:: Workaround for https://github.com/microsoft/terminal/issues/15212, when %0 starts with a quote %0 parameter expansion is not specialcased.
:: Changing %0 to something that is not quoted bypasses the issue.
goto arg_workaround_end
:arg_workaround
set "_cmdf=%~f0"
exit /b
:arg_workaround_end
call :arg_workaround
set "ps=%SysPath%\WindowsPowerShell\v1.0\powershell.exe"
set "_psc=%ps% -nop -c"
set "_err===== ERROR ===="

View File

@ -1,4 +1,4 @@
@set masver=3.12
@set masver=3.11
@echo off
@ -30,18 +30,6 @@ set "Path=%SystemRoot%\Sysnative;%SystemRoot%;%SystemRoot%\Sysnative\Wbem;%Syste
set "ComSpec=%SysPath%\cmd.exe"
set "PSModulePath=%ProgramFiles%\WindowsPowerShell\Modules;%SysPath%\WindowsPowerShell\v1.0\Modules"
cd /d "%SysPath%"
:: Workaround for https://github.com/microsoft/terminal/issues/15212, when %0 starts with a quote %0 parameter expansion is not specialcased.
:: Changing %0 to something that is not quoted bypasses the issue.
goto arg_workaround_end
:arg_workaround
set "_cmdf=%~f0"
exit /b
:arg_workaround_end
call :arg_workaround
set re1=
set re2=
set "_cmdf=%~f0"
@ -92,7 +80,8 @@ cls
:: Check LF line ending
>nul findstr /v "$" "%_cmdf%" && (
pushd "%~dp0"
>nul findstr /v "$" "%~nx0" && (
echo:
echo Error - Script either has LF line ending issue or an empty line at the end of the script is missing.
echo:
@ -101,8 +90,10 @@ echo Check this webpage for help - %mas%troubleshoot
echo:
echo:
ping 127.0.0.1 -n 20 >nul
popd
exit /b
)
popd
::========================================================================================================================================
@ -184,9 +175,10 @@ goto done2
set "_work=%~dp0"
if "%_work:~-1%"=="\" set "_work=%_work:~0,-1%"
set "_batp=%_cmdf:'=''%"
set "_batf=%~f0"
set "_batp=%_batf:'=''%"
set _PSarg="""%_cmdf%""" -el %_args%
set _PSarg="""%~f0""" -el %_args%
set _PSarg=%_PSarg:'=''%
set "_ttemp=%userprofile%\AppData\Local\Temp"
@ -195,14 +187,14 @@ setlocal EnableDelayedExpansion
::========================================================================================================================================
echo "!_cmdf!" | find /i "!_ttemp!" %nul1% && (
echo "!_batf!" | find /i "!_ttemp!" %nul1% && (
if /i not "!_work!"=="!_ttemp!" (
%eline%
echo The script was launched from the temp folder.
echo You are most likely running the script directly from the archive file.
echo:
echo Extract the archive file and launch the script from the extracted folder.
goto dk_done
goto done2
)
)
@ -325,11 +317,11 @@ reg query HKCU\Console /v QuickEdit %nul2% | find /i "0x0" %nul1% && set resetQE
reg add HKCU\Console /v QuickEdit /t REG_DWORD /d 0 /f %nul1%
if defined terminal (
start conhost.exe "!_cmdf!" %_args% -qedit
start conhost.exe "!_batf!" %_args% -qedit
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
exit /b
) else if %resetQE% EQU 1 (
start cmd.exe /c ""!_cmdf!" %_args% -qedit"
start cmd.exe /c ""!_batf!" %_args% -qedit"
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
exit /b
)
@ -735,7 +727,7 @@ echo ______________________________________________________________
echo:
if defined fixes (
call :dk_color %White% "Follow ALL the ABOVE blue lines. "
call :dk_color2 %Blue% "Press [1] to Open Support Webpage " %Gray% " Press [0] to Go Back"
call :dk_color2 %Blue% "Press [1] to Open Support Webpage " %Gray% " Press [0] to Ignore"
choice /C:10 /N
if !errorlevel!==2 exit /b
if !errorlevel!==1 (start %selfgit% & start %github% & for %%# in (%fixes%) do (start %%#))

View File

@ -1,4 +1,4 @@
@set masver=3.12
@set masver=3.11
@echo off
@ -30,18 +30,6 @@ set "Path=%SystemRoot%\Sysnative;%SystemRoot%;%SystemRoot%\Sysnative\Wbem;%Syste
set "ComSpec=%SysPath%\cmd.exe"
set "PSModulePath=%ProgramFiles%\WindowsPowerShell\Modules;%SysPath%\WindowsPowerShell\v1.0\Modules"
cd /d "%SysPath%"
:: Workaround for https://github.com/microsoft/terminal/issues/15212, when %0 starts with a quote %0 parameter expansion is not specialcased.
:: Changing %0 to something that is not quoted bypasses the issue.
goto arg_workaround_end
:arg_workaround
set "_cmdf=%~f0"
exit /b
:arg_workaround_end
call :arg_workaround
set re1=
set re2=
set "_cmdf=%~f0"
@ -92,7 +80,8 @@ cls
:: Check LF line ending
>nul findstr /v "$" "%_cmdf%" && (
pushd "%~dp0"
>nul findstr /v "$" "%~nx0" && (
echo:
echo Error - Script either has LF line ending issue or an empty line at the end of the script is missing.
echo:
@ -101,8 +90,10 @@ echo Check this webpage for help - %mas%troubleshoot
echo:
echo:
ping 127.0.0.1 -n 20 >nul
popd
exit /b
)
popd
::========================================================================================================================================
@ -185,9 +176,10 @@ goto dk_done
set "_work=%~dp0"
if "%_work:~-1%"=="\" set "_work=%_work:~0,-1%"
set "_batp=%_cmdf:'=''%"
set "_batf=%~f0"
set "_batp=%_batf:'=''%"
set _PSarg="""%_cmdf%""" -el %_args%
set _PSarg="""%~f0""" -el %_args%
set _PSarg=%_PSarg:'=''%
set "_ttemp=%userprofile%\AppData\Local\Temp"
@ -196,7 +188,7 @@ setlocal EnableDelayedExpansion
::========================================================================================================================================
echo "!_cmdf!" | find /i "!_ttemp!" %nul1% && (
echo "!_batf!" | find /i "!_ttemp!" %nul1% && (
if /i not "!_work!"=="!_ttemp!" (
%eline%
echo The script was launched from the temp folder.
@ -326,11 +318,11 @@ reg query HKCU\Console /v QuickEdit %nul2% | find /i "0x0" %nul1% && set resetQE
reg add HKCU\Console /v QuickEdit /t REG_DWORD /d 0 /f %nul1%
if defined terminal (
start conhost.exe "!_cmdf!" %_args% -qedit
start conhost.exe "!_batf!" %_args% -qedit
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
exit /b
) else if %resetQE% EQU 1 (
start cmd.exe /c ""!_cmdf!" %_args% -qedit"
start cmd.exe /c ""!_batf!" %_args% -qedit"
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
exit /b
)
@ -1671,7 +1663,7 @@ if %_unattended%==1 timeout /t 2 & exit /b
if defined fixes (
call :dk_color %White% "Follow ALL the ABOVE blue lines. "
call :dk_color2 %Blue% "Press [1] to Open Support Webpage " %Gray% " Press [0] to Go Back"
call :dk_color2 %Blue% "Press [1] to Open Support Webpage " %Gray% " Press [0] to Ignore"
choice /C:10 /N
if !errorlevel!==2 exit /b
if !errorlevel!==1 (start %selfgit% & start %github% & for %%# in (%fixes%) do (start %%#))