mirror of
https://github.com/massgravel/Microsoft-Activation-Scripts.git
synced 2025-07-05 17:31:20 +01:00
Compare commits
40 Commits
2.9
...
c316b42e5c
Author | SHA1 | Date | |
---|---|---|---|
c316b42e5c | |||
3b739d7e2b | |||
8673fbbfda | |||
60dd549a49 | |||
1e3c0aaedf | |||
fe001e6c39 | |||
c4f33e96c4 | |||
69f1a206fb | |||
ab0cd24f89 | |||
55afa30fcd | |||
5e7e42a446 | |||
a9eda8f572 | |||
a5bcfdd3e6 | |||
8d67d62c15 | |||
6adb247334 | |||
6c8732dd06 | |||
9765e7d05f | |||
60c99742ce | |||
8f3f392517 | |||
af69d79c5c | |||
63045afc70 | |||
19c6612a47 | |||
9e6f386819 | |||
b5ba36c033 | |||
d10b6d691e | |||
de812acdc5 | |||
75c34cbf50 | |||
0d533338a1 | |||
411f387705 | |||
be44b2d887 | |||
0c88f6bc2c | |||
d31e4ab0cb | |||
9fd5a661ab | |||
b732e2c8d7 | |||
8e2677b1f9 | |||
f2e40bf88e | |||
a4f9b219ab | |||
7262a44ba2 | |||
37ec96504a | |||
051b4f673f |
6
.gitattributes
vendored
6
.gitattributes
vendored
@ -1,4 +1,4 @@
|
|||||||
MAS export-ignore
|
# MAS export-ignore
|
||||||
LICENSE export-ignore
|
# LICENSE export-ignore
|
||||||
README.md export-ignore
|
# README.md export-ignore
|
||||||
.gitattributes export-ignore
|
.gitattributes export-ignore
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
|||||||
@set masver=2.9
|
@set masver=3.0
|
||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
|
|
||||||
@ -109,7 +109,7 @@ echo:
|
|||||||
echo Null service is not running, script may crash...
|
echo Null service is not running, script may crash...
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
echo Help - %mas%fix_service
|
echo Check this webpage for help - %mas%fix_service
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
ping 127.0.0.1 -n 20
|
ping 127.0.0.1 -n 20
|
||||||
@ -124,7 +124,7 @@ echo:
|
|||||||
echo Error - Script either has LF line ending issue or an empty line at the end of the script is missing.
|
echo Error - Script either has LF line ending issue or an empty line at the end of the script is missing.
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
echo Help - %mas%troubleshoot
|
echo Check this webpage for help - %mas%troubleshoot
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
ping 127.0.0.1 -n 20 >nul
|
ping 127.0.0.1 -n 20 >nul
|
||||||
@ -161,19 +161,29 @@ for %%A in (%_act% %_NoEditionChange%) do (if "%%A"=="1" set _unattended=1)
|
|||||||
|
|
||||||
call :dk_setvar
|
call :dk_setvar
|
||||||
|
|
||||||
|
if %winbuild% EQU 1 (
|
||||||
|
%eline%
|
||||||
|
echo Failed to detect Windows build number.
|
||||||
|
echo:
|
||||||
|
setlocal EnableDelayedExpansion
|
||||||
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
if %winbuild% LSS 10240 (
|
if %winbuild% LSS 10240 (
|
||||||
%eline%
|
%eline%
|
||||||
echo Unsupported OS version detected [%winbuild%].
|
echo Unsupported OS version detected [%winbuild%].
|
||||||
echo HWID Activation is only supported on Windows 10/11.
|
echo HWID Activation is only supported on Windows 10/11.
|
||||||
echo:
|
echo:
|
||||||
call :dk_color %Blue% "Use Online KMS activation option."
|
call :dk_color %Blue% "Use TSforge activation option from the main menu."
|
||||||
goto dk_done
|
goto dk_done
|
||||||
)
|
)
|
||||||
|
|
||||||
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" (
|
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" (
|
||||||
%eline%
|
%eline%
|
||||||
echo HWID Activation is not supported on Windows Server.
|
echo HWID Activation is not supported on Windows Server.
|
||||||
call :dk_color %Blue% "Use KMS38 or Online KMS activation option."
|
call :dk_color %Blue% "Use TSforge activation option from the main menu."
|
||||||
goto dk_done
|
goto dk_done
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -209,33 +219,6 @@ goto dk_done
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:: Check PowerShell
|
|
||||||
|
|
||||||
REM :PStest: $ExecutionContext.SessionState.LanguageMode :PStest:
|
|
||||||
|
|
||||||
cmd /c "%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':PStest:\s*';iex ($f[1])"" | find /i "FullLanguage" %nul1% || (
|
|
||||||
%eline%
|
|
||||||
cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode""
|
|
||||||
echo:
|
|
||||||
cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode"" | find /i "FullLanguage" %nul1% && (
|
|
||||||
echo Failed to run Powershell command but Powershell is working.
|
|
||||||
echo:
|
|
||||||
cmd /c "%psc% ""$av = Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct; $n = @(); foreach ($i in $av) { if ($i.displayName -notlike '*windows*') { $n += $i.displayName } }; if ($n) { Write-Host ('Installed 3rd party Antivirus might be blocking the script - ' + ($n -join ', ')) -ForegroundColor White -BackgroundColor Blue }"""
|
|
||||||
echo:
|
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
|
||||||
) || (
|
|
||||||
echo PowerShell is not working. Aborting...
|
|
||||||
echo If you have applied restrictions on Powershell then undo those changes.
|
|
||||||
echo:
|
|
||||||
set fixes=%fixes% %mas%fix_powershell
|
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%fix_powershell"
|
|
||||||
)
|
|
||||||
goto dk_done
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Elevate script as admin and pass arguments and preventing loop
|
:: Elevate script as admin and pass arguments and preventing loop
|
||||||
|
|
||||||
%nul1% fltmc || (
|
%nul1% fltmc || (
|
||||||
@ -248,6 +231,58 @@ goto dk_done
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
:: Check PowerShell
|
||||||
|
|
||||||
|
::pstst $ExecutionContext.SessionState.LanguageMode :pstst
|
||||||
|
|
||||||
|
for /f "delims=" %%a in ('cmd /c "%psc% ""if ($PSVersionTable.PSEdition -ne 'Core') {$f=[io.file]::ReadAllText('!_batp!') -split ':pstst';iex ($f[1])}""" %nul6%') do (set tstresult=%%a)
|
||||||
|
|
||||||
|
if /i not "%tstresult%"=="FullLanguage" (
|
||||||
|
%eline%
|
||||||
|
echo: %tstresult%
|
||||||
|
cmd /c "%psc% $ExecutionContext.SessionState.LanguageMode"
|
||||||
|
|
||||||
|
REM check LanguageMode
|
||||||
|
|
||||||
|
cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode"" | findstr /i "ConstrainedLanguage RestrictedLanguage NoLanguage" %nul1% && (
|
||||||
|
echo FullLanguage mode not found in PowerShell. Aborting...
|
||||||
|
echo If you have applied restrictions on Powershell then undo those changes.
|
||||||
|
echo:
|
||||||
|
set fixes=%fixes% %mas%fix_powershell
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%fix_powershell"
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
|
REM check Powershell core version
|
||||||
|
|
||||||
|
cmd /c "%psc% "$PSVersionTable.PSEdition"" | find /i "Core" %nul1% && (
|
||||||
|
echo Windows Powershell is needed for MAS but it seems to be replaced with Powershell core. Aborting...
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
|
REM check for Mal-ware that may cause issues with Powershell
|
||||||
|
|
||||||
|
for /r "%ProgramFiles%\" %%f in (secureboot.exe) do if exist "%%f" (
|
||||||
|
echo "%%f"
|
||||||
|
echo Mal%blank%ware found, PowerShell is not working properly.
|
||||||
|
echo:
|
||||||
|
set fixes=%fixes% %mas%remove_mal%w%ware
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%remove_mal%w%ware"
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
|
REM check antivirus and other errors
|
||||||
|
|
||||||
|
echo PowerShell is not working properly. Aborting...
|
||||||
|
cmd /c "%psc% ""$av = Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct; $n = @(); foreach ($i in $av) { if ($i.displayName -notlike '*windows*') { $n += $i.displayName } }; if ($n) { Write-Host ('Installed 3rd party Antivirus might be blocking the script - ' + ($n -join ', ')) -ForegroundColor White -BackgroundColor Blue }"""
|
||||||
|
echo:
|
||||||
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
|
::========================================================================================================================================
|
||||||
|
|
||||||
:: Disable QuickEdit and launch from conhost.exe to avoid Terminal app
|
:: Disable QuickEdit and launch from conhost.exe to avoid Terminal app
|
||||||
|
|
||||||
if %winbuild% GEQ 17763 (
|
if %winbuild% GEQ 17763 (
|
||||||
@ -258,34 +293,33 @@ set terminal=
|
|||||||
|
|
||||||
:: Check if script is running in Terminal app
|
:: Check if script is running in Terminal app
|
||||||
|
|
||||||
set r1=$TB = [AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2, $False).DefineType(0);
|
|
||||||
set r2=%r1% [void]$TB.DefinePInvokeMethod('GetConsoleWindow', 'kernel32.dll', 22, 1, [IntPtr], @(), 1, 3).SetImplementationFlags(128);
|
|
||||||
set r3=%r2% [void]$TB.DefinePInvokeMethod('SendMessageW', 'user32.dll', 22, 1, [IntPtr], @([IntPtr], [UInt32], [IntPtr], [IntPtr]), 1, 3).SetImplementationFlags(128);
|
|
||||||
set d1=%r3% $hIcon = $TB.CreateType(); $hWnd = $hIcon::GetConsoleWindow();
|
|
||||||
set d2=%d1% echo $($hIcon::SendMessageW($hWnd, 127, 0, 0) -ne [IntPtr]::Zero);
|
|
||||||
|
|
||||||
if defined terminal (
|
if defined terminal (
|
||||||
%psc% "%d2%" %nul2% | find /i "True" %nul1% && set terminal=
|
set lines=0
|
||||||
|
for /f "skip=2 tokens=2 delims=: " %%A in ('mode con') do if "!lines!"=="0" set lines=%%A
|
||||||
|
if !lines! GEQ 100 set terminal=
|
||||||
)
|
)
|
||||||
|
|
||||||
if defined ps32onArm goto :skipQE
|
|
||||||
if %_unattended%==1 goto :skipQE
|
if %_unattended%==1 goto :skipQE
|
||||||
for %%# in (%_args%) do (if /i "%%#"=="-qedit" goto :skipQE)
|
for %%# in (%_args%) do (if /i "%%#"=="-qedit" goto :skipQE)
|
||||||
|
|
||||||
|
:: Relaunch to disable QuickEdit in the current session and use conhost.exe instead of the Terminal app
|
||||||
|
:: This code disables QuickEdit for the current cmd.exe session without making permanent registry changes
|
||||||
|
:: It is included because clicking on the script window can pause execution, causing confusion that the script has stopped due to an error
|
||||||
|
|
||||||
|
set resetQE=1
|
||||||
|
reg query HKCU\Console /v QuickEdit %nul2% | find /i "0x0" %nul1% && set resetQE=0
|
||||||
|
reg add HKCU\Console /v QuickEdit /t REG_DWORD /d 0 /f %nul1%
|
||||||
|
|
||||||
if defined terminal (
|
if defined terminal (
|
||||||
set "launchcmd=start conhost.exe %psc%"
|
start conhost.exe "!_batf!" %_args% -qedit
|
||||||
) else (
|
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
|
||||||
set "launchcmd=%psc%"
|
exit /b
|
||||||
|
) else if %resetQE% EQU 1 (
|
||||||
|
start cmd.exe /c ""!_batf!" %_args% -qedit"
|
||||||
|
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
|
||||||
|
exit /b
|
||||||
)
|
)
|
||||||
|
|
||||||
:: Disable QuickEdit in current session
|
|
||||||
|
|
||||||
set "d1=$t=[AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2, $False).DefineType(0);"
|
|
||||||
set "d2=$t.DefinePInvokeMethod('GetStdHandle', 'kernel32.dll', 22, 1, [IntPtr], @([Int32]), 1, 3).SetImplementationFlags(128);"
|
|
||||||
set "d3=$t.DefinePInvokeMethod('SetConsoleMode', 'kernel32.dll', 22, 1, [Boolean], @([IntPtr], [Int32]), 1, 3).SetImplementationFlags(128);"
|
|
||||||
set "d4=$k=$t.CreateType(); $b=$k::SetConsoleMode($k::GetStdHandle(-10), 0x0080);"
|
|
||||||
|
|
||||||
%launchcmd% "%d1% %d2% %d3% %d4% & cmd.exe '/c' '!_PSarg! -qedit'" && (exit /b) || (set terminal=1)
|
|
||||||
:skipQE
|
:skipQE
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
@ -294,9 +328,19 @@ set "d4=$k=$t.CreateType(); $b=$k::SetConsoleMode($k::GetStdHandle(-10), 0x0080)
|
|||||||
|
|
||||||
set -=
|
set -=
|
||||||
set old=
|
set old=
|
||||||
|
set pingp=
|
||||||
|
set upver=%masver:.=%
|
||||||
|
|
||||||
for /f "delims=[] tokens=2" %%# in ('ping -4 -n 1 updatecheck.mass%-%grave.dev') do (
|
for %%A in (
|
||||||
if not "%%#"=="" (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.69.%masver%" %nul1% || set old=1))
|
activ%-%ated.win
|
||||||
|
mass%-%grave.dev
|
||||||
|
) do if not defined pingp (
|
||||||
|
for /f "delims=[] tokens=2" %%B in ('ping -n 1 %%A') do (
|
||||||
|
if not "%%B"=="" (set old=1& set pingp=1)
|
||||||
|
for /f "delims=[] tokens=2" %%C in ('ping -n 1 updatecheck%upver%.%%A') do (
|
||||||
|
if not "%%C"=="" set old=
|
||||||
|
)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
if defined old (
|
if defined old (
|
||||||
@ -312,7 +356,7 @@ echo:
|
|||||||
call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :"
|
call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :"
|
||||||
choice /C:10 /N
|
choice /C:10 /N
|
||||||
if !errorlevel!==2 rem
|
if !errorlevel!==2 rem
|
||||||
if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b)
|
if !errorlevel!==1 (start %mas% & exit /b)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -338,7 +382,7 @@ if not exist %SysPath%\%%# (
|
|||||||
echo [%SysPath%\%%#] file is missing, aborting...
|
echo [%SysPath%\%%#] file is missing, aborting...
|
||||||
echo:
|
echo:
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
goto dk_done
|
goto dk_done
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -363,7 +407,6 @@ cls
|
|||||||
echo ___________________________________________________________________________________________
|
echo ___________________________________________________________________________________________
|
||||||
echo:
|
echo:
|
||||||
call :dk_color2 %_White% " " %Green% "%winos% is already permanently activated."
|
call :dk_color2 %_White% " " %Green% "%winos% is already permanently activated."
|
||||||
call :dk_color2 %_White% " " %Gray% "Activation is not required."
|
|
||||||
echo ___________________________________________________________________________________________
|
echo ___________________________________________________________________________________________
|
||||||
if %_unattended%==1 goto dk_done
|
if %_unattended%==1 goto dk_done
|
||||||
echo:
|
echo:
|
||||||
@ -381,10 +424,11 @@ reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul2
|
|||||||
%eline%
|
%eline%
|
||||||
echo [%winos% ^| %winbuild%]
|
echo [%winos% ^| %winbuild%]
|
||||||
echo:
|
echo:
|
||||||
echo Evaluation editions cannot be activated outside of their evaluation period.
|
echo Evaluation editions cannot be activated outside of their evaluation period.
|
||||||
|
call :dk_color %Blue% "Use TSforge activation option from the main menu to reset evaluation period."
|
||||||
echo:
|
echo:
|
||||||
set fixes=%fixes% %mas%evaluation_editions
|
set fixes=%fixes% %mas%evaluation_editions
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%evaluation_editions"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%evaluation_editions"
|
||||||
goto dk_done
|
goto dk_done
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -465,13 +509,13 @@ echo [%winos% ^| %winbuild% ^| SKU:%osSKU%]
|
|||||||
if not defined skunotfound (
|
if not defined skunotfound (
|
||||||
echo This product does not support HWID activation.
|
echo This product does not support HWID activation.
|
||||||
echo Make sure you are using the latest version of the script.
|
echo Make sure you are using the latest version of the script.
|
||||||
echo If you are, then try KMS38 activation option.
|
echo If you are, then try TSforge activation option from the main menu.
|
||||||
set fixes=%fixes% %mas%
|
set fixes=%fixes% %mas%
|
||||||
echo %mas%
|
echo %mas%
|
||||||
) else (
|
) else (
|
||||||
echo Required license files not found in %SysPath%\spp\tokens\skus\
|
echo Required license files not found in %SysPath%\spp\tokens\skus\
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
)
|
)
|
||||||
echo:
|
echo:
|
||||||
goto dk_done
|
goto dk_done
|
||||||
@ -605,17 +649,18 @@ goto :dl_final
|
|||||||
|
|
||||||
set "_ident=HKU\S-1-5-19\SOFTWARE\Microsoft\IdentityCRL"
|
set "_ident=HKU\S-1-5-19\SOFTWARE\Microsoft\IdentityCRL"
|
||||||
|
|
||||||
if defined _int (
|
if %keyerror% EQU 0 if defined _int (
|
||||||
reg delete "%_ident%" /f %nul%
|
reg delete "%_ident%" /f %nul%
|
||||||
reg query "%_ident%" %nul% && (
|
|
||||||
echo:
|
|
||||||
set error=1
|
|
||||||
call :dk_color %Red% "Deleting IdentityCRL Registry [Failed] [%_ident%]"
|
|
||||||
)
|
|
||||||
for %%# in (wlidsvc LicenseManager sppsvc) do (%psc% "Start-Job { Restart-Service %%# } | Wait-Job -Timeout 20 | Out-Null")
|
for %%# in (wlidsvc LicenseManager sppsvc) do (%psc% "Start-Job { Restart-Service %%# } | Wait-Job -Timeout 20 | Out-Null")
|
||||||
call :dk_refresh
|
call :dk_refresh
|
||||||
call :dk_act
|
call :dk_act
|
||||||
call :dk_checkperm
|
call :dk_checkperm
|
||||||
|
|
||||||
|
reg query "%_ident%" %nul% || (
|
||||||
|
set error=1
|
||||||
|
echo:
|
||||||
|
call :dk_color %Red% "Generating New IdentityCRL Registry [Failed] [%_ident%]"
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
::==========================================================================================================================================
|
::==========================================================================================================================================
|
||||||
@ -623,43 +668,40 @@ call :dk_checkperm
|
|||||||
:: Extended licensing servers tests incase error not found and activation failed
|
:: Extended licensing servers tests incase error not found and activation failed
|
||||||
|
|
||||||
if %keyerror% EQU 0 if not defined _perm if defined _int (
|
if %keyerror% EQU 0 if not defined _perm if defined _int (
|
||||||
set resfail=
|
|
||||||
ipconfig /flushdns %nul%
|
ipconfig /flushdns %nul%
|
||||||
set "tls=[Net.ServicePointManager]::SecurityProtocol=[Net.SecurityProtocolType]::Tls12;"
|
set "tls=[Net.ServicePointManager]::SecurityProtocol=[Net.SecurityProtocolType]::Tls12;"
|
||||||
|
|
||||||
for %%# in (
|
for %%# in (
|
||||||
|
licensing.mp.microsoft.com/v7.0/licenses/content
|
||||||
login.live.com/ppsecure/deviceaddcredential.srf
|
login.live.com/ppsecure/deviceaddcredential.srf
|
||||||
purchase.mp.microsoft.com/v7.0/users/me/orders
|
purchase.mp.microsoft.com/v7.0/users/me/orders
|
||||||
) do if not defined resfail (
|
) do if not defined resfail (
|
||||||
set "d1=Add-Type -AssemblyName System.Net.Http;"
|
%psc% "try { !tls! irm https://%%# -Method POST } catch { if ($_.Exception.Response -eq $null) { Write-Host """"[%%#] $($_.Exception.Message)"""" -ForegroundColor Red -BackgroundColor Black; exit 3 } }"
|
||||||
set "d1=!d1! $client = [System.Net.Http.HttpClient]::new();"
|
if !errorlevel!==3 set resfail=1
|
||||||
set "d1=!d1! $response = $client.GetAsync('https://%%#').GetAwaiter().GetResult();"
|
|
||||||
set "d1=!d1! $response.Content.ReadAsStringAsync().GetAwaiter().GetResult()"
|
|
||||||
%psc% "!tls! !d1!" %nul2% | findstr /i "PurchaseFD DeviceAddResponse" %nul1% || set resfail=1
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if not defined resfail (
|
|
||||||
%psc% "!tls! irm https://licensing.mp.microsoft.com/v7.0/licenses/content -Method POST" | find /i "traceId" %nul1% || set resfail=1
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if defined resfail (
|
if defined resfail (
|
||||||
set error=1
|
set error=1
|
||||||
echo:
|
for %%# in (
|
||||||
call :dk_color %Red% "Checking Licensing Servers [Failed to Connect]"
|
live.com
|
||||||
set fixes=%fixes% %mas%licensing-servers-issue
|
microsoft.com
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%licensing-servers-issue"
|
login.live.com
|
||||||
|
purchase.mp.microsoft.com
|
||||||
|
licensing.mp.microsoft.com
|
||||||
|
) do (
|
||||||
|
findstr /i "%%#" "%SysPath%\drivers\etc\hosts" %nul1% && set "hosfail= [%%# Blocked in Hosts]"
|
||||||
)
|
)
|
||||||
|
call :dk_color %Red% "Checking Licensing Servers [Failed to Connect]!hosfail!"
|
||||||
|
set fixes=%fixes% %mas%licensing-servers-issue
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%licensing-servers-issue"
|
||||||
)
|
)
|
||||||
|
|
||||||
::==========================================================================================================================================
|
::==========================================================================================================================================
|
||||||
|
|
||||||
if %keyerror% EQU 0 if not defined _perm if defined _int (
|
:: Windows update and store block check
|
||||||
|
|
||||||
reg query "%_ident%" %nul% || (
|
if %keyerror% EQU 0 if not defined _perm if defined _int (
|
||||||
set error=1
|
|
||||||
echo:
|
|
||||||
call :dk_color %Red% "Generating New IdentityCRL Registry [Failed] [%_ident%]"
|
|
||||||
)
|
|
||||||
|
|
||||||
reg query "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" /v DisableWindowsUpdateAccess %nul2% | find /i "0x1" %nul% && set wublock=1
|
reg query "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" /v DisableWindowsUpdateAccess %nul2% | find /i "0x1" %nul% && set wublock=1
|
||||||
reg query "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" /v DoNotConnectToWindowsUpdateInternetLocations %nul2% | find /i "0x1" %nul% && set wublock=1
|
reg query "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" /v DoNotConnectToWindowsUpdateInternetLocations %nul2% | find /i "0x1" %nul% && set wublock=1
|
||||||
@ -675,40 +717,46 @@ call :dk_color %Blue% "If you have used any tool to block Store, undo it."
|
|||||||
)
|
)
|
||||||
|
|
||||||
set wcount=0
|
set wcount=0
|
||||||
for %%G in (DependOnService Description DisplayName ErrorControl ImagePath ObjectName Start Type ServiceSidType RequiredPrivileges FailureActions) do if not defined wucorrupt (
|
for %%G in (DependOnService Description DisplayName ErrorControl ImagePath ObjectName Start Type ServiceSidType RequiredPrivileges FailureActions) do (
|
||||||
reg query HKLM\SYSTEM\CurrentControlSet\Services\wuauserv /v %%G %nul% || (set wucorrupt=1&set /a wcount+=1)
|
reg query HKLM\SYSTEM\CurrentControlSet\Services\wuauserv /v %%G %nul% || (set wucorrupt=1&set /a wcount+=1)
|
||||||
)
|
)
|
||||||
|
|
||||||
for %%G in (Parameters Security) do if not defined wucorrupt (
|
for %%G in (Parameters Security) do (
|
||||||
reg query HKLM\SYSTEM\CurrentControlSet\Services\wuauserv\%%G %nul% || (set wucorrupt=1&set /a wcount+=1)
|
reg query HKLM\SYSTEM\CurrentControlSet\Services\wuauserv\%%G %nul% || (set wucorrupt=1&set /a wcount+=1)
|
||||||
)
|
)
|
||||||
|
|
||||||
if defined wucorrupt (
|
if defined wucorrupt (
|
||||||
|
set error=1
|
||||||
call :dk_color %Red% "Checking Windows Update Registry [Corruption Found]"
|
call :dk_color %Red% "Checking Windows Update Registry [Corruption Found]"
|
||||||
if !wcount! GTR 2 (
|
if !wcount! GTR 2 (
|
||||||
call :dk_color %Red% "Windows seems to be infected with Mal%w%ware."
|
call :dk_color %Red% "Windows seems to be infected with Mal%w%ware."
|
||||||
set fixes=%fixes% %mas%remove_mal%w%ware
|
set fixes=%fixes% %mas%remove_mal%w%ware
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%remove_mal%w%ware"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%remove_mal%w%ware"
|
||||||
) else (
|
) else (
|
||||||
call :dk_color %Blue% "HWID activation needs working Windows updates, if you have used any tool to block updates, undo it."
|
call :dk_color %Blue% "HWID activation needs working Windows updates, if you have used any tool to block updates, undo it."
|
||||||
)
|
)
|
||||||
) else (
|
) else (
|
||||||
%psc% "Start-Job { Start-Service wuauserv } | Wait-Job -Timeout 20 | Out-Null"
|
%psc% "Start-Job { Start-Service wuauserv } | Wait-Job -Timeout 20 | Out-Null"
|
||||||
sc query wuauserv | find /i "RUNNING" %nul% || (
|
sc query wuauserv | find /i "RUNNING" %nul% || (
|
||||||
|
set error=1
|
||||||
set wuerror=1
|
set wuerror=1
|
||||||
sc start wuauserv %nul%
|
sc start wuauserv %nul%
|
||||||
call :dk_color %Red% "Starting Windows Update Service [Failed] [!errorlevel!]"
|
call :dk_color %Red% "Starting Windows Update Service [Failed] [!errorlevel!]"
|
||||||
call :dk_color %Blue% "HWID activation needs working Windows updates, if you have used any tool to block updates, undo it."
|
call :dk_color %Blue% "HWID activation needs working Windows updates, if you have used any tool to block updates, undo it."
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
)
|
||||||
|
|
||||||
REM Check Internet related error codes
|
::==========================================================================================================================================
|
||||||
|
|
||||||
if not defined wucorrupt if not defined wublock if not defined wuerror if not defined storeblock (
|
:: Check Internet related error codes
|
||||||
|
|
||||||
|
if %keyerror% EQU 0 if not defined _perm if defined _int (
|
||||||
|
if not defined wucorrupt if not defined wublock if not defined wuerror if not defined storeblock if not defined resfail (
|
||||||
echo "%error_code%" | findstr /i "0x80072e 0x80072f 0x800704cf 0x87e10bcf 0x800705b4" %nul% && (
|
echo "%error_code%" | findstr /i "0x80072e 0x80072f 0x800704cf 0x87e10bcf 0x800705b4" %nul% && (
|
||||||
call :dk_color %Red% "Checking Internet Issues [Found] %error_code%"
|
call :dk_color %Red% "Checking Internet Issues [Found] %error_code%"
|
||||||
set fixes=%fixes% %mas%licensing-servers-issue
|
set fixes=%fixes% %mas%licensing-servers-issue
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%licensing-servers-issue"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%licensing-servers-issue"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -722,11 +770,11 @@ call :dk_color %Green% "%winos% is permanently activated with a digital license.
|
|||||||
call :dk_color %Red% "Activation Failed %error_code%"
|
call :dk_color %Red% "Activation Failed %error_code%"
|
||||||
if defined notworking (
|
if defined notworking (
|
||||||
call :dk_color %Blue% "At the time of writing, HWID Activation is not supported for this product."
|
call :dk_color %Blue% "At the time of writing, HWID Activation is not supported for this product."
|
||||||
call :dk_color %Blue% "Use KMS38 activation option instead."
|
call :dk_color %Blue% "Use TSforge activation option from the main menu instead."
|
||||||
) else (
|
) else (
|
||||||
if not defined error call :dk_color %Blue% "%_fixmsg%"
|
if not defined error call :dk_color %Blue% "%_fixmsg%"
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -760,7 +808,7 @@ goto :dk_done
|
|||||||
|
|
||||||
:dk_setvar
|
:dk_setvar
|
||||||
|
|
||||||
set psc=powershell.exe
|
set psc=powershell.exe -nop -c
|
||||||
set winbuild=1
|
set winbuild=1
|
||||||
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
|
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
|
||||||
|
|
||||||
@ -1032,7 +1080,7 @@ echo sc start sppsvc [Error Code: %spperror%]
|
|||||||
)
|
)
|
||||||
|
|
||||||
echo:
|
echo:
|
||||||
%psc% "$job = Start-Job { (Get-WmiObject -Query 'SELECT * FROM %sps%').Version }; if (-not (Wait-Job $job -Timeout 30)) {write-host 'sppsvc is not working correctly. Help - %mas%troubleshoot'}"
|
%psc% "$job = Start-Job { (Get-WmiObject -Query 'SELECT * FROM %sps%').Version }; if (-not (Wait-Job $job -Timeout 30)) {write-host 'sppsvc is not working correctly. Check this webpage for help - %mas%troubleshoot'}"
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
:: Get Product name (WMI/REG methods are not reliable in all conditions, hence winbrand.dll method is used)
|
:: Get Product name (WMI/REG methods are not reliable in all conditions, hence winbrand.dll method is used)
|
||||||
@ -1108,7 +1156,7 @@ if defined pupfound call :dk_color %Gray% "Checking PUP Activators
|
|||||||
if defined results call :dk_color %Red% "Checking Probable Mal%w%ware Infection..."
|
if defined results call :dk_color %Red% "Checking Probable Mal%w%ware Infection..."
|
||||||
if defined results call :dk_color %Red% "%results%"
|
if defined results call :dk_color %Red% "%results%"
|
||||||
set fixes=%fixes% %mas%remove_mal%w%ware
|
set fixes=%fixes% %mas%remove_mal%w%ware
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%remove_mal%w%ware"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%remove_mal%w%ware"
|
||||||
echo:
|
echo:
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1228,7 +1276,7 @@ set showfix=1
|
|||||||
)
|
)
|
||||||
echo %serv_e% | findstr /i "sppsvc-1060" %nul% && (
|
echo %serv_e% | findstr /i "sppsvc-1060" %nul% && (
|
||||||
set fixes=%fixes% %mas%fix_service
|
set fixes=%fixes% %mas%fix_service
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%fix_service"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%fix_service"
|
||||||
set showfix=1
|
set showfix=1
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -1249,10 +1297,10 @@ call :dk_color2 %Red% "Checking Boot Mode [%safeboot_option
|
|||||||
for /f "skip=2 tokens=2*" %%A in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State" /v ImageState') do (set imagestate=%%B)
|
for /f "skip=2 tokens=2*" %%A in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State" /v ImageState') do (set imagestate=%%B)
|
||||||
|
|
||||||
if /i not "%imagestate%"=="IMAGE_STATE_COMPLETE" (
|
if /i not "%imagestate%"=="IMAGE_STATE_COMPLETE" (
|
||||||
set error=1
|
|
||||||
set showfix=1
|
|
||||||
call :dk_color %Gray% "Checking Windows Setup State [%imagestate%]"
|
call :dk_color %Gray% "Checking Windows Setup State [%imagestate%]"
|
||||||
echo "%imagestate%" | find /i "RESEAL" %nul% && (
|
echo "%imagestate%" | find /i "RESEAL" %nul% && (
|
||||||
|
set error=1
|
||||||
|
set showfix=1
|
||||||
call :dk_color %Blue% "You need to run it in normal mode in case you are running it in Audit Mode."
|
call :dk_color %Blue% "You need to run it in normal mode in case you are running it in Audit Mode."
|
||||||
)
|
)
|
||||||
echo "%imagestate%" | find /i "UNDEPLOYABLE" %nul% && (
|
echo "%imagestate%" | find /i "UNDEPLOYABLE" %nul% && (
|
||||||
@ -1281,12 +1329,11 @@ echo Checking WPA Registry Count [%wpainfo%]
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
if not defined officeact if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" (
|
if not defined notwinact if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" (
|
||||||
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul2% | find /i "Eval" %nul1% || (
|
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul2% | find /i "Eval" %nul1% || (
|
||||||
set error=1
|
|
||||||
call :dk_color %Red% "Checking Eval Packages [Non-Eval Licenses are installed in Eval Windows]"
|
call :dk_color %Red% "Checking Eval Packages [Non-Eval Licenses are installed in Eval Windows]"
|
||||||
set fixes=%fixes% %mas%evaluation_editions
|
set fixes=%fixes% %mas%evaluation_editions
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%evaluation_editions"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%evaluation_editions"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1305,19 +1352,17 @@ if "%osSKU%"=="164" set osedition=ProfessionalEducation
|
|||||||
if "%osSKU%"=="165" set osedition=ProfessionalEducationN
|
if "%osSKU%"=="165" set osedition=ProfessionalEducationN
|
||||||
)
|
)
|
||||||
|
|
||||||
if not defined officeact (
|
if not defined notwinact (
|
||||||
if %osedition%==0 (
|
if %osedition%==0 (
|
||||||
call :dk_color %Red% "Checking Edition Name [Not Found In Registry]"
|
call :dk_color %Red% "Checking Edition Name [Not Found In Registry]"
|
||||||
) else (
|
) else (
|
||||||
|
|
||||||
if not exist "%SysPath%\spp\tokens\skus\%osedition%\%osedition%*.xrm-ms" if not exist "%SysPath%\spp\tokens\skus\Security-SPP-Component-SKU-%osedition%\*-%osedition%-*.xrm-ms" (
|
if not exist "%SysPath%\spp\tokens\skus\%osedition%\%osedition%*.xrm-ms" if not exist "%SysPath%\spp\tokens\skus\Security-SPP-Component-SKU-%osedition%\*-%osedition%-*.xrm-ms" (
|
||||||
set error=1
|
|
||||||
set skunotfound=1
|
set skunotfound=1
|
||||||
call :dk_color %Red% "Checking License Files [Not Found] [%osedition%]"
|
call :dk_color %Red% "Checking License Files [Not Found] [%osedition%]"
|
||||||
)
|
)
|
||||||
|
|
||||||
if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*-%osedition%-*.mum" (
|
if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*-%osedition%-*.mum" (
|
||||||
set error=1
|
|
||||||
call :dk_color %Red% "Checking Package Files [Not Found] [%osedition%]"
|
call :dk_color %Red% "Checking Package Files [Not Found] [%osedition%]"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -1348,7 +1393,7 @@ set showfix=1
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
if not defined officeact (
|
if not defined notwinact (
|
||||||
if %winbuild% GEQ 10240 (
|
if %winbuild% GEQ 10240 (
|
||||||
%nul% set /a "sum=%slcSKU%+%regSKU%+%wmiSKU%"
|
%nul% set /a "sum=%slcSKU%+%regSKU%+%wmiSKU%"
|
||||||
set /a "sum/=3"
|
set /a "sum/=3"
|
||||||
@ -1381,11 +1426,7 @@ call :dk_color2 %Red% "Checking ClipSVC " %Blue% "[System
|
|||||||
:: This "WLMS" service was included in previous Eval editions (which were activable) to automatically shut down the system every hour after the evaluation period expired and prevent SPPSVC from stopping.
|
:: This "WLMS" service was included in previous Eval editions (which were activable) to automatically shut down the system every hour after the evaluation period expired and prevent SPPSVC from stopping.
|
||||||
|
|
||||||
if exist "%SysPath%\wlms\wlms.exe" (
|
if exist "%SysPath%\wlms\wlms.exe" (
|
||||||
if %winbuild% LSS 9200 (
|
|
||||||
echo Checking Eval WLMS Service [Found]
|
echo Checking Eval WLMS Service [Found]
|
||||||
) else (
|
|
||||||
call :dk_color %Red% "Checking Eval WLMS Service [Found]"
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -1416,14 +1457,13 @@ for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT
|
|||||||
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "SkipRearm" /t REG_DWORD /d "0" /f %nul%
|
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "SkipRearm" /t REG_DWORD /d "0" /f %nul%
|
||||||
call :dk_color %Red% "Checking SkipRearm [Default 0 Value Not Found. Changing To 0]"
|
call :dk_color %Red% "Checking SkipRearm [Default 0 Value Not Found. Changing To 0]"
|
||||||
%psc% "Start-Job { Stop-Service sppsvc -force } | Wait-Job -Timeout 20 | Out-Null"
|
%psc% "Start-Job { Stop-Service sppsvc -force } | Wait-Job -Timeout 20 | Out-Null"
|
||||||
set error=1
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\Plugins\Objects\msft:rm/algorithm/hwid/4.0" /f ba02fed39662 /d %nul% || (
|
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\Plugins\Objects\msft:rm/algorithm/hwid/4.0" /f ba02fed39662 /d %nul% || (
|
||||||
call :dk_color %Red% "Checking SPP Registry Key [Incorrect ModuleId Found]"
|
call :dk_color %Red% "Checking SPP Registry Key [Incorrect ModuleId Found]"
|
||||||
set fixes=%fixes% %mas%issues_due_to_gaming_spoofers
|
set fixes=%fixes% %mas%issues_due_to_gaming_spoofers
|
||||||
call :dk_color2 %Blue% "Most likely caused by HWID spoofers. Help - " %_Yellow% " %mas%issues_due_to_gaming_spoofers"
|
call :dk_color2 %Blue% "Most likely caused by gaming spoofers. Check this webpage for help - " %_Yellow% " %mas%issues_due_to_gaming_spoofers"
|
||||||
set error=1
|
set error=1
|
||||||
set showfix=1
|
set showfix=1
|
||||||
)
|
)
|
||||||
@ -1438,7 +1478,7 @@ set error=1
|
|||||||
set showfix=1
|
set showfix=1
|
||||||
call :dk_color %Red% "Checking TokenStore Registry Key [Correct Path Not Found] [%tokenstore%]"
|
call :dk_color %Red% "Checking TokenStore Registry Key [Correct Path Not Found] [%tokenstore%]"
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -1462,6 +1502,7 @@ set showfix=1
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
if not defined notwinact (
|
||||||
call :dk_actid 55c92734-d682-4d71-983e-d6ec3f16059f
|
call :dk_actid 55c92734-d682-4d71-983e-d6ec3f16059f
|
||||||
if not defined apps (
|
if not defined apps (
|
||||||
%psc% "Start-Job { Stop-Service sppsvc -force } | Wait-Job -Timeout 20 | Out-Null; $sls = Get-WmiObject SoftwareLicensingService; $f=[io.file]::ReadAllText('!_batp!') -split ':xrm\:.*';iex ($f[1]); ReinstallLicenses" %nul%
|
%psc% "Start-Job { Stop-Service sppsvc -force } | Wait-Job -Timeout 20 | Out-Null; $sls = Get-WmiObject SoftwareLicensingService; $f=[io.file]::ReadAllText('!_batp!') -split ':xrm\:.*';iex ($f[1]); ReinstallLicenses" %nul%
|
||||||
@ -1470,12 +1511,13 @@ if not defined apps (
|
|||||||
set "_notfoundids=Key Not Installed / Act ID Not Found"
|
set "_notfoundids=Key Not Installed / Act ID Not Found"
|
||||||
call :dk_actids 55c92734-d682-4d71-983e-d6ec3f16059f
|
call :dk_actids 55c92734-d682-4d71-983e-d6ec3f16059f
|
||||||
if not defined allapps (
|
if not defined allapps (
|
||||||
|
set error=1
|
||||||
set "_notfoundids=Not found"
|
set "_notfoundids=Not found"
|
||||||
)
|
)
|
||||||
set error=1
|
|
||||||
call :dk_color %Red% "Checking Activation IDs [!_notfoundids!]"
|
call :dk_color %Red% "Checking Activation IDs [!_notfoundids!]"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
if exist "%tokenstore%\" if not exist "%tokenstore%\tokens.dat" (
|
if exist "%tokenstore%\" if not exist "%tokenstore%\tokens.dat" (
|
||||||
@ -1485,12 +1527,15 @@ call :dk_color %Red% "Checking SPP tokens.dat [Not Found] [%toke
|
|||||||
|
|
||||||
|
|
||||||
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% || (
|
||||||
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% "(Get-ScheduledTask -TaskName 'SvcRestartTask' -TaskPath '\Microsoft\Windows\SoftwareProtectionPlatform\').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 %Red% "Checking SvcRestartTask Status [!taskinfo!, System might deactivate later]"
|
||||||
|
if not defined error call :dk_color %Blue% "Reboot your machine using the restart option."
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1558,7 +1603,7 @@ exit /b
|
|||||||
$wpaKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $env:COMPUTERNAME).OpenSubKey("SYSTEM\\WPA")
|
$wpaKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $env:COMPUTERNAME).OpenSubKey("SYSTEM\\WPA")
|
||||||
$count = 0
|
$count = 0
|
||||||
foreach ($subkeyName in $wpaKey.GetSubKeyNames()) {
|
foreach ($subkeyName in $wpaKey.GetSubKeyNames()) {
|
||||||
if ($subkeyName -match '.*-.*-.*-.*-.*-') {
|
if ($subkeyName -match '8DEC0AF1-0341-4b93-85CD-72606C2DF94C.*') {
|
||||||
$count++
|
$count++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1567,7 +1612,7 @@ $minBuildNumber = 14393
|
|||||||
if ($osVersion.Build -ge $minBuildNumber) {
|
if ($osVersion.Build -ge $minBuildNumber) {
|
||||||
$subkeyHashTable = @{}
|
$subkeyHashTable = @{}
|
||||||
foreach ($subkeyName in $wpaKey.GetSubKeyNames()) {
|
foreach ($subkeyName in $wpaKey.GetSubKeyNames()) {
|
||||||
if ($subkeyName -match '.*-.*-.*-.*-.*-') {
|
if ($subkeyName -match '8DEC0AF1-0341-4b93-85CD-72606C2DF94C.*') {
|
||||||
$keyNumber = $subkeyName -replace '.*-', ''
|
$keyNumber = $subkeyName -replace '.*-', ''
|
||||||
$subkeyHashTable[$keyNumber] = $true
|
$subkeyHashTable[$keyNumber] = $true
|
||||||
}
|
}
|
||||||
@ -1581,7 +1626,7 @@ if ($osVersion.Build -ge $minBuildNumber) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
$wpaKey.GetSubKeyNames() | ForEach-Object {
|
$wpaKey.GetSubKeyNames() | ForEach-Object {
|
||||||
if ($_ -match '.*-.*-.*-.*-.*-') {
|
if ($_ -match '8DEC0AF1-0341-4b93-85CD-72606C2DF94C.*') {
|
||||||
if ($PSVersionTable.PSVersion.Major -lt 3) {
|
if ($PSVersionTable.PSVersion.Major -lt 3) {
|
||||||
cmd /c "reg query "HKLM\SYSTEM\WPA\$_" /ve /t REG_BINARY >nul 2>&1"
|
cmd /c "reg query "HKLM\SYSTEM\WPA\$_" /ve /t REG_BINARY >nul 2>&1"
|
||||||
if ($LASTEXITCODE -ne 0) {
|
if ($LASTEXITCODE -ne 0) {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
@set masver=2.9
|
@set masver=3.0
|
||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
|
|
||||||
@ -112,7 +112,7 @@ echo:
|
|||||||
echo Null service is not running, script may crash...
|
echo Null service is not running, script may crash...
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
echo Help - %mas%fix_service
|
echo Check this webpage for help - %mas%fix_service
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
ping 127.0.0.1 -n 20
|
ping 127.0.0.1 -n 20
|
||||||
@ -127,7 +127,7 @@ echo:
|
|||||||
echo Error - Script either has LF line ending issue or an empty line at the end of the script is missing.
|
echo Error - Script either has LF line ending issue or an empty line at the end of the script is missing.
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
echo Help - %mas%troubleshoot
|
echo Check this webpage for help - %mas%troubleshoot
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
ping 127.0.0.1 -n 20 >nul
|
ping 127.0.0.1 -n 20 >nul
|
||||||
@ -167,15 +167,25 @@ set _k38=
|
|||||||
call :dk_setvar
|
call :dk_setvar
|
||||||
set "specific_kms=SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\55c92734-d682-4d71-983e-d6ec3f16059f"
|
set "specific_kms=SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\55c92734-d682-4d71-983e-d6ec3f16059f"
|
||||||
|
|
||||||
|
if %winbuild% EQU 1 (
|
||||||
|
%eline%
|
||||||
|
echo Failed to detect Windows build number.
|
||||||
|
echo:
|
||||||
|
setlocal EnableDelayedExpansion
|
||||||
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
if %winbuild% LSS 14393 (
|
if %winbuild% LSS 14393 (
|
||||||
%eline%
|
%eline%
|
||||||
echo Unsupported OS version detected [%winbuild%].
|
echo Unsupported OS version detected [%winbuild%].
|
||||||
echo KMS38 activation is only supported on Windows 10/11/Server, build 14393 and later.
|
echo KMS38 activation is only supported on Windows 10/11/Server, build 14393 and later.
|
||||||
echo:
|
echo:
|
||||||
if %winbuild% LSS 10240 (
|
if %winbuild% LSS 10240 (
|
||||||
call :dk_color %Blue% "Use Online KMS activation option."
|
call :dk_color %Blue% "Use TSforge activation option from the main menu."
|
||||||
) else (
|
) else (
|
||||||
call :dk_color %Blue% "Use HWID activation option."
|
call :dk_color %Blue% "Use HWID activation option from the main menu."
|
||||||
)
|
)
|
||||||
goto dk_done
|
goto dk_done
|
||||||
)
|
)
|
||||||
@ -212,33 +222,6 @@ goto dk_done
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:: Check PowerShell
|
|
||||||
|
|
||||||
REM :PStest: $ExecutionContext.SessionState.LanguageMode :PStest:
|
|
||||||
|
|
||||||
cmd /c "%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':PStest:\s*';iex ($f[1])"" | find /i "FullLanguage" %nul1% || (
|
|
||||||
%eline%
|
|
||||||
cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode""
|
|
||||||
echo:
|
|
||||||
cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode"" | find /i "FullLanguage" %nul1% && (
|
|
||||||
echo Failed to run Powershell command but Powershell is working.
|
|
||||||
echo:
|
|
||||||
cmd /c "%psc% ""$av = Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct; $n = @(); foreach ($i in $av) { if ($i.displayName -notlike '*windows*') { $n += $i.displayName } }; if ($n) { Write-Host ('Installed 3rd party Antivirus might be blocking the script - ' + ($n -join ', ')) -ForegroundColor White -BackgroundColor Blue }"""
|
|
||||||
echo:
|
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
|
||||||
) || (
|
|
||||||
echo PowerShell is not working. Aborting...
|
|
||||||
echo If you have applied restrictions on Powershell then undo those changes.
|
|
||||||
echo:
|
|
||||||
set fixes=%fixes% %mas%fix_powershell
|
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%fix_powershell"
|
|
||||||
)
|
|
||||||
goto dk_done
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Elevate script as admin and pass arguments and preventing loop
|
:: Elevate script as admin and pass arguments and preventing loop
|
||||||
|
|
||||||
%nul1% fltmc || (
|
%nul1% fltmc || (
|
||||||
@ -251,6 +234,58 @@ goto dk_done
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
:: Check PowerShell
|
||||||
|
|
||||||
|
::pstst $ExecutionContext.SessionState.LanguageMode :pstst
|
||||||
|
|
||||||
|
for /f "delims=" %%a in ('cmd /c "%psc% ""if ($PSVersionTable.PSEdition -ne 'Core') {$f=[io.file]::ReadAllText('!_batp!') -split ':pstst';iex ($f[1])}""" %nul6%') do (set tstresult=%%a)
|
||||||
|
|
||||||
|
if /i not "%tstresult%"=="FullLanguage" (
|
||||||
|
%eline%
|
||||||
|
echo: %tstresult%
|
||||||
|
cmd /c "%psc% $ExecutionContext.SessionState.LanguageMode"
|
||||||
|
|
||||||
|
REM check LanguageMode
|
||||||
|
|
||||||
|
cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode"" | findstr /i "ConstrainedLanguage RestrictedLanguage NoLanguage" %nul1% && (
|
||||||
|
echo FullLanguage mode not found in PowerShell. Aborting...
|
||||||
|
echo If you have applied restrictions on Powershell then undo those changes.
|
||||||
|
echo:
|
||||||
|
set fixes=%fixes% %mas%fix_powershell
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%fix_powershell"
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
|
REM check Powershell core version
|
||||||
|
|
||||||
|
cmd /c "%psc% "$PSVersionTable.PSEdition"" | find /i "Core" %nul1% && (
|
||||||
|
echo Windows Powershell is needed for MAS but it seems to be replaced with Powershell core. Aborting...
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
|
REM check for Mal-ware that may cause issues with Powershell
|
||||||
|
|
||||||
|
for /r "%ProgramFiles%\" %%f in (secureboot.exe) do if exist "%%f" (
|
||||||
|
echo "%%f"
|
||||||
|
echo Mal%blank%ware found, PowerShell is not working properly.
|
||||||
|
echo:
|
||||||
|
set fixes=%fixes% %mas%remove_mal%w%ware
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%remove_mal%w%ware"
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
|
REM check antivirus and other errors
|
||||||
|
|
||||||
|
echo PowerShell is not working properly. Aborting...
|
||||||
|
cmd /c "%psc% ""$av = Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct; $n = @(); foreach ($i in $av) { if ($i.displayName -notlike '*windows*') { $n += $i.displayName } }; if ($n) { Write-Host ('Installed 3rd party Antivirus might be blocking the script - ' + ($n -join ', ')) -ForegroundColor White -BackgroundColor Blue }"""
|
||||||
|
echo:
|
||||||
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
|
::========================================================================================================================================
|
||||||
|
|
||||||
:: Disable QuickEdit and launch from conhost.exe to avoid Terminal app
|
:: Disable QuickEdit and launch from conhost.exe to avoid Terminal app
|
||||||
|
|
||||||
if %winbuild% GEQ 17763 (
|
if %winbuild% GEQ 17763 (
|
||||||
@ -261,34 +296,33 @@ set terminal=
|
|||||||
|
|
||||||
:: Check if script is running in Terminal app
|
:: Check if script is running in Terminal app
|
||||||
|
|
||||||
set r1=$TB = [AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2, $False).DefineType(0);
|
|
||||||
set r2=%r1% [void]$TB.DefinePInvokeMethod('GetConsoleWindow', 'kernel32.dll', 22, 1, [IntPtr], @(), 1, 3).SetImplementationFlags(128);
|
|
||||||
set r3=%r2% [void]$TB.DefinePInvokeMethod('SendMessageW', 'user32.dll', 22, 1, [IntPtr], @([IntPtr], [UInt32], [IntPtr], [IntPtr]), 1, 3).SetImplementationFlags(128);
|
|
||||||
set d1=%r3% $hIcon = $TB.CreateType(); $hWnd = $hIcon::GetConsoleWindow();
|
|
||||||
set d2=%d1% echo $($hIcon::SendMessageW($hWnd, 127, 0, 0) -ne [IntPtr]::Zero);
|
|
||||||
|
|
||||||
if defined terminal (
|
if defined terminal (
|
||||||
%psc% "%d2%" %nul2% | find /i "True" %nul1% && set terminal=
|
set lines=0
|
||||||
|
for /f "skip=2 tokens=2 delims=: " %%A in ('mode con') do if "!lines!"=="0" set lines=%%A
|
||||||
|
if !lines! GEQ 100 set terminal=
|
||||||
)
|
)
|
||||||
|
|
||||||
if defined ps32onArm goto :skipQE
|
|
||||||
if %_unattended%==1 goto :skipQE
|
if %_unattended%==1 goto :skipQE
|
||||||
for %%# in (%_args%) do (if /i "%%#"=="-qedit" goto :skipQE)
|
for %%# in (%_args%) do (if /i "%%#"=="-qedit" goto :skipQE)
|
||||||
|
|
||||||
|
:: Relaunch to disable QuickEdit in the current session and use conhost.exe instead of the Terminal app
|
||||||
|
:: This code disables QuickEdit for the current cmd.exe session without making permanent registry changes
|
||||||
|
:: It is included because clicking on the script window can pause execution, causing confusion that the script has stopped due to an error
|
||||||
|
|
||||||
|
set resetQE=1
|
||||||
|
reg query HKCU\Console /v QuickEdit %nul2% | find /i "0x0" %nul1% && set resetQE=0
|
||||||
|
reg add HKCU\Console /v QuickEdit /t REG_DWORD /d 0 /f %nul1%
|
||||||
|
|
||||||
if defined terminal (
|
if defined terminal (
|
||||||
set "launchcmd=start conhost.exe %psc%"
|
start conhost.exe "!_batf!" %_args% -qedit
|
||||||
) else (
|
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
|
||||||
set "launchcmd=%psc%"
|
exit /b
|
||||||
|
) else if %resetQE% EQU 1 (
|
||||||
|
start cmd.exe /c ""!_batf!" %_args% -qedit"
|
||||||
|
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
|
||||||
|
exit /b
|
||||||
)
|
)
|
||||||
|
|
||||||
:: Disable QuickEdit in current session
|
|
||||||
|
|
||||||
set "d1=$t=[AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2, $False).DefineType(0);"
|
|
||||||
set "d2=$t.DefinePInvokeMethod('GetStdHandle', 'kernel32.dll', 22, 1, [IntPtr], @([Int32]), 1, 3).SetImplementationFlags(128);"
|
|
||||||
set "d3=$t.DefinePInvokeMethod('SetConsoleMode', 'kernel32.dll', 22, 1, [Boolean], @([IntPtr], [Int32]), 1, 3).SetImplementationFlags(128);"
|
|
||||||
set "d4=$k=$t.CreateType(); $b=$k::SetConsoleMode($k::GetStdHandle(-10), 0x0080);"
|
|
||||||
|
|
||||||
%launchcmd% "%d1% %d2% %d3% %d4% & cmd.exe '/c' '!_PSarg! -qedit'" && (exit /b) || (set terminal=1)
|
|
||||||
:skipQE
|
:skipQE
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
@ -297,9 +331,19 @@ set "d4=$k=$t.CreateType(); $b=$k::SetConsoleMode($k::GetStdHandle(-10), 0x0080)
|
|||||||
|
|
||||||
set -=
|
set -=
|
||||||
set old=
|
set old=
|
||||||
|
set pingp=
|
||||||
|
set upver=%masver:.=%
|
||||||
|
|
||||||
for /f "delims=[] tokens=2" %%# in ('ping -4 -n 1 updatecheck.mass%-%grave.dev') do (
|
for %%A in (
|
||||||
if not "%%#"=="" (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.69.%masver%" %nul1% || set old=1))
|
activ%-%ated.win
|
||||||
|
mass%-%grave.dev
|
||||||
|
) do if not defined pingp (
|
||||||
|
for /f "delims=[] tokens=2" %%B in ('ping -n 1 %%A') do (
|
||||||
|
if not "%%B"=="" (set old=1& set pingp=1)
|
||||||
|
for /f "delims=[] tokens=2" %%C in ('ping -n 1 updatecheck%upver%.%%A') do (
|
||||||
|
if not "%%C"=="" set old=
|
||||||
|
)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
if defined old (
|
if defined old (
|
||||||
@ -315,7 +359,7 @@ echo:
|
|||||||
call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :"
|
call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :"
|
||||||
choice /C:10 /N
|
choice /C:10 /N
|
||||||
if !errorlevel!==2 rem
|
if !errorlevel!==2 rem
|
||||||
if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b)
|
if !errorlevel!==1 (start %mas% & exit /b)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
cls
|
cls
|
||||||
@ -378,7 +422,7 @@ if defined _fmiss (
|
|||||||
echo [%_fmiss%] file is missing, aborting...
|
echo [%_fmiss%] file is missing, aborting...
|
||||||
echo:
|
echo:
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
goto dk_done
|
goto dk_done
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -431,10 +475,11 @@ echo Server Evaluation cannot be activated. Convert it to full Server OS.
|
|||||||
echo:
|
echo:
|
||||||
call :dk_color %Blue% "Go Back to main menu and use [Change Edition] option."
|
call :dk_color %Blue% "Go Back to main menu and use [Change Edition] option."
|
||||||
) else (
|
) else (
|
||||||
echo Evaluation editions cannot be activated outside of their evaluation period.
|
echo Evaluation editions cannot be activated outside of their evaluation period.
|
||||||
|
call :dk_color %Blue% "Use TSforge activation option from the main menu to reset evaluation period."
|
||||||
echo:
|
echo:
|
||||||
set fixes=%fixes% %mas%evaluation_editions
|
set fixes=%fixes% %mas%evaluation_editions
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%evaluation_editions"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%evaluation_editions"
|
||||||
)
|
)
|
||||||
goto dk_done
|
goto dk_done
|
||||||
)
|
)
|
||||||
@ -450,7 +495,7 @@ if not exist "!_work!\clipup.exe" (
|
|||||||
echo clipup.exe doesn't exist in Server Cor/Acor [No GUI] versions.
|
echo clipup.exe doesn't exist in Server Cor/Acor [No GUI] versions.
|
||||||
echo The file is required for KMS38 activation.
|
echo The file is required for KMS38 activation.
|
||||||
echo Check the below page for instructions on how to activate it.
|
echo Check the below page for instructions on how to activate it.
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%kms38"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%kms38"
|
||||||
goto dk_done
|
goto dk_done
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -462,7 +507,7 @@ if defined a_cor (
|
|||||||
if !errorlevel!==3 (
|
if !errorlevel!==3 (
|
||||||
%eline%
|
%eline%
|
||||||
echo Valid digital signature not found in clipup.exe file.
|
echo Valid digital signature not found in clipup.exe file.
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
goto dk_done
|
goto dk_done
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -530,18 +575,18 @@ if exist "%SysPath%\spp\tokens\skus\%osedition%\*GVLK*.xrm-ms" set sppks=1
|
|||||||
if defined skunotfound (
|
if defined skunotfound (
|
||||||
call :dk_color %Red% "Required license files not found in %SysPath%\spp\tokens\skus\"
|
call :dk_color %Red% "Required license files not found in %SysPath%\spp\tokens\skus\"
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
)
|
)
|
||||||
|
|
||||||
if defined sppks (
|
if defined sppks (
|
||||||
call :dk_color %Red% "KMS38 activation is supported but failed to find the key."
|
call :dk_color %Red% "KMS38 activation is supported but failed to find the key."
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
)
|
)
|
||||||
|
|
||||||
if not defined skunotfound if not defined sppks (
|
if not defined skunotfound if not defined sppks (
|
||||||
call :dk_color %Red% "This product does not support KMS38 activation."
|
call :dk_color %Red% "This product does not support KMS38 activation."
|
||||||
call :dk_color %Blue% "Make sure you are using the latest version of the script."
|
call :dk_color %Blue% "Use TSforge activation option from the main menu."
|
||||||
set fixes=%fixes% %mas%
|
set fixes=%fixes% %mas%
|
||||||
echo %mas%
|
echo %mas%
|
||||||
)
|
)
|
||||||
@ -586,7 +631,7 @@ if %_wmic% EQU 0 for /f "tokens=2 delims==" %%a in ('%psc% "(([WMISEARCHER]'SELE
|
|||||||
if not defined app (
|
if not defined app (
|
||||||
call :dk_color %Red% "Checking Installed GVLK Activation ID [Not Found] Aborting..."
|
call :dk_color %Red% "Checking Installed GVLK Activation ID [Not Found] Aborting..."
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
goto :dk_done
|
goto :dk_done
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -754,7 +799,7 @@ goto :k_final
|
|||||||
call :dk_color %Red% "Activation Failed"
|
call :dk_color %Red% "Activation Failed"
|
||||||
if not defined error call :dk_color %Blue% "%_fixmsg%"
|
if not defined error call :dk_color %Blue% "%_fixmsg%"
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
@ -869,7 +914,7 @@ $key.SetAccessControl($acl)
|
|||||||
|
|
||||||
:dk_setvar
|
:dk_setvar
|
||||||
|
|
||||||
set psc=powershell.exe
|
set psc=powershell.exe -nop -c
|
||||||
set winbuild=1
|
set winbuild=1
|
||||||
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
|
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
|
||||||
|
|
||||||
@ -1139,7 +1184,7 @@ echo sc start sppsvc [Error Code: %spperror%]
|
|||||||
)
|
)
|
||||||
|
|
||||||
echo:
|
echo:
|
||||||
%psc% "$job = Start-Job { (Get-WmiObject -Query 'SELECT * FROM %sps%').Version }; if (-not (Wait-Job $job -Timeout 30)) {write-host 'sppsvc is not working correctly. Help - %mas%troubleshoot'}"
|
%psc% "$job = Start-Job { (Get-WmiObject -Query 'SELECT * FROM %sps%').Version }; if (-not (Wait-Job $job -Timeout 30)) {write-host 'sppsvc is not working correctly. Check this webpage for help - %mas%troubleshoot'}"
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
:: Get Product name (WMI/REG methods are not reliable in all conditions, hence winbrand.dll method is used)
|
:: Get Product name (WMI/REG methods are not reliable in all conditions, hence winbrand.dll method is used)
|
||||||
@ -1260,7 +1305,7 @@ if defined pupfound call :dk_color %Gray% "Checking PUP Activators
|
|||||||
if defined results call :dk_color %Red% "Checking Probable Mal%w%ware Infection..."
|
if defined results call :dk_color %Red% "Checking Probable Mal%w%ware Infection..."
|
||||||
if defined results call :dk_color %Red% "%results%"
|
if defined results call :dk_color %Red% "%results%"
|
||||||
set fixes=%fixes% %mas%remove_mal%w%ware
|
set fixes=%fixes% %mas%remove_mal%w%ware
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%remove_mal%w%ware"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%remove_mal%w%ware"
|
||||||
echo:
|
echo:
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1380,7 +1425,7 @@ set showfix=1
|
|||||||
)
|
)
|
||||||
echo %serv_e% | findstr /i "sppsvc-1060" %nul% && (
|
echo %serv_e% | findstr /i "sppsvc-1060" %nul% && (
|
||||||
set fixes=%fixes% %mas%fix_service
|
set fixes=%fixes% %mas%fix_service
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%fix_service"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%fix_service"
|
||||||
set showfix=1
|
set showfix=1
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -1401,10 +1446,10 @@ call :dk_color2 %Red% "Checking Boot Mode [%safeboot_option
|
|||||||
for /f "skip=2 tokens=2*" %%A in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State" /v ImageState') do (set imagestate=%%B)
|
for /f "skip=2 tokens=2*" %%A in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State" /v ImageState') do (set imagestate=%%B)
|
||||||
|
|
||||||
if /i not "%imagestate%"=="IMAGE_STATE_COMPLETE" (
|
if /i not "%imagestate%"=="IMAGE_STATE_COMPLETE" (
|
||||||
set error=1
|
|
||||||
set showfix=1
|
|
||||||
call :dk_color %Gray% "Checking Windows Setup State [%imagestate%]"
|
call :dk_color %Gray% "Checking Windows Setup State [%imagestate%]"
|
||||||
echo "%imagestate%" | find /i "RESEAL" %nul% && (
|
echo "%imagestate%" | find /i "RESEAL" %nul% && (
|
||||||
|
set error=1
|
||||||
|
set showfix=1
|
||||||
call :dk_color %Blue% "You need to run it in normal mode in case you are running it in Audit Mode."
|
call :dk_color %Blue% "You need to run it in normal mode in case you are running it in Audit Mode."
|
||||||
)
|
)
|
||||||
echo "%imagestate%" | find /i "UNDEPLOYABLE" %nul% && (
|
echo "%imagestate%" | find /i "UNDEPLOYABLE" %nul% && (
|
||||||
@ -1433,12 +1478,11 @@ echo Checking WPA Registry Count [%wpainfo%]
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
if not defined officeact if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" (
|
if not defined notwinact if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" (
|
||||||
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul2% | find /i "Eval" %nul1% || (
|
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul2% | find /i "Eval" %nul1% || (
|
||||||
set error=1
|
|
||||||
call :dk_color %Red% "Checking Eval Packages [Non-Eval Licenses are installed in Eval Windows]"
|
call :dk_color %Red% "Checking Eval Packages [Non-Eval Licenses are installed in Eval Windows]"
|
||||||
set fixes=%fixes% %mas%evaluation_editions
|
set fixes=%fixes% %mas%evaluation_editions
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%evaluation_editions"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%evaluation_editions"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1457,19 +1501,17 @@ if "%osSKU%"=="164" set osedition=ProfessionalEducation
|
|||||||
if "%osSKU%"=="165" set osedition=ProfessionalEducationN
|
if "%osSKU%"=="165" set osedition=ProfessionalEducationN
|
||||||
)
|
)
|
||||||
|
|
||||||
if not defined officeact (
|
if not defined notwinact (
|
||||||
if %osedition%==0 (
|
if %osedition%==0 (
|
||||||
call :dk_color %Red% "Checking Edition Name [Not Found In Registry]"
|
call :dk_color %Red% "Checking Edition Name [Not Found In Registry]"
|
||||||
) else (
|
) else (
|
||||||
|
|
||||||
if not exist "%SysPath%\spp\tokens\skus\%osedition%\%osedition%*.xrm-ms" if not exist "%SysPath%\spp\tokens\skus\Security-SPP-Component-SKU-%osedition%\*-%osedition%-*.xrm-ms" (
|
if not exist "%SysPath%\spp\tokens\skus\%osedition%\%osedition%*.xrm-ms" if not exist "%SysPath%\spp\tokens\skus\Security-SPP-Component-SKU-%osedition%\*-%osedition%-*.xrm-ms" (
|
||||||
set error=1
|
|
||||||
set skunotfound=1
|
set skunotfound=1
|
||||||
call :dk_color %Red% "Checking License Files [Not Found] [%osedition%]"
|
call :dk_color %Red% "Checking License Files [Not Found] [%osedition%]"
|
||||||
)
|
)
|
||||||
|
|
||||||
if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*-%osedition%-*.mum" (
|
if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*-%osedition%-*.mum" (
|
||||||
set error=1
|
|
||||||
call :dk_color %Red% "Checking Package Files [Not Found] [%osedition%]"
|
call :dk_color %Red% "Checking Package Files [Not Found] [%osedition%]"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -1500,7 +1542,7 @@ set showfix=1
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
if not defined officeact (
|
if not defined notwinact (
|
||||||
if %winbuild% GEQ 10240 (
|
if %winbuild% GEQ 10240 (
|
||||||
%nul% set /a "sum=%slcSKU%+%regSKU%+%wmiSKU%"
|
%nul% set /a "sum=%slcSKU%+%regSKU%+%wmiSKU%"
|
||||||
set /a "sum/=3"
|
set /a "sum/=3"
|
||||||
@ -1533,11 +1575,7 @@ call :dk_color2 %Red% "Checking ClipSVC " %Blue% "[System
|
|||||||
:: This "WLMS" service was included in previous Eval editions (which were activable) to automatically shut down the system every hour after the evaluation period expired and prevent SPPSVC from stopping.
|
:: This "WLMS" service was included in previous Eval editions (which were activable) to automatically shut down the system every hour after the evaluation period expired and prevent SPPSVC from stopping.
|
||||||
|
|
||||||
if exist "%SysPath%\wlms\wlms.exe" (
|
if exist "%SysPath%\wlms\wlms.exe" (
|
||||||
if %winbuild% LSS 9200 (
|
|
||||||
echo Checking Eval WLMS Service [Found]
|
echo Checking Eval WLMS Service [Found]
|
||||||
) else (
|
|
||||||
call :dk_color %Red% "Checking Eval WLMS Service [Found]"
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -1568,14 +1606,13 @@ for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT
|
|||||||
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "SkipRearm" /t REG_DWORD /d "0" /f %nul%
|
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "SkipRearm" /t REG_DWORD /d "0" /f %nul%
|
||||||
call :dk_color %Red% "Checking SkipRearm [Default 0 Value Not Found. Changing To 0]"
|
call :dk_color %Red% "Checking SkipRearm [Default 0 Value Not Found. Changing To 0]"
|
||||||
%psc% "Start-Job { Stop-Service sppsvc -force } | Wait-Job -Timeout 20 | Out-Null"
|
%psc% "Start-Job { Stop-Service sppsvc -force } | Wait-Job -Timeout 20 | Out-Null"
|
||||||
set error=1
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\Plugins\Objects\msft:rm/algorithm/hwid/4.0" /f ba02fed39662 /d %nul% || (
|
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\Plugins\Objects\msft:rm/algorithm/hwid/4.0" /f ba02fed39662 /d %nul% || (
|
||||||
call :dk_color %Red% "Checking SPP Registry Key [Incorrect ModuleId Found]"
|
call :dk_color %Red% "Checking SPP Registry Key [Incorrect ModuleId Found]"
|
||||||
set fixes=%fixes% %mas%issues_due_to_gaming_spoofers
|
set fixes=%fixes% %mas%issues_due_to_gaming_spoofers
|
||||||
call :dk_color2 %Blue% "Most likely caused by HWID spoofers. Help - " %_Yellow% " %mas%issues_due_to_gaming_spoofers"
|
call :dk_color2 %Blue% "Most likely caused by gaming spoofers. Check this webpage for help - " %_Yellow% " %mas%issues_due_to_gaming_spoofers"
|
||||||
set error=1
|
set error=1
|
||||||
set showfix=1
|
set showfix=1
|
||||||
)
|
)
|
||||||
@ -1590,7 +1627,7 @@ set error=1
|
|||||||
set showfix=1
|
set showfix=1
|
||||||
call :dk_color %Red% "Checking TokenStore Registry Key [Correct Path Not Found] [%tokenstore%]"
|
call :dk_color %Red% "Checking TokenStore Registry Key [Correct Path Not Found] [%tokenstore%]"
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -1614,6 +1651,7 @@ set showfix=1
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
if not defined notwinact (
|
||||||
call :dk_actid 55c92734-d682-4d71-983e-d6ec3f16059f
|
call :dk_actid 55c92734-d682-4d71-983e-d6ec3f16059f
|
||||||
if not defined apps (
|
if not defined apps (
|
||||||
%psc% "Start-Job { Stop-Service sppsvc -force } | Wait-Job -Timeout 20 | Out-Null; $sls = Get-WmiObject SoftwareLicensingService; $f=[io.file]::ReadAllText('!_batp!') -split ':xrm\:.*';iex ($f[1]); ReinstallLicenses" %nul%
|
%psc% "Start-Job { Stop-Service sppsvc -force } | Wait-Job -Timeout 20 | Out-Null; $sls = Get-WmiObject SoftwareLicensingService; $f=[io.file]::ReadAllText('!_batp!') -split ':xrm\:.*';iex ($f[1]); ReinstallLicenses" %nul%
|
||||||
@ -1622,12 +1660,13 @@ if not defined apps (
|
|||||||
set "_notfoundids=Key Not Installed / Act ID Not Found"
|
set "_notfoundids=Key Not Installed / Act ID Not Found"
|
||||||
call :dk_actids 55c92734-d682-4d71-983e-d6ec3f16059f
|
call :dk_actids 55c92734-d682-4d71-983e-d6ec3f16059f
|
||||||
if not defined allapps (
|
if not defined allapps (
|
||||||
|
set error=1
|
||||||
set "_notfoundids=Not found"
|
set "_notfoundids=Not found"
|
||||||
)
|
)
|
||||||
set error=1
|
|
||||||
call :dk_color %Red% "Checking Activation IDs [!_notfoundids!]"
|
call :dk_color %Red% "Checking Activation IDs [!_notfoundids!]"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
if exist "%tokenstore%\" if not exist "%tokenstore%\tokens.dat" (
|
if exist "%tokenstore%\" if not exist "%tokenstore%\tokens.dat" (
|
||||||
@ -1637,12 +1676,15 @@ call :dk_color %Red% "Checking SPP tokens.dat [Not Found] [%toke
|
|||||||
|
|
||||||
|
|
||||||
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% || (
|
||||||
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% "(Get-ScheduledTask -TaskName 'SvcRestartTask' -TaskPath '\Microsoft\Windows\SoftwareProtectionPlatform\').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 %Red% "Checking SvcRestartTask Status [!taskinfo!, System might deactivate later]"
|
||||||
|
if not defined error call :dk_color %Blue% "Reboot your machine using the restart option."
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1710,7 +1752,7 @@ exit /b
|
|||||||
$wpaKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $env:COMPUTERNAME).OpenSubKey("SYSTEM\\WPA")
|
$wpaKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $env:COMPUTERNAME).OpenSubKey("SYSTEM\\WPA")
|
||||||
$count = 0
|
$count = 0
|
||||||
foreach ($subkeyName in $wpaKey.GetSubKeyNames()) {
|
foreach ($subkeyName in $wpaKey.GetSubKeyNames()) {
|
||||||
if ($subkeyName -match '.*-.*-.*-.*-.*-') {
|
if ($subkeyName -match '8DEC0AF1-0341-4b93-85CD-72606C2DF94C.*') {
|
||||||
$count++
|
$count++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1719,7 +1761,7 @@ $minBuildNumber = 14393
|
|||||||
if ($osVersion.Build -ge $minBuildNumber) {
|
if ($osVersion.Build -ge $minBuildNumber) {
|
||||||
$subkeyHashTable = @{}
|
$subkeyHashTable = @{}
|
||||||
foreach ($subkeyName in $wpaKey.GetSubKeyNames()) {
|
foreach ($subkeyName in $wpaKey.GetSubKeyNames()) {
|
||||||
if ($subkeyName -match '.*-.*-.*-.*-.*-') {
|
if ($subkeyName -match '8DEC0AF1-0341-4b93-85CD-72606C2DF94C.*') {
|
||||||
$keyNumber = $subkeyName -replace '.*-', ''
|
$keyNumber = $subkeyName -replace '.*-', ''
|
||||||
$subkeyHashTable[$keyNumber] = $true
|
$subkeyHashTable[$keyNumber] = $true
|
||||||
}
|
}
|
||||||
@ -1733,7 +1775,7 @@ if ($osVersion.Build -ge $minBuildNumber) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
$wpaKey.GetSubKeyNames() | ForEach-Object {
|
$wpaKey.GetSubKeyNames() | ForEach-Object {
|
||||||
if ($_ -match '.*-.*-.*-.*-.*-') {
|
if ($_ -match '8DEC0AF1-0341-4b93-85CD-72606C2DF94C.*') {
|
||||||
if ($PSVersionTable.PSVersion.Major -lt 3) {
|
if ($PSVersionTable.PSVersion.Major -lt 3) {
|
||||||
cmd /c "reg query "HKLM\SYSTEM\WPA\$_" /ve /t REG_BINARY >nul 2>&1"
|
cmd /c "reg query "HKLM\SYSTEM\WPA\$_" /ve /t REG_BINARY >nul 2>&1"
|
||||||
if ($LASTEXITCODE -ne 0) {
|
if ($LASTEXITCODE -ne 0) {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
@set masver=2.9
|
@set masver=3.0
|
||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
|
|
||||||
@ -109,7 +109,7 @@ echo:
|
|||||||
echo Null service is not running, script may crash...
|
echo Null service is not running, script may crash...
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
echo Help - %mas%fix_service
|
echo Check this webpage for help - %mas%fix_service
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
ping 127.0.0.1 -n 20
|
ping 127.0.0.1 -n 20
|
||||||
@ -124,7 +124,7 @@ echo:
|
|||||||
echo Error - Script either has LF line ending issue or an empty line at the end of the script is missing.
|
echo Error - Script either has LF line ending issue or an empty line at the end of the script is missing.
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
echo Help - %mas%troubleshoot
|
echo Check this webpage for help - %mas%troubleshoot
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
ping 127.0.0.1 -n 20 >nul
|
ping 127.0.0.1 -n 20 >nul
|
||||||
@ -161,6 +161,16 @@ for %%A in (%_act% %_rem%) do (if "%%A"=="1" set _unattended=1)
|
|||||||
|
|
||||||
call :dk_setvar
|
call :dk_setvar
|
||||||
|
|
||||||
|
if %winbuild% EQU 1 (
|
||||||
|
%eline%
|
||||||
|
echo Failed to detect Windows build number.
|
||||||
|
echo:
|
||||||
|
setlocal EnableDelayedExpansion
|
||||||
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
if %winbuild% LSS 9200 (
|
if %winbuild% LSS 9200 (
|
||||||
%eline%
|
%eline%
|
||||||
echo Unsupported OS version detected [%winbuild%].
|
echo Unsupported OS version detected [%winbuild%].
|
||||||
@ -202,33 +212,6 @@ goto dk_done
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:: Check PowerShell
|
|
||||||
|
|
||||||
REM :PStest: $ExecutionContext.SessionState.LanguageMode :PStest:
|
|
||||||
|
|
||||||
cmd /c "%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':PStest:\s*';iex ($f[1])"" | find /i "FullLanguage" %nul1% || (
|
|
||||||
%eline%
|
|
||||||
cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode""
|
|
||||||
echo:
|
|
||||||
cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode"" | find /i "FullLanguage" %nul1% && (
|
|
||||||
echo Failed to run Powershell command but Powershell is working.
|
|
||||||
echo:
|
|
||||||
cmd /c "%psc% ""$av = Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct; $n = @(); foreach ($i in $av) { if ($i.displayName -notlike '*windows*') { $n += $i.displayName } }; if ($n) { Write-Host ('Installed 3rd party Antivirus might be blocking the script - ' + ($n -join ', ')) -ForegroundColor White -BackgroundColor Blue }"""
|
|
||||||
echo:
|
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
|
||||||
) || (
|
|
||||||
echo PowerShell is not working. Aborting...
|
|
||||||
echo If you have applied restrictions on Powershell then undo those changes.
|
|
||||||
echo:
|
|
||||||
set fixes=%fixes% %mas%fix_powershell
|
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%fix_powershell"
|
|
||||||
)
|
|
||||||
goto dk_done
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Elevate script as admin and pass arguments and preventing loop
|
:: Elevate script as admin and pass arguments and preventing loop
|
||||||
|
|
||||||
%nul1% fltmc || (
|
%nul1% fltmc || (
|
||||||
@ -241,6 +224,58 @@ goto dk_done
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
:: Check PowerShell
|
||||||
|
|
||||||
|
::pstst $ExecutionContext.SessionState.LanguageMode :pstst
|
||||||
|
|
||||||
|
for /f "delims=" %%a in ('cmd /c "%psc% ""if ($PSVersionTable.PSEdition -ne 'Core') {$f=[io.file]::ReadAllText('!_batp!') -split ':pstst';iex ($f[1])}""" %nul6%') do (set tstresult=%%a)
|
||||||
|
|
||||||
|
if /i not "%tstresult%"=="FullLanguage" (
|
||||||
|
%eline%
|
||||||
|
echo: %tstresult%
|
||||||
|
cmd /c "%psc% $ExecutionContext.SessionState.LanguageMode"
|
||||||
|
|
||||||
|
REM check LanguageMode
|
||||||
|
|
||||||
|
cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode"" | findstr /i "ConstrainedLanguage RestrictedLanguage NoLanguage" %nul1% && (
|
||||||
|
echo FullLanguage mode not found in PowerShell. Aborting...
|
||||||
|
echo If you have applied restrictions on Powershell then undo those changes.
|
||||||
|
echo:
|
||||||
|
set fixes=%fixes% %mas%fix_powershell
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%fix_powershell"
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
|
REM check Powershell core version
|
||||||
|
|
||||||
|
cmd /c "%psc% "$PSVersionTable.PSEdition"" | find /i "Core" %nul1% && (
|
||||||
|
echo Windows Powershell is needed for MAS but it seems to be replaced with Powershell core. Aborting...
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
|
REM check for Mal-ware that may cause issues with Powershell
|
||||||
|
|
||||||
|
for /r "%ProgramFiles%\" %%f in (secureboot.exe) do if exist "%%f" (
|
||||||
|
echo "%%f"
|
||||||
|
echo Mal%blank%ware found, PowerShell is not working properly.
|
||||||
|
echo:
|
||||||
|
set fixes=%fixes% %mas%remove_mal%w%ware
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%remove_mal%w%ware"
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
|
REM check antivirus and other errors
|
||||||
|
|
||||||
|
echo PowerShell is not working properly. Aborting...
|
||||||
|
cmd /c "%psc% ""$av = Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct; $n = @(); foreach ($i in $av) { if ($i.displayName -notlike '*windows*') { $n += $i.displayName } }; if ($n) { Write-Host ('Installed 3rd party Antivirus might be blocking the script - ' + ($n -join ', ')) -ForegroundColor White -BackgroundColor Blue }"""
|
||||||
|
echo:
|
||||||
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
|
::========================================================================================================================================
|
||||||
|
|
||||||
:: Disable QuickEdit and launch from conhost.exe to avoid Terminal app
|
:: Disable QuickEdit and launch from conhost.exe to avoid Terminal app
|
||||||
|
|
||||||
if %winbuild% GEQ 17763 (
|
if %winbuild% GEQ 17763 (
|
||||||
@ -251,34 +286,33 @@ set terminal=
|
|||||||
|
|
||||||
:: Check if script is running in Terminal app
|
:: Check if script is running in Terminal app
|
||||||
|
|
||||||
set r1=$TB = [AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2, $False).DefineType(0);
|
|
||||||
set r2=%r1% [void]$TB.DefinePInvokeMethod('GetConsoleWindow', 'kernel32.dll', 22, 1, [IntPtr], @(), 1, 3).SetImplementationFlags(128);
|
|
||||||
set r3=%r2% [void]$TB.DefinePInvokeMethod('SendMessageW', 'user32.dll', 22, 1, [IntPtr], @([IntPtr], [UInt32], [IntPtr], [IntPtr]), 1, 3).SetImplementationFlags(128);
|
|
||||||
set d1=%r3% $hIcon = $TB.CreateType(); $hWnd = $hIcon::GetConsoleWindow();
|
|
||||||
set d2=%d1% echo $($hIcon::SendMessageW($hWnd, 127, 0, 0) -ne [IntPtr]::Zero);
|
|
||||||
|
|
||||||
if defined terminal (
|
if defined terminal (
|
||||||
%psc% "%d2%" %nul2% | find /i "True" %nul1% && set terminal=
|
set lines=0
|
||||||
|
for /f "skip=2 tokens=2 delims=: " %%A in ('mode con') do if "!lines!"=="0" set lines=%%A
|
||||||
|
if !lines! GEQ 100 set terminal=
|
||||||
)
|
)
|
||||||
|
|
||||||
if defined ps32onArm goto :skipQE
|
|
||||||
if %_unattended%==1 goto :skipQE
|
if %_unattended%==1 goto :skipQE
|
||||||
for %%# in (%_args%) do (if /i "%%#"=="-qedit" goto :skipQE)
|
for %%# in (%_args%) do (if /i "%%#"=="-qedit" goto :skipQE)
|
||||||
|
|
||||||
|
:: Relaunch to disable QuickEdit in the current session and use conhost.exe instead of the Terminal app
|
||||||
|
:: This code disables QuickEdit for the current cmd.exe session without making permanent registry changes
|
||||||
|
:: It is included because clicking on the script window can pause execution, causing confusion that the script has stopped due to an error
|
||||||
|
|
||||||
|
set resetQE=1
|
||||||
|
reg query HKCU\Console /v QuickEdit %nul2% | find /i "0x0" %nul1% && set resetQE=0
|
||||||
|
reg add HKCU\Console /v QuickEdit /t REG_DWORD /d 0 /f %nul1%
|
||||||
|
|
||||||
if defined terminal (
|
if defined terminal (
|
||||||
set "launchcmd=start conhost.exe %psc%"
|
start conhost.exe "!_batf!" %_args% -qedit
|
||||||
) else (
|
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
|
||||||
set "launchcmd=%psc%"
|
exit /b
|
||||||
|
) else if %resetQE% EQU 1 (
|
||||||
|
start cmd.exe /c ""!_batf!" %_args% -qedit"
|
||||||
|
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
|
||||||
|
exit /b
|
||||||
)
|
)
|
||||||
|
|
||||||
:: Disable QuickEdit in current session
|
|
||||||
|
|
||||||
set "d1=$t=[AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2, $False).DefineType(0);"
|
|
||||||
set "d2=$t.DefinePInvokeMethod('GetStdHandle', 'kernel32.dll', 22, 1, [IntPtr], @([Int32]), 1, 3).SetImplementationFlags(128);"
|
|
||||||
set "d3=$t.DefinePInvokeMethod('SetConsoleMode', 'kernel32.dll', 22, 1, [Boolean], @([IntPtr], [Int32]), 1, 3).SetImplementationFlags(128);"
|
|
||||||
set "d4=$k=$t.CreateType(); $b=$k::SetConsoleMode($k::GetStdHandle(-10), 0x0080);"
|
|
||||||
|
|
||||||
%launchcmd% "%d1% %d2% %d3% %d4% & cmd.exe '/c' '!_PSarg! -qedit'" && (exit /b) || (set terminal=1)
|
|
||||||
:skipQE
|
:skipQE
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
@ -287,9 +321,19 @@ set "d4=$k=$t.CreateType(); $b=$k::SetConsoleMode($k::GetStdHandle(-10), 0x0080)
|
|||||||
|
|
||||||
set -=
|
set -=
|
||||||
set old=
|
set old=
|
||||||
|
set pingp=
|
||||||
|
set upver=%masver:.=%
|
||||||
|
|
||||||
for /f "delims=[] tokens=2" %%# in ('ping -4 -n 1 updatecheck.mass%-%grave.dev') do (
|
for %%A in (
|
||||||
if not "%%#"=="" (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.69.%masver%" %nul1% || set old=1))
|
activ%-%ated.win
|
||||||
|
mass%-%grave.dev
|
||||||
|
) do if not defined pingp (
|
||||||
|
for /f "delims=[] tokens=2" %%B in ('ping -n 1 %%A') do (
|
||||||
|
if not "%%B"=="" (set old=1& set pingp=1)
|
||||||
|
for /f "delims=[] tokens=2" %%C in ('ping -n 1 updatecheck%upver%.%%A') do (
|
||||||
|
if not "%%C"=="" set old=
|
||||||
|
)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
if defined old (
|
if defined old (
|
||||||
@ -305,7 +349,7 @@ echo:
|
|||||||
call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :"
|
call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :"
|
||||||
choice /C:10 /N
|
choice /C:10 /N
|
||||||
if !errorlevel!==2 rem
|
if !errorlevel!==2 rem
|
||||||
if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b)
|
if !errorlevel!==1 (start %mas% & exit /b)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
cls
|
cls
|
||||||
@ -369,7 +413,7 @@ if not exist %SysPath%\sppsvc.exe (
|
|||||||
echo [%SysPath%\sppsvc.exe] file is missing, aborting...
|
echo [%SysPath%\sppsvc.exe] file is missing, aborting...
|
||||||
echo:
|
echo:
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
goto dk_done
|
goto dk_done
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -400,7 +444,8 @@ set "_serv=sppsvc Winmgmt"
|
|||||||
:: Software Protection
|
:: Software Protection
|
||||||
:: Windows Management Instrumentation
|
:: Windows Management Instrumentation
|
||||||
|
|
||||||
set officeact=1
|
set notwinact=1
|
||||||
|
set ohookact=1
|
||||||
call :dk_errorcheck
|
call :dk_errorcheck
|
||||||
|
|
||||||
:: Check unsupported office versions
|
:: Check unsupported office versions
|
||||||
@ -495,16 +540,6 @@ reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul2
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:: Check already activated products list
|
|
||||||
|
|
||||||
set actiProds15=
|
|
||||||
set actiProds16=
|
|
||||||
|
|
||||||
if not "%o15c2r%%o15msi%"=="" call :oh_findactivated -like 15
|
|
||||||
if not "%o16c2r%%o16msi%"=="" call :oh_findactivated -notlike 16
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Process Office 15.0 C2R
|
:: Process Office 15.0 C2R
|
||||||
|
|
||||||
if not defined o15c2r goto :starto16c2r
|
if not defined o15c2r goto :starto16c2r
|
||||||
@ -529,11 +564,11 @@ echo "!_oIds!" | find /i " %%a " %nul1% || (set "_oIds= !_oIds! %%a ")
|
|||||||
set "_oLPath=%_oRoot%\Licenses"
|
set "_oLPath=%_oRoot%\Licenses"
|
||||||
set "_oIntegrator=%_oRoot%\integration\integrator.exe"
|
set "_oIntegrator=%_oRoot%\integration\integrator.exe"
|
||||||
|
|
||||||
if "%_oArch%"=="x64" (set "_hookPath=%_oRoot%\vfs\System" & set "_hook=sppc64.dll")
|
if /i "%_oArch%"=="x64" (set "_hookPath=%_oRoot%\vfs\System" & set "_hook=sppc64.dll")
|
||||||
if "%_oArch%"=="x86" (set "_hookPath=%_oRoot%\vfs\SystemX86" & set "_hook=sppc32.dll")
|
if /i "%_oArch%"=="x86" (set "_hookPath=%_oRoot%\vfs\SystemX86" & set "_hook=sppc32.dll")
|
||||||
if not "%osarch%"=="x86" (
|
if not "%osarch%"=="x86" (
|
||||||
if "%_oArch%"=="x64" set "_sppcPath=%SystemRoot%\System32\sppc.dll"
|
if /i "%_oArch%"=="x64" set "_sppcPath=%SystemRoot%\System32\sppc.dll"
|
||||||
if "%_oArch%"=="x86" set "_sppcPath=%SystemRoot%\SysWOW64\sppc.dll"
|
if /i "%_oArch%"=="x86" set "_sppcPath=%SystemRoot%\SysWOW64\sppc.dll"
|
||||||
) else (
|
) else (
|
||||||
set "_sppcPath=%SystemRoot%\System32\sppc.dll"
|
set "_sppcPath=%SystemRoot%\System32\sppc.dll"
|
||||||
)
|
)
|
||||||
@ -579,11 +614,11 @@ set _o16c2rIds=%_oIds%
|
|||||||
set "_oLPath=%_oRoot%\Licenses16"
|
set "_oLPath=%_oRoot%\Licenses16"
|
||||||
set "_oIntegrator=%_oRoot%\integration\integrator.exe"
|
set "_oIntegrator=%_oRoot%\integration\integrator.exe"
|
||||||
|
|
||||||
if "%_oArch%"=="x64" (set "_hookPath=%_oRoot%\vfs\System" & set "_hook=sppc64.dll")
|
if /i "%_oArch%"=="x64" (set "_hookPath=%_oRoot%\vfs\System" & set "_hook=sppc64.dll")
|
||||||
if "%_oArch%"=="x86" (set "_hookPath=%_oRoot%\vfs\SystemX86" & set "_hook=sppc32.dll")
|
if /i "%_oArch%"=="x86" (set "_hookPath=%_oRoot%\vfs\SystemX86" & set "_hook=sppc32.dll")
|
||||||
if not "%osarch%"=="x86" (
|
if not "%osarch%"=="x86" (
|
||||||
if "%_oArch%"=="x64" set "_sppcPath=%SystemRoot%\System32\sppc.dll"
|
if /i "%_oArch%"=="x64" set "_sppcPath=%SystemRoot%\System32\sppc.dll"
|
||||||
if "%_oArch%"=="x86" set "_sppcPath=%SystemRoot%\SysWOW64\sppc.dll"
|
if /i "%_oArch%"=="x86" set "_sppcPath=%SystemRoot%\SysWOW64\sppc.dll"
|
||||||
) else (
|
) else (
|
||||||
set "_sppcPath=%SystemRoot%\System32\sppc.dll"
|
set "_sppcPath=%SystemRoot%\System32\sppc.dll"
|
||||||
)
|
)
|
||||||
@ -657,7 +692,7 @@ call :dk_color %Red% "Some errors were detected."
|
|||||||
if not defined ierror if not defined showfix if not defined serv_cor if not defined serv_cste call :dk_color %Blue% "%_fixmsg%"
|
if not defined ierror if not defined showfix if not defined serv_cor if not defined serv_cste call :dk_color %Blue% "%_fixmsg%"
|
||||||
echo:
|
echo:
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
)
|
)
|
||||||
|
|
||||||
goto :dk_done
|
goto :dk_done
|
||||||
@ -973,11 +1008,6 @@ exit /b
|
|||||||
|
|
||||||
for %%# in (%_oIds%) do (
|
for %%# in (%_oIds%) do (
|
||||||
|
|
||||||
echo: !actiProds%oVer%! | find /i "-%%#-" %nul1% && (
|
|
||||||
call :dk_color %Gray% "Checking Activation Status [%%# is already permanently activated]"
|
|
||||||
|
|
||||||
) || (
|
|
||||||
|
|
||||||
set key=
|
set key=
|
||||||
set _actid=
|
set _actid=
|
||||||
set _lic=
|
set _lic=
|
||||||
@ -1002,12 +1032,11 @@ set fixes=%fixes% %mas%
|
|||||||
call :dk_color %_Yellow% "%mas%"
|
call :dk_color %_Yellow% "%mas%"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
|
||||||
|
|
||||||
:: Add SharedComputerLicensing registry key if Retail Office C2R is installed on Windows Server
|
:: Add SharedComputerLicensing registry key if Retail Office C2R is installed on Windows Server
|
||||||
:: https://learn.microsoft.com/en-us/office/troubleshoot/office-suite-issues/click-to-run-office-on-terminal-server
|
:: https://learn.microsoft.com/en-us/office/troubleshoot/office-suite-issues/click-to-run-office-on-terminal-server
|
||||||
|
|
||||||
if defined winserver if defined _config (
|
if defined winserver if defined _config if exist "%_oLPath%\Word2019VL_KMS_Client_AE*.xrm-ms" (
|
||||||
echo %_oIds% | find /i "Retail" %nul1% && (
|
echo %_oIds% | find /i "Retail" %nul1% && (
|
||||||
set scaIsNeeded=1
|
set scaIsNeeded=1
|
||||||
reg add %_config% /v SharedComputerLicensing /t REG_SZ /d "1" /f %nul1%
|
reg add %_config% /v SharedComputerLicensing /t REG_SZ /d "1" /f %nul1%
|
||||||
@ -1035,11 +1064,11 @@ echo "%2" | find /i "Wow6432Node" %nul1% && set _oArch=x86
|
|||||||
if not "%osarch%"=="x86" if not defined _oArch set _oArch=x64
|
if not "%osarch%"=="x86" if not defined _oArch set _oArch=x64
|
||||||
if "%osarch%"=="x86" set _oArch=x86
|
if "%osarch%"=="x86" set _oArch=x86
|
||||||
|
|
||||||
if "%_oArch%"=="x64" (set "_hookPath=%_oRoot%" & set "_hook=sppc64.dll")
|
if /i "%_oArch%"=="x64" (set "_hookPath=%_oRoot%" & set "_hook=sppc64.dll")
|
||||||
if "%_oArch%"=="x86" (set "_hookPath=%_oRoot%" & set "_hook=sppc32.dll")
|
if /i "%_oArch%"=="x86" (set "_hookPath=%_oRoot%" & set "_hook=sppc32.dll")
|
||||||
if not "%osarch%"=="x86" (
|
if not "%osarch%"=="x86" (
|
||||||
if "%_oArch%"=="x64" set "_sppcPath=%SystemRoot%\System32\sppc.dll"
|
if /i "%_oArch%"=="x64" set "_sppcPath=%SystemRoot%\System32\sppc.dll"
|
||||||
if "%_oArch%"=="x86" set "_sppcPath=%SystemRoot%\SysWOW64\sppc.dll"
|
if /i "%_oArch%"=="x86" set "_sppcPath=%SystemRoot%\SysWOW64\sppc.dll"
|
||||||
) else (
|
) else (
|
||||||
set "_sppcPath=%SystemRoot%\System32\sppc.dll"
|
set "_sppcPath=%SystemRoot%\System32\sppc.dll"
|
||||||
)
|
)
|
||||||
@ -1051,7 +1080,7 @@ set "_common2=%CommonProgramFiles(x86)%"
|
|||||||
for /r "%_common%\Microsoft Shared\OFFICE%oVer%\" %%f in (BRANDING.XML) do if exist "%%f" set "_oBranding=%%f"
|
for /r "%_common%\Microsoft Shared\OFFICE%oVer%\" %%f in (BRANDING.XML) do if exist "%%f" set "_oBranding=%%f"
|
||||||
if not defined _oBranding for /r "%_common2%\Microsoft Shared\OFFICE%oVer%\" %%f in (BRANDING.XML) do if exist "%%f" set "_oBranding=%%f"
|
if not defined _oBranding for /r "%_common2%\Microsoft Shared\OFFICE%oVer%\" %%f in (BRANDING.XML) do if exist "%%f" set "_oBranding=%%f"
|
||||||
|
|
||||||
call :ohookdata getmsiprod %2
|
call :msiofficedata %2
|
||||||
|
|
||||||
echo:
|
echo:
|
||||||
echo Activating Office... [MSI ^| %_version% ^| %_oArch%]
|
echo Activating Office... [MSI ^| %_version% ^| %_oArch%]
|
||||||
@ -1075,46 +1104,6 @@ exit /b
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:oh_findactivated
|
|
||||||
|
|
||||||
set oVer=%2
|
|
||||||
set _FsortIds=
|
|
||||||
set actiProds=
|
|
||||||
|
|
||||||
for /f "delims=" %%a in ('%psc% "(Get-WmiObject -Query 'SELECT LicenseFamily, Name FROM %spp% WHERE ApplicationID=''0ff1ce15-a989-479d-af46-f275c6370663'' AND LicenseStatus=1 AND GracePeriodRemaining=0 AND PartialProductKey IS NOT NULL' | Where-Object { $_.Name %1 '*Office 15*' }).LicenseFamily" %nul6%') do call set "actiProds=%%a !actiProds!"
|
|
||||||
|
|
||||||
if not defined actiProds exit /b
|
|
||||||
|
|
||||||
for %%# in (%actiProds%) do (
|
|
||||||
set _sortIds=%%#
|
|
||||||
set _sortIds=!_sortIds:OfficeSPDFreeR_=SPDRetail_!
|
|
||||||
set _sortIds=!_sortIds:XC2RVL_=XVolume_!
|
|
||||||
set _sortIds=!_sortIds:CO365R_=Retail_!
|
|
||||||
set _sortIds=!_sortIds:O365R_=Retail_!
|
|
||||||
set _sortIds=!_sortIds:E5R_=Retail_!
|
|
||||||
set _sortIds=!_sortIds:MSDNR_=Retail_!
|
|
||||||
set _sortIds=!_sortIds:DemoR_=Retail_!
|
|
||||||
set _sortIds=!_sortIds:EDUR_=Retail_!
|
|
||||||
set _sortIds=!_sortIds:R_=Retail_!
|
|
||||||
set _sortIds=!_sortIds:VL_=Volume_!
|
|
||||||
set _sortIds=!_sortIds:Office16=!
|
|
||||||
set _sortIds=!_sortIds:Office19=!
|
|
||||||
set _sortIds=!_sortIds:Office21=!
|
|
||||||
set _sortIds=!_sortIds:Office24=!
|
|
||||||
set _sortIds=!_sortIds:Office=!
|
|
||||||
for /f "tokens=1 delims=-_" %%a in ("!_sortIds!") do set "_sortIds=-%%a-"
|
|
||||||
set _FsortIds=!_sortIds! !_FsortIds!
|
|
||||||
)
|
|
||||||
|
|
||||||
call :ohookdata findactivated %2
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
:: Below IDs are not checked for permanent activation
|
|
||||||
set _sortIds=!_sortIds:PreviewVL_=Volume_!
|
|
||||||
set _sortIds=!_sortIds:PreInstallR_=Retail_!
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:oh_clearblock
|
:oh_clearblock
|
||||||
|
|
||||||
:: Find remnants of Office vNext/shared/device license block and remove it because it stops other licenses from appearing
|
:: Find remnants of Office vNext/shared/device license block and remove it because it stops other licenses from appearing
|
||||||
@ -1240,7 +1229,7 @@ echo Clearing Office License Blocks [Successfully cleared from all %cou
|
|||||||
set defname=DEFTEMP-%random%
|
set defname=DEFTEMP-%random%
|
||||||
for /f "skip=2 tokens=2*" %%a in ('"reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /v Default" %nul6%') do call set "defdat=%%b"
|
for /f "skip=2 tokens=2*" %%a in ('"reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /v Default" %nul6%') do call set "defdat=%%b"
|
||||||
|
|
||||||
if defined o16c2r if defined officeact (
|
if defined o16c2r if defined ohookact (
|
||||||
if exist "%defdat%\NTUSER.DAT" (
|
if exist "%defdat%\NTUSER.DAT" (
|
||||||
reg load HKU\%defname% "%defdat%\NTUSER.DAT" %nul%
|
reg load HKU\%defname% "%defdat%\NTUSER.DAT" %nul%
|
||||||
reg query HKU\%defname%\Software %nul% && (
|
reg query HKU\%defname%\Software %nul% && (
|
||||||
@ -1276,11 +1265,8 @@ set upk_result=0
|
|||||||
call :dk_actid 0ff1ce15-a989-479d-af46-f275c6370663
|
call :dk_actid 0ff1ce15-a989-479d-af46-f275c6370663
|
||||||
|
|
||||||
if "%_actprojvis%"=="1" (
|
if "%_actprojvis%"=="1" (
|
||||||
set _allactid=
|
for /f "delims=" %%a in ('%psc% "Get-WmiObject -Query 'SELECT ID, Description, LicenseFamily FROM %spp% WHERE ApplicationID=''0ff1ce15-a989-479d-af46-f275c6370663'' AND PartialProductKey IS NOT NULL' | Where-Object { $_.LicenseFamily -notmatch 'Project' -and $_.LicenseFamily -notmatch 'Visio' } | Select-Object -ExpandProperty ID" %nul6%') do call set "_allactid=%%a !_allactid!"
|
||||||
for /f "delims=" %%a in ('%psc% "(Get-WmiObject -Query 'SELECT ID, Description, LicenseFamily FROM %spp% WHERE ApplicationID=''0ff1ce15-a989-479d-af46-f275c6370663'' AND PartialProductKey IS NOT NULL' | Where-Object { $_.LicenseFamily -notmatch 'Project' -and $_.LicenseFamily -notmatch 'Visio' }).ID" %nul6%') do call set "_allactid=%%a !_allactid!"
|
for /f "delims=" %%a in ('%psc% "Get-WmiObject -Query 'SELECT ID, Description, LicenseFamily FROM %spp% WHERE ApplicationID=''0ff1ce15-a989-479d-af46-f275c6370663'' AND PartialProductKey IS NOT NULL' | Where-Object { '!_allactid!' -contains $_.ID -and ($_.LicenseFamily -match 'Project' -or $_.LicenseFamily -match 'Visio') } | Select-Object -ExpandProperty ID" %nul6%') do call set "_allactid=%%a !_allactid!"
|
||||||
for /f "delims=" %%a in ('%psc% "(Get-WmiObject -Query 'SELECT ID, Description, LicenseFamily FROM %spp% WHERE ApplicationID=''0ff1ce15-a989-479d-af46-f275c6370663'' AND PartialProductKey IS NOT NULL' | Where-Object { $_.Description -match 'KMSCLIENT' -and ($_.LicenseFamily -match 'Project' -or $_.LicenseFamily -match 'Visio') }).ID" %nul6%') do call set "_allactid=%%a !_allactid!"
|
|
||||||
) else (
|
|
||||||
for /f "delims=" %%a in ('%psc% "(Get-WmiObject -Query 'SELECT ID FROM %spp% WHERE ApplicationID=''0ff1ce15-a989-479d-af46-f275c6370663'' AND LicenseStatus=1 AND GracePeriodRemaining=0 AND PartialProductKey IS NOT NULL').ID" %nul6%') do call set "_allactid=%%a !_allactid!"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
for %%# in (%apps%) do (
|
for %%# in (%apps%) do (
|
||||||
@ -1298,7 +1284,7 @@ set upk_result=2
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
if defined officeact if not %upk_result%==0 echo:
|
if defined ohookact if not %upk_result%==0 echo:
|
||||||
if %upk_result%==1 echo Uninstalling Other/Grace Keys [Successful]
|
if %upk_result%==1 echo Uninstalling Other/Grace Keys [Successful]
|
||||||
if %upk_result%==2 call :dk_color %Red% "Uninstalling Other/Grace Keys [Failed]"
|
if %upk_result%==2 call :dk_color %Red% "Uninstalling Other/Grace Keys [Failed]"
|
||||||
exit /b
|
exit /b
|
||||||
@ -1350,7 +1336,7 @@ exit /b
|
|||||||
|
|
||||||
:dk_setvar
|
:dk_setvar
|
||||||
|
|
||||||
set psc=powershell.exe
|
set psc=powershell.exe -nop -c
|
||||||
set winbuild=1
|
set winbuild=1
|
||||||
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
|
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
|
||||||
|
|
||||||
@ -1529,7 +1515,7 @@ echo sc start sppsvc [Error Code: %spperror%]
|
|||||||
)
|
)
|
||||||
|
|
||||||
echo:
|
echo:
|
||||||
%psc% "$job = Start-Job { (Get-WmiObject -Query 'SELECT * FROM %sps%').Version }; if (-not (Wait-Job $job -Timeout 30)) {write-host 'sppsvc is not working correctly. Help - %mas%troubleshoot'}"
|
%psc% "$job = Start-Job { (Get-WmiObject -Query 'SELECT * FROM %sps%').Version }; if (-not (Wait-Job $job -Timeout 30)) {write-host 'sppsvc is not working correctly. Check this webpage for help - %mas%troubleshoot'}"
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
:: Get Product name (WMI/REG methods are not reliable in all conditions, hence winbrand.dll method is used)
|
:: Get Product name (WMI/REG methods are not reliable in all conditions, hence winbrand.dll method is used)
|
||||||
@ -1589,7 +1575,7 @@ if defined pupfound call :dk_color %Gray% "Checking PUP Activators
|
|||||||
if defined results call :dk_color %Red% "Checking Probable Mal%w%ware Infection..."
|
if defined results call :dk_color %Red% "Checking Probable Mal%w%ware Infection..."
|
||||||
if defined results call :dk_color %Red% "%results%"
|
if defined results call :dk_color %Red% "%results%"
|
||||||
set fixes=%fixes% %mas%remove_mal%w%ware
|
set fixes=%fixes% %mas%remove_mal%w%ware
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%remove_mal%w%ware"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%remove_mal%w%ware"
|
||||||
echo:
|
echo:
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1709,7 +1695,7 @@ set showfix=1
|
|||||||
)
|
)
|
||||||
echo %serv_e% | findstr /i "sppsvc-1060" %nul% && (
|
echo %serv_e% | findstr /i "sppsvc-1060" %nul% && (
|
||||||
set fixes=%fixes% %mas%fix_service
|
set fixes=%fixes% %mas%fix_service
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%fix_service"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%fix_service"
|
||||||
set showfix=1
|
set showfix=1
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -1730,10 +1716,10 @@ call :dk_color2 %Red% "Checking Boot Mode [%safeboot_option
|
|||||||
for /f "skip=2 tokens=2*" %%A in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State" /v ImageState') do (set imagestate=%%B)
|
for /f "skip=2 tokens=2*" %%A in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State" /v ImageState') do (set imagestate=%%B)
|
||||||
|
|
||||||
if /i not "%imagestate%"=="IMAGE_STATE_COMPLETE" (
|
if /i not "%imagestate%"=="IMAGE_STATE_COMPLETE" (
|
||||||
set error=1
|
|
||||||
set showfix=1
|
|
||||||
call :dk_color %Gray% "Checking Windows Setup State [%imagestate%]"
|
call :dk_color %Gray% "Checking Windows Setup State [%imagestate%]"
|
||||||
echo "%imagestate%" | find /i "RESEAL" %nul% && (
|
echo "%imagestate%" | find /i "RESEAL" %nul% && (
|
||||||
|
set error=1
|
||||||
|
set showfix=1
|
||||||
call :dk_color %Blue% "You need to run it in normal mode in case you are running it in Audit Mode."
|
call :dk_color %Blue% "You need to run it in normal mode in case you are running it in Audit Mode."
|
||||||
)
|
)
|
||||||
echo "%imagestate%" | find /i "UNDEPLOYABLE" %nul% && (
|
echo "%imagestate%" | find /i "UNDEPLOYABLE" %nul% && (
|
||||||
@ -1762,12 +1748,11 @@ echo Checking WPA Registry Count [%wpainfo%]
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
if not defined officeact if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" (
|
if not defined notwinact if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" (
|
||||||
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul2% | find /i "Eval" %nul1% || (
|
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul2% | find /i "Eval" %nul1% || (
|
||||||
set error=1
|
|
||||||
call :dk_color %Red% "Checking Eval Packages [Non-Eval Licenses are installed in Eval Windows]"
|
call :dk_color %Red% "Checking Eval Packages [Non-Eval Licenses are installed in Eval Windows]"
|
||||||
set fixes=%fixes% %mas%evaluation_editions
|
set fixes=%fixes% %mas%evaluation_editions
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%evaluation_editions"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%evaluation_editions"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1786,19 +1771,17 @@ if "%osSKU%"=="164" set osedition=ProfessionalEducation
|
|||||||
if "%osSKU%"=="165" set osedition=ProfessionalEducationN
|
if "%osSKU%"=="165" set osedition=ProfessionalEducationN
|
||||||
)
|
)
|
||||||
|
|
||||||
if not defined officeact (
|
if not defined notwinact (
|
||||||
if %osedition%==0 (
|
if %osedition%==0 (
|
||||||
call :dk_color %Red% "Checking Edition Name [Not Found In Registry]"
|
call :dk_color %Red% "Checking Edition Name [Not Found In Registry]"
|
||||||
) else (
|
) else (
|
||||||
|
|
||||||
if not exist "%SysPath%\spp\tokens\skus\%osedition%\%osedition%*.xrm-ms" if not exist "%SysPath%\spp\tokens\skus\Security-SPP-Component-SKU-%osedition%\*-%osedition%-*.xrm-ms" (
|
if not exist "%SysPath%\spp\tokens\skus\%osedition%\%osedition%*.xrm-ms" if not exist "%SysPath%\spp\tokens\skus\Security-SPP-Component-SKU-%osedition%\*-%osedition%-*.xrm-ms" (
|
||||||
set error=1
|
|
||||||
set skunotfound=1
|
set skunotfound=1
|
||||||
call :dk_color %Red% "Checking License Files [Not Found] [%osedition%]"
|
call :dk_color %Red% "Checking License Files [Not Found] [%osedition%]"
|
||||||
)
|
)
|
||||||
|
|
||||||
if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*-%osedition%-*.mum" (
|
if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*-%osedition%-*.mum" (
|
||||||
set error=1
|
|
||||||
call :dk_color %Red% "Checking Package Files [Not Found] [%osedition%]"
|
call :dk_color %Red% "Checking Package Files [Not Found] [%osedition%]"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -1829,7 +1812,7 @@ set showfix=1
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
if not defined officeact (
|
if not defined notwinact (
|
||||||
if %winbuild% GEQ 10240 (
|
if %winbuild% GEQ 10240 (
|
||||||
%nul% set /a "sum=%slcSKU%+%regSKU%+%wmiSKU%"
|
%nul% set /a "sum=%slcSKU%+%regSKU%+%wmiSKU%"
|
||||||
set /a "sum/=3"
|
set /a "sum/=3"
|
||||||
@ -1862,11 +1845,7 @@ call :dk_color2 %Red% "Checking ClipSVC " %Blue% "[System
|
|||||||
:: This "WLMS" service was included in previous Eval editions (which were activable) to automatically shut down the system every hour after the evaluation period expired and prevent SPPSVC from stopping.
|
:: This "WLMS" service was included in previous Eval editions (which were activable) to automatically shut down the system every hour after the evaluation period expired and prevent SPPSVC from stopping.
|
||||||
|
|
||||||
if exist "%SysPath%\wlms\wlms.exe" (
|
if exist "%SysPath%\wlms\wlms.exe" (
|
||||||
if %winbuild% LSS 9200 (
|
|
||||||
echo Checking Eval WLMS Service [Found]
|
echo Checking Eval WLMS Service [Found]
|
||||||
) else (
|
|
||||||
call :dk_color %Red% "Checking Eval WLMS Service [Found]"
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -1897,14 +1876,13 @@ for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT
|
|||||||
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "SkipRearm" /t REG_DWORD /d "0" /f %nul%
|
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "SkipRearm" /t REG_DWORD /d "0" /f %nul%
|
||||||
call :dk_color %Red% "Checking SkipRearm [Default 0 Value Not Found. Changing To 0]"
|
call :dk_color %Red% "Checking SkipRearm [Default 0 Value Not Found. Changing To 0]"
|
||||||
%psc% "Start-Job { Stop-Service sppsvc -force } | Wait-Job -Timeout 20 | Out-Null"
|
%psc% "Start-Job { Stop-Service sppsvc -force } | Wait-Job -Timeout 20 | Out-Null"
|
||||||
set error=1
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\Plugins\Objects\msft:rm/algorithm/hwid/4.0" /f ba02fed39662 /d %nul% || (
|
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\Plugins\Objects\msft:rm/algorithm/hwid/4.0" /f ba02fed39662 /d %nul% || (
|
||||||
call :dk_color %Red% "Checking SPP Registry Key [Incorrect ModuleId Found]"
|
call :dk_color %Red% "Checking SPP Registry Key [Incorrect ModuleId Found]"
|
||||||
set fixes=%fixes% %mas%issues_due_to_gaming_spoofers
|
set fixes=%fixes% %mas%issues_due_to_gaming_spoofers
|
||||||
call :dk_color2 %Blue% "Most likely caused by HWID spoofers. Help - " %_Yellow% " %mas%issues_due_to_gaming_spoofers"
|
call :dk_color2 %Blue% "Most likely caused by gaming spoofers. Check this webpage for help - " %_Yellow% " %mas%issues_due_to_gaming_spoofers"
|
||||||
set error=1
|
set error=1
|
||||||
set showfix=1
|
set showfix=1
|
||||||
)
|
)
|
||||||
@ -1919,7 +1897,7 @@ set error=1
|
|||||||
set showfix=1
|
set showfix=1
|
||||||
call :dk_color %Red% "Checking TokenStore Registry Key [Correct Path Not Found] [%tokenstore%]"
|
call :dk_color %Red% "Checking TokenStore Registry Key [Correct Path Not Found] [%tokenstore%]"
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -1943,6 +1921,7 @@ set showfix=1
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
if not defined notwinact (
|
||||||
call :dk_actid 55c92734-d682-4d71-983e-d6ec3f16059f
|
call :dk_actid 55c92734-d682-4d71-983e-d6ec3f16059f
|
||||||
if not defined apps (
|
if not defined apps (
|
||||||
%psc% "Start-Job { Stop-Service sppsvc -force } | Wait-Job -Timeout 20 | Out-Null; $sls = Get-WmiObject SoftwareLicensingService; $f=[io.file]::ReadAllText('!_batp!') -split ':xrm\:.*';iex ($f[1]); ReinstallLicenses" %nul%
|
%psc% "Start-Job { Stop-Service sppsvc -force } | Wait-Job -Timeout 20 | Out-Null; $sls = Get-WmiObject SoftwareLicensingService; $f=[io.file]::ReadAllText('!_batp!') -split ':xrm\:.*';iex ($f[1]); ReinstallLicenses" %nul%
|
||||||
@ -1951,12 +1930,13 @@ if not defined apps (
|
|||||||
set "_notfoundids=Key Not Installed / Act ID Not Found"
|
set "_notfoundids=Key Not Installed / Act ID Not Found"
|
||||||
call :dk_actids 55c92734-d682-4d71-983e-d6ec3f16059f
|
call :dk_actids 55c92734-d682-4d71-983e-d6ec3f16059f
|
||||||
if not defined allapps (
|
if not defined allapps (
|
||||||
|
set error=1
|
||||||
set "_notfoundids=Not found"
|
set "_notfoundids=Not found"
|
||||||
)
|
)
|
||||||
set error=1
|
|
||||||
call :dk_color %Red% "Checking Activation IDs [!_notfoundids!]"
|
call :dk_color %Red% "Checking Activation IDs [!_notfoundids!]"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
if exist "%tokenstore%\" if not exist "%tokenstore%\tokens.dat" (
|
if exist "%tokenstore%\" if not exist "%tokenstore%\tokens.dat" (
|
||||||
@ -1966,12 +1946,15 @@ call :dk_color %Red% "Checking SPP tokens.dat [Not Found] [%toke
|
|||||||
|
|
||||||
|
|
||||||
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% || (
|
||||||
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% "(Get-ScheduledTask -TaskName 'SvcRestartTask' -TaskPath '\Microsoft\Windows\SoftwareProtectionPlatform\').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 %Red% "Checking SvcRestartTask Status [!taskinfo!, System might deactivate later]"
|
||||||
|
if not defined error call :dk_color %Blue% "Reboot your machine using the restart option."
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -2039,7 +2022,7 @@ exit /b
|
|||||||
$wpaKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $env:COMPUTERNAME).OpenSubKey("SYSTEM\\WPA")
|
$wpaKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $env:COMPUTERNAME).OpenSubKey("SYSTEM\\WPA")
|
||||||
$count = 0
|
$count = 0
|
||||||
foreach ($subkeyName in $wpaKey.GetSubKeyNames()) {
|
foreach ($subkeyName in $wpaKey.GetSubKeyNames()) {
|
||||||
if ($subkeyName -match '.*-.*-.*-.*-.*-') {
|
if ($subkeyName -match '8DEC0AF1-0341-4b93-85CD-72606C2DF94C.*') {
|
||||||
$count++
|
$count++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2048,7 +2031,7 @@ $minBuildNumber = 14393
|
|||||||
if ($osVersion.Build -ge $minBuildNumber) {
|
if ($osVersion.Build -ge $minBuildNumber) {
|
||||||
$subkeyHashTable = @{}
|
$subkeyHashTable = @{}
|
||||||
foreach ($subkeyName in $wpaKey.GetSubKeyNames()) {
|
foreach ($subkeyName in $wpaKey.GetSubKeyNames()) {
|
||||||
if ($subkeyName -match '.*-.*-.*-.*-.*-') {
|
if ($subkeyName -match '8DEC0AF1-0341-4b93-85CD-72606C2DF94C.*') {
|
||||||
$keyNumber = $subkeyName -replace '.*-', ''
|
$keyNumber = $subkeyName -replace '.*-', ''
|
||||||
$subkeyHashTable[$keyNumber] = $true
|
$subkeyHashTable[$keyNumber] = $true
|
||||||
}
|
}
|
||||||
@ -2062,7 +2045,7 @@ if ($osVersion.Build -ge $minBuildNumber) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
$wpaKey.GetSubKeyNames() | ForEach-Object {
|
$wpaKey.GetSubKeyNames() | ForEach-Object {
|
||||||
if ($_ -match '.*-.*-.*-.*-.*-') {
|
if ($_ -match '8DEC0AF1-0341-4b93-85CD-72606C2DF94C.*') {
|
||||||
if ($PSVersionTable.PSVersion.Major -lt 3) {
|
if ($PSVersionTable.PSVersion.Major -lt 3) {
|
||||||
cmd /c "reg query "HKLM\SYSTEM\WPA\$_" /ve /t REG_BINARY >nul 2>&1"
|
cmd /c "reg query "HKLM\SYSTEM\WPA\$_" /ve /t REG_BINARY >nul 2>&1"
|
||||||
if ($LASTEXITCODE -ne 0) {
|
if ($LASTEXITCODE -ne 0) {
|
||||||
@ -2144,6 +2127,7 @@ set f=
|
|||||||
for %%# in (
|
for %%# in (
|
||||||
:: Office 2013
|
:: Office 2013
|
||||||
15_ab4d047b-97cf-4126-a69f-34df08e2f254_B7RFY-7NXPK-Q4342-Y9X2H-3J%f%X4X_Retail________AccessRetail
|
15_ab4d047b-97cf-4126-a69f-34df08e2f254_B7RFY-7NXPK-Q4342-Y9X2H-3J%f%X4X_Retail________AccessRetail
|
||||||
|
15_259de5be-492b-44b3-9d78-9645f848f7b0_X3XNB-HJB7K-66THH-8DWQ3-XH%f%GJP_Bypass________AccessRuntimeRetail
|
||||||
15_4374022d-56b8-48c1-9bb7-d8f2fc726343_9MF9G-CN32B-HV7XT-9XJ8T-9K%f%VF4_MAK___________AccessVolume
|
15_4374022d-56b8-48c1-9bb7-d8f2fc726343_9MF9G-CN32B-HV7XT-9XJ8T-9K%f%VF4_MAK___________AccessVolume
|
||||||
15_1b1d9bd5-12ea-4063-964c-16e7e87d6e08_NT889-MBH4X-8MD4H-X8R2D-WQ%f%HF8_Retail________ExcelRetail
|
15_1b1d9bd5-12ea-4063-964c-16e7e87d6e08_NT889-MBH4X-8MD4H-X8R2D-WQ%f%HF8_Retail________ExcelRetail
|
||||||
15_ac1ae7fd-b949-4e04-a330-849bc40638cf_Y3N36-YCHDK-XYWBG-KYQVV-BD%f%TJ2_MAK___________ExcelVolume
|
15_ac1ae7fd-b949-4e04-a330-849bc40638cf_Y3N36-YCHDK-XYWBG-KYQVV-BD%f%TJ2_MAK___________ExcelVolume
|
||||||
@ -2151,6 +2135,8 @@ for %%# in (
|
|||||||
15_4825ac28-ce41-45a7-9e6e-1fed74057601_RN84D-7HCWY-FTCBK-JMXWM-HT%f%7GJ_MAK___________GrooveVolume
|
15_4825ac28-ce41-45a7-9e6e-1fed74057601_RN84D-7HCWY-FTCBK-JMXWM-HT%f%7GJ_MAK___________GrooveVolume
|
||||||
15_c02fb62e-1cd5-4e18-ba25-e0480467ffaa_2WQNF-GBK4B-XVG6F-BBMX7-M4%f%F2Y_OEM-Perp______HomeBusinessPipcRetail
|
15_c02fb62e-1cd5-4e18-ba25-e0480467ffaa_2WQNF-GBK4B-XVG6F-BBMX7-M4%f%F2Y_OEM-Perp______HomeBusinessPipcRetail
|
||||||
15_a2b90e7a-a797-4713-af90-f0becf52a1dd_YWD4R-CNKVT-VG8VJ-9333B-RC%f%W9F_Subscription__HomeBusinessRetail
|
15_a2b90e7a-a797-4713-af90-f0becf52a1dd_YWD4R-CNKVT-VG8VJ-9333B-RC%f%W9F_Subscription__HomeBusinessRetail
|
||||||
|
15_1fdfb4e4-f9c9-41c4-b055-c80daf00697d_B92QY-NKYFQ-6KTKH-VWW2Q-3P%f%B3B_OEM-ARM_______HomeStudentARMRetail
|
||||||
|
15_ebef9f05-5273-404a-9253-c5e252f50555_QPG96-CNT7M-KH36K-KY4HQ-M7%f%TBR_OEM-ARM_______HomeStudentPlusARMRetail
|
||||||
15_f2de350d-3028-410a-bfae-283e00b44d0e_6WW3N-BDGM9-PCCHD-9QPP9-P3%f%4QG_Subscription__HomeStudentRetail
|
15_f2de350d-3028-410a-bfae-283e00b44d0e_6WW3N-BDGM9-PCCHD-9QPP9-P3%f%4QG_Subscription__HomeStudentRetail
|
||||||
15_44984381-406e-4a35-b1c3-e54f499556e2_RV7NQ-HY3WW-7CKWH-QTVMW-29%f%VHC_Retail________InfoPathRetail
|
15_44984381-406e-4a35-b1c3-e54f499556e2_RV7NQ-HY3WW-7CKWH-QTVMW-29%f%VHC_Retail________InfoPathRetail
|
||||||
15_9e016989-4007-42a6-8051-64eb97110cf2_C4TGN-QQW6Y-FYKXC-6WJW7-X7%f%3VG_MAK___________InfoPathVolume
|
15_9e016989-4007-42a6-8051-64eb97110cf2_C4TGN-QQW6Y-FYKXC-6WJW7-X7%f%3VG_MAK___________InfoPathVolume
|
||||||
@ -2207,6 +2193,8 @@ for %%# in (
|
|||||||
16_685062a7-6024-42e7-8c5f-6bb9e63e697f_FVGNR-X82B2-6PRJM-YT4W7-8H%f%V36_MAK___________ExcelVolume
|
16_685062a7-6024-42e7-8c5f-6bb9e63e697f_FVGNR-X82B2-6PRJM-YT4W7-8H%f%V36_MAK___________ExcelVolume
|
||||||
16_c02fb62e-1cd5-4e18-ba25-e0480467ffaa_2WQNF-GBK4B-XVG6F-BBMX7-M4%f%F2Y_OEM-Perp______HomeBusinessPipcRetail
|
16_c02fb62e-1cd5-4e18-ba25-e0480467ffaa_2WQNF-GBK4B-XVG6F-BBMX7-M4%f%F2Y_OEM-Perp______HomeBusinessPipcRetail
|
||||||
16_86834d00-7896-4a38-8fae-32f20b86fa2b_HM6FM-NVF78-KV9PM-F36B8-D9%f%MXD_Retail________HomeBusinessRetail
|
16_86834d00-7896-4a38-8fae-32f20b86fa2b_HM6FM-NVF78-KV9PM-F36B8-D9%f%MXD_Retail________HomeBusinessRetail
|
||||||
|
16_090896a0-ea98-48ac-b545-ba5da0eb0c9c_PBQPJ-NC22K-69MXD-KWMRF-WF%f%G77_OEM-ARM_______HomeStudentARMRetail
|
||||||
|
16_6bbe2077-01a4-4269-bf15-5bf4d8efc0b2_6F2NY-7RTX4-MD9KM-TJ43H-94%f%TBT_OEM-ARM_______HomeStudentPlusARMRetail
|
||||||
16_c28acdb8-d8b3-4199-baa4-024d09e97c99_PNPRV-F2627-Q8JVC-3DGR9-WT%f%YRK_Retail________HomeStudentRetail
|
16_c28acdb8-d8b3-4199-baa4-024d09e97c99_PNPRV-F2627-Q8JVC-3DGR9-WT%f%YRK_Retail________HomeStudentRetail
|
||||||
16_e2127526-b60c-43e0-bed1-3c9dc3d5a468_YWD4R-CNKVT-VG8VJ-9333B-RC%f%3B8_Retail________HomeStudentVNextRetail
|
16_e2127526-b60c-43e0-bed1-3c9dc3d5a468_YWD4R-CNKVT-VG8VJ-9333B-RC%f%3B8_Retail________HomeStudentVNextRetail
|
||||||
16_69ec9152-153b-471a-bf35-77ec88683eae_VNWHF-FKFBW-Q2RGD-HYHWF-R3%f%HH2_Subscription__MondoRetail
|
16_69ec9152-153b-471a-bf35-77ec88683eae_VNWHF-FKFBW-Q2RGD-HYHWF-R3%f%HH2_Subscription__MondoRetail
|
||||||
@ -2253,6 +2241,8 @@ for %%# in (
|
|||||||
16_c201c2b7-02a1-41a8-b496-37c72910cd4a_KBPNW-64CMM-8KWCB-23F44-8B%f%7HM_Retail________Excel2019Retail
|
16_c201c2b7-02a1-41a8-b496-37c72910cd4a_KBPNW-64CMM-8KWCB-23F44-8B%f%7HM_Retail________Excel2019Retail
|
||||||
16_05cb4e1d-cc81-45d5-a769-f34b09b9b391_8NT4X-GQMCK-62X4P-TW6QP-YK%f%PYF_MAK-AE________Excel2019Volume
|
16_05cb4e1d-cc81-45d5-a769-f34b09b9b391_8NT4X-GQMCK-62X4P-TW6QP-YK%f%PYF_MAK-AE________Excel2019Volume
|
||||||
16_7fe09eef-5eed-4733-9a60-d7019df11cac_QBN2Y-9B284-9KW78-K48PB-R6%f%2YT_Retail________HomeBusiness2019Retail
|
16_7fe09eef-5eed-4733-9a60-d7019df11cac_QBN2Y-9B284-9KW78-K48PB-R6%f%2YT_Retail________HomeBusiness2019Retail
|
||||||
|
16_6303d14a-afad-431f-8434-81052a65f575_DJTNY-4HDWM-TDWB2-8PWC2-W2%f%RRT_OEM-ARM_______HomeStudentARM2019Retail
|
||||||
|
16_215c841d-ffc1-4f03-bd11-5b27b6ab64cc_NM8WT-CFHB2-QBGXK-J8W6J-GV%f%K8F_OEM-ARM_______HomeStudentPlusARM2019Retail
|
||||||
16_4539aa2c-5c31-4d47-9139-543a868e5741_XNWPM-32XQC-Y7QJC-QGGBV-YY%f%7JK_Retail________HomeStudent2019Retail
|
16_4539aa2c-5c31-4d47-9139-543a868e5741_XNWPM-32XQC-Y7QJC-QGGBV-YY%f%7JK_Retail________HomeStudent2019Retail
|
||||||
16_20e359d5-927f-47c0-8a27-38adbdd27124_WR43D-NMWQQ-HCQR2-VKXDR-37%f%B7H_Retail________Outlook2019Retail
|
16_20e359d5-927f-47c0-8a27-38adbdd27124_WR43D-NMWQQ-HCQR2-VKXDR-37%f%B7H_Retail________Outlook2019Retail
|
||||||
16_92a99ed8-2923-4cb7-a4c5-31da6b0b8cf3_RN3QB-GT6D7-YB3VH-F3RPB-3G%f%QYB_MAK-AE________Outlook2019Volume
|
16_92a99ed8-2923-4cb7-a4c5-31da6b0b8cf3_RN3QB-GT6D7-YB3VH-F3RPB-3G%f%QYB_MAK-AE________Outlook2019Volume
|
||||||
@ -2282,11 +2272,14 @@ for %%# in (
|
|||||||
:: Office 2021
|
:: Office 2021
|
||||||
16_f634398e-af69-48c9-b256-477bea3078b5_P286B-N3XYP-36QRQ-29CMP-RV%f%X9M_Retail________Access2021Retail
|
16_f634398e-af69-48c9-b256-477bea3078b5_P286B-N3XYP-36QRQ-29CMP-RV%f%X9M_Retail________Access2021Retail
|
||||||
16_ae17db74-16b0-430b-912f-4fe456e271db_JBH3N-P97FP-FRTJD-MGK2C-VF%f%WG6_MAK-AE________Access2021Volume
|
16_ae17db74-16b0-430b-912f-4fe456e271db_JBH3N-P97FP-FRTJD-MGK2C-VF%f%WG6_MAK-AE________Access2021Volume
|
||||||
|
16_844c36cb-851c-49e7-9079-12e62a049e2a_MNX9D-PB834-VCGY2-K2RW2-2D%f%P3D_Bypass________AccessRuntime2021Retail
|
||||||
16_fb099c19-d48b-4a2f-a160-4383011060aa_V6QFB-7N7G9-PF7W9-M8FQM-MY%f%8G9_Retail________Excel2021Retail
|
16_fb099c19-d48b-4a2f-a160-4383011060aa_V6QFB-7N7G9-PF7W9-M8FQM-MY%f%8G9_Retail________Excel2021Retail
|
||||||
16_9da1ecdb-3a62-4273-a234-bf6d43dc0778_WNYR4-KMR9H-KVC8W-7HJ8B-K7%f%9DQ_MAK-AE________Excel2021Volume
|
16_9da1ecdb-3a62-4273-a234-bf6d43dc0778_WNYR4-KMR9H-KVC8W-7HJ8B-K7%f%9DQ_MAK-AE________Excel2021Volume
|
||||||
16_38b92b63-1dff-4be7-8483-2a839441a2bc_JM99N-4MMD8-DQCGJ-VMYFY-R6%f%3YK_Subscription__HomeBusiness2021Retail
|
16_38b92b63-1dff-4be7-8483-2a839441a2bc_JM99N-4MMD8-DQCGJ-VMYFY-R6%f%3YK_Subscription__HomeBusiness2021Retail
|
||||||
16_2f258377-738f-48dd-9397-287e43079958_N3CWD-38XVH-KRX2Y-YRP74-6R%f%BB2_Subscription__HomeStudent2021Retail
|
16_2f258377-738f-48dd-9397-287e43079958_N3CWD-38XVH-KRX2Y-YRP74-6R%f%BB2_Subscription__HomeStudent2021Retail
|
||||||
16_279706f4-3a4b-4877-949b-f8c299cf0cc5_NB2TQ-3Y79C-77C6M-QMY7H-7Q%f%Y8P_Retail________OneNote2021Retail
|
16_279706f4-3a4b-4877-949b-f8c299cf0cc5_NB2TQ-3Y79C-77C6M-QMY7H-7Q%f%Y8P_Retail________OneNote2021Retail
|
||||||
|
16_0c7af60d-0664-49fc-9b01-41b2dea81380_THNKC-KFR6C-Y86Q9-W8CB3-GF%f%7PD_MAK-AE________OneNote2021Volume
|
||||||
|
16_778ccb9a-2f6a-44e5-853c-eb22b7609643_CNM3W-V94GB-QJQHH-BDQ3J-33%f%Y8H_Bypass________OneNoteFree2021Retail
|
||||||
16_ecea2cfa-d406-4a7f-be0d-c6163250d126_4NCWR-9V92Y-34VB2-RPTHR-YT%f%GR7_Retail________Outlook2021Retail
|
16_ecea2cfa-d406-4a7f-be0d-c6163250d126_4NCWR-9V92Y-34VB2-RPTHR-YT%f%GR7_Retail________Outlook2021Retail
|
||||||
16_45bf67f9-0fc8-4335-8b09-9226cef8a576_JQ9MJ-QYN6B-67PX9-GYFVY-QJ%f%6TB_MAK-AE________Outlook2021Volume
|
16_45bf67f9-0fc8-4335-8b09-9226cef8a576_JQ9MJ-QYN6B-67PX9-GYFVY-QJ%f%6TB_MAK-AE________Outlook2021Volume
|
||||||
16_8f89391e-eedb-429d-af90-9d36fbf94de6_RRRYB-DN749-GCPW4-9H6VK-HC%f%HPT_Retail________Personal2021Retail
|
16_8f89391e-eedb-429d-af90-9d36fbf94de6_RRRYB-DN749-GCPW4-9H6VK-HC%f%HPT_Retail________Personal2021Retail
|
||||||
@ -2354,20 +2347,144 @@ if %oVer%==16 (echo "%%D" | find /i "Subscription" %nul% && set _sublic=1)
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
if %1==getmsiprod if %oVer%==%%A (
|
|
||||||
for /f "tokens=*" %%x in ('findstr /i /c:"%%B" "%_oBranding%"') do set "prodId=%%x"
|
|
||||||
set prodId=!prodId:"/>=!
|
|
||||||
set prodId=!prodId:~-4!
|
|
||||||
reg query "%2\Registration\{%%B}" /v ProductCode %nul2% | find /i "-!prodId!-" %nul% && (
|
|
||||||
reg query "%2\Common\InstalledPackages" %nul2% | find /i "-!prodId!-" %nul% && (
|
|
||||||
if defined _oIds (set _oIds=!_oIds! %%E) else (set _oIds=%%E)
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
exit /b
|
||||||
|
|
||||||
if %1==findactivated if %oVer%==%%A (
|
::========================================================================================================================================
|
||||||
echo "!_FsortIds!" | find /i "-%%E-" %nul% && (
|
|
||||||
set actiProds%oVer%=!actiProds%oVer%! -%%E-
|
:: 1st column = Office version number
|
||||||
|
:: 2nd column = Activation ID
|
||||||
|
:: 3rd column = Product ID from branding.xml
|
||||||
|
:: 4th column = Edition
|
||||||
|
:: 5th column = Other Edition IDs if they are part of the same primary product (For reference only)
|
||||||
|
:: Separator = "_"
|
||||||
|
|
||||||
|
:msiofficedata
|
||||||
|
|
||||||
|
for %%# in (
|
||||||
|
:: Office 2013
|
||||||
|
15_ab4d047b-97cf-4126-a69f-34df08e2f254_0015_AccessRetail
|
||||||
|
15_259de5be-492b-44b3-9d78-9645f848f7b0_001C_AccessRuntimeRetail
|
||||||
|
15_4374022d-56b8-48c1-9bb7-d8f2fc726343_0015_AccessVolume
|
||||||
|
15_1b1d9bd5-12ea-4063-964c-16e7e87d6e08_0016_ExcelRetail
|
||||||
|
15_ac1ae7fd-b949-4e04-a330-849bc40638cf_0016_ExcelVolume
|
||||||
|
15_cfaf5356-49e3-48a8-ab3c-e729ab791250_00BA_GrooveRetail
|
||||||
|
15_4825ac28-ce41-45a7-9e6e-1fed74057601_00BA_GrooveVolume
|
||||||
|
15_c02fb62e-1cd5-4e18-ba25-e0480467ffaa_00E7_HomeBusinessPipcRetail
|
||||||
|
15_cd256150-a898-441f-aac0-9f8f33390e45_0013_HomeBusinessRetail
|
||||||
|
15_1fdfb4e4-f9c9-41c4-b055-c80daf00697d_00CE_HomeStudentARMRetail
|
||||||
|
15_ebef9f05-5273-404a-9253-c5e252f50555_00DA_HomeStudentPlusARMRetail
|
||||||
|
15_98685d21-78bd-4c62-bc4f-653344a63035_002F_HomeStudentRetail
|
||||||
|
15_44984381-406e-4a35-b1c3-e54f499556e2_0044_InfoPathRetail
|
||||||
|
15_9e016989-4007-42a6-8051-64eb97110cf2_0044_InfoPathVolume
|
||||||
|
15_9103f3ce-1084-447a-827e-d6097f68c895_00EA_LyncAcademicRetail
|
||||||
|
15_ff693bf4-0276-4ddb-bb42-74ef1a0c9f4d_012D_LyncEntryRetail
|
||||||
|
15_fada6658-bfc6-4c4e-825a-59a89822cda8_012C_LyncRetail
|
||||||
|
15_e1264e10-afaf-4439-a98b-256df8bb156f_012C_LyncVolume
|
||||||
|
15_3169c8df-f659-4f95-9cc6-3115e6596e83_000F_MondoRetail
|
||||||
|
15_f33485a0-310b-4b72-9a0e-b1d605510dbd_000F_MondoVolume
|
||||||
|
15_3391e125-f6e4-4b1e-899c-a25e6092d40d_00A1_OneNoteFreeRetail
|
||||||
|
15_8b524bcc-67ea-4876-a509-45e46f6347e8_00A1_OneNoteRetail
|
||||||
|
15_b067e965-7521-455b-b9f7-c740204578a2_00A1_OneNoteVolume
|
||||||
|
15_12004b48-e6c8-4ffa-ad5a-ac8d4467765a_001A_OutlookRetail
|
||||||
|
15_8d577c50-ae5e-47fd-a240-24986f73d503_001A_OutlookVolume
|
||||||
|
15_5aab8561-1686-43f7-9ff5-2c861da58d17_00E6_PersonalPipcRetail
|
||||||
|
15_17e9df2d-ed91-4382-904b-4fed6a12caf0_0033_PersonalRetail
|
||||||
|
15_31743b82-bfbc-44b6-aa12-85d42e644d5b_0018_PowerPointRetail
|
||||||
|
15_e40dcb44-1d5c-4085-8e8f-943f33c4f004_0018_PowerPointVolume
|
||||||
|
15_4e26cac1-e15a-4467-9069-cb47b67fe191_00E8_ProfessionalPipcRetail
|
||||||
|
15_44bc70e2-fb83-4b09-9082-e5557e0c2ede_0014_ProfessionalRetail
|
||||||
|
15_f2435de4-5fc0-4e5b-ac97-34f515ec5ee7_003B_ProjectProRetail
|
||||||
|
15_ed34dc89-1c27-4ecd-8b2f-63d0f4cedc32_003B_ProjectProVolume
|
||||||
|
15_5517e6a2-739b-4822-946f-7f0f1c5934b1_003A_ProjectStdRetail
|
||||||
|
15_2b9e4a37-6230-4b42-bee2-e25ce86c8c7a_003A_ProjectStdVolume
|
||||||
|
15_064383fa-1538-491c-859b-0ecab169a0ab_0011_ProPlusRetail
|
||||||
|
15_2b88c4f2-ea8f-43cd-805e-4d41346e18a7_0011_ProPlusVolume
|
||||||
|
15_c3a0814a-70a4-471f-af37-2313a6331111_0019_PublisherRetail
|
||||||
|
15_38ea49f6-ad1d-43f1-9888-99a35d7c9409_0019_PublisherVolume
|
||||||
|
15_ba3e3833-6a7e-445a-89d0-7802a9a68588_0017_SPDRetail
|
||||||
|
15_32255c0a-16b4-4ce2-b388-8a4267e219eb_0012_StandardRetail
|
||||||
|
15_a24cca51-3d54-4c41-8a76-4031f5338cb2_0012_StandardVolume
|
||||||
|
15_15d12ad4-622d-4257-976c-5eb3282fb93d_0051_VisioProRetail
|
||||||
|
15_3e4294dd-a765-49bc-8dbd-cf8b62a4bd3d_0051_VisioProVolume
|
||||||
|
15_dae597ce-5823-4c77-9580-7268b93a4b23_0053_VisioStdRetail
|
||||||
|
15_44a1f6ff-0876-4edb-9169-dbb43101ee89_0053_VisioStdVolume
|
||||||
|
15_191509f2-6977-456f-ab30-cf0492b1e93a_001B_WordRetail
|
||||||
|
15_9cedef15-be37-4ff0-a08a-13a045540641_001B_WordVolume
|
||||||
|
:: Office 365 - 15.0 version
|
||||||
|
15_befee371-a2f5-4648-85db-a2c55fdf324c_00E9_O365BusinessRetail
|
||||||
|
15_537ea5b5-7d50-4876-bd38-a53a77caca32_00D6_O365HomePremRetail
|
||||||
|
15_149dbce7-a48e-44db-8364-a53386cd4580_00D4_O365ProPlusRetail
|
||||||
|
15_bacd4614-5bef-4a5e-bafc-de4c788037a2_00D5_O365SmallBusPremRetail
|
||||||
|
:: Office 365 - 16.0 version
|
||||||
|
16_6337137e-7c07-4197-8986-bece6a76fc33_00E9_O365BusinessRetail
|
||||||
|
16_2f5c71b4-5b7a-4005-bb68-f9fac26f2ea3_00D6_O365EduCloudRetail
|
||||||
|
16_537ea5b5-7d50-4876-bd38-a53a77caca32_00D6_O365HomePremRetail
|
||||||
|
16_149dbce7-a48e-44db-8364-a53386cd4580_00D4_O365ProPlusRetail
|
||||||
|
16_bacd4614-5bef-4a5e-bafc-de4c788037a2_00D5_O365SmallBusPremRetail
|
||||||
|
:: Office 2016
|
||||||
|
16_bfa358b0-98f1-4125-842e-585fa13032e6_0015_AccessRetail
|
||||||
|
16_9d9faf9e-d345-4b49-afce-68cb0a539c7c_001C_AccessRuntimeRetail
|
||||||
|
16_3b2fa33f-cd5a-43a5-bd95-f49f3f546b0b_0015_AccessVolume
|
||||||
|
16_424d52ff-7ad2-4bc7-8ac6-748d767b455d_0016_ExcelRetail
|
||||||
|
16_685062a7-6024-42e7-8c5f-6bb9e63e697f_0016_ExcelVolume
|
||||||
|
16_c02fb62e-1cd5-4e18-ba25-e0480467ffaa_00E7_HomeBusinessPipcRetail
|
||||||
|
16_86834d00-7896-4a38-8fae-32f20b86fa2b_0013_HomeBusinessRetail
|
||||||
|
16_090896a0-ea98-48ac-b545-ba5da0eb0c9c_00CE_HomeStudentARMRetail
|
||||||
|
16_6bbe2077-01a4-4269-bf15-5bf4d8efc0b2_00DA_HomeStudentPlusARMRetail
|
||||||
|
16_c28acdb8-d8b3-4199-baa4-024d09e97c99_002F_HomeStudentRetail
|
||||||
|
16_e2127526-b60c-43e0-bed1-3c9dc3d5a468_002F_HomeStudentVNextRetail
|
||||||
|
16_b21367df-9545-4f02-9f24-240691da0e58_000F_MondoRetail
|
||||||
|
16_2cd0ea7e-749f-4288-a05e-567c573b2a6c_000F_MondoVolume
|
||||||
|
16_436366de-5579-4f24-96db-3893e4400030_00A3_OneNoteFreeRetail
|
||||||
|
16_83ac4dd9-1b93-40ed-aa55-ede25bb6af38_00A1_OneNoteRetail
|
||||||
|
16_23b672da-a456-4860-a8f3-e062a501d7e8_00A1_OneNoteVolume
|
||||||
|
16_5a670809-0983-4c2d-8aad-d3c2c5b7d5d1_001A_OutlookRetail
|
||||||
|
16_50059979-ac6f-4458-9e79-710bcb41721a_001A_OutlookVolume
|
||||||
|
16_5aab8561-1686-43f7-9ff5-2c861da58d17_00E6_PersonalPipcRetail
|
||||||
|
16_a9f645a1-0d6a-4978-926a-abcb363b72a6_0033_PersonalRetail
|
||||||
|
16_f32d1284-0792-49da-9ac6-deb2bc9c80b6_0018_PowerPointRetail
|
||||||
|
16_9b4060c9-a7f5-4a66-b732-faf248b7240f_0018_PowerPointVolume
|
||||||
|
16_4e26cac1-e15a-4467-9069-cb47b67fe191_00E8_ProfessionalPipcRetail
|
||||||
|
16_d64edc00-7453-4301-8428-197343fafb16_0014_ProfessionalRetail
|
||||||
|
16_0f42f316-00b1-48c5-ada4-2f52b5720ad0_003B_ProjectProRetail
|
||||||
|
16_82f502b5-b0b0-4349-bd2c-c560df85b248_003B_ProjectProVolume
|
||||||
|
16_16728639-a9ab-4994-b6d8-f81051e69833_003B_ProjectProXVolume
|
||||||
|
16_e9f0b3fc-962f-4944-ad06-05c10b6bcd5e_003A_ProjectStdRetail
|
||||||
|
16_82e6b314-2a62-4e51-9220-61358dd230e6_003A_ProjectStdVolume
|
||||||
|
16_431058f0-c059-44c5-b9e7-ed2dd46b6789_003A_ProjectStdXVolume
|
||||||
|
16_de52bd50-9564-4adc-8fcb-a345c17f84f9_0011_ProPlusRetail
|
||||||
|
16_c47456e3-265d-47b6-8ca0-c30abbd0ca36_0011_ProPlusVolume
|
||||||
|
16_6e0c1d99-c72e-4968-bcb7-ab79e03e201e_0019_PublisherRetail
|
||||||
|
16_fcc1757b-5d5f-486a-87cf-c4d6dedb6032_0019_PublisherVolume
|
||||||
|
16_971cd368-f2e1-49c1-aedd-330909ce18b6_012D_SkypeforBusinessEntryRetail
|
||||||
|
16_418d2b9f-b491-4d7f-84f1-49e27cc66597_012C_SkypeforBusinessRetail
|
||||||
|
16_03ca3b9a-0869-4749-8988-3cbc9d9f51bb_012C_SkypeforBusinessVolume
|
||||||
|
16_9103f3ce-1084-447a-827e-d6097f68c895_012C_SkypeServiceBypassRetail
|
||||||
|
16_4a31c291-3a12-4c64-b8ab-cd79212be45e_0012_StandardRetail
|
||||||
|
16_0ed94aac-2234-4309-ba29-74bdbb887083_0012_StandardVolume
|
||||||
|
16_2dfe2075-2d04-4e43-816a-eb60bbb77574_0051_VisioProRetail
|
||||||
|
16_295b2c03-4b1c-4221-b292-1411f468bd02_0051_VisioProVolume
|
||||||
|
16_0594dc12-8444-4912-936a-747ca742dbdb_0051_VisioProXVolume
|
||||||
|
16_c76dbcbc-d71b-4f45-b5b3-b7494cb4e23e_0053_VisioStdRetail
|
||||||
|
16_44151c2d-c398-471f-946f-7660542e3369_0053_VisioStdVolume
|
||||||
|
16_1d1c6879-39a3-47a5-9a6d-aceefa6a289d_0053_VisioStdXVolume
|
||||||
|
16_cacaa1bf-da53-4c3b-9700-11738ef1c2a5_001B_WordRetail
|
||||||
|
16_c3000759-551f-4f4a-bcac-a4b42cbf1de2_001B_WordVolume
|
||||||
|
) do (
|
||||||
|
for /f "tokens=1-5 delims=_" %%A in ("%%#") do (
|
||||||
|
|
||||||
|
set getIds=1
|
||||||
|
if "%oVer%"=="%%A" (
|
||||||
|
if /i "%2"=="getmsiret" (echo %%D | findstr /i "Volume VL" %nul% && set getIds=)
|
||||||
|
|
||||||
|
if defined getIds (
|
||||||
|
reg query "%1\Registration\{%%B}" /v ProductCode %nul2% | find /i "-%%C-" %nul% && (
|
||||||
|
reg query "%1\Common\InstalledPackages" %nul2% | find /i "-%%C-" %nul% && (
|
||||||
|
if defined _oIds (set _oIds=!_oIds! %%D) else (set _oIds=%%D)
|
||||||
|
)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
@set masver=2.9
|
@set masver=3.0
|
||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
|
|
||||||
@ -134,7 +134,7 @@ echo:
|
|||||||
echo Null service is not running, script may crash...
|
echo Null service is not running, script may crash...
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
echo Help - %mas%fix_service
|
echo Check this webpage for help - %mas%fix_service
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
ping 127.0.0.1 -n 20
|
ping 127.0.0.1 -n 20
|
||||||
@ -149,7 +149,7 @@ echo:
|
|||||||
echo Error - Script either has LF line ending issue or an empty line at the end of the script is missing.
|
echo Error - Script either has LF line ending issue or an empty line at the end of the script is missing.
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
echo Help - %mas%troubleshoot
|
echo Check this webpage for help - %mas%troubleshoot
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
ping 127.0.0.1 -n 20 >nul
|
ping 127.0.0.1 -n 20 >nul
|
||||||
@ -192,6 +192,16 @@ for %%A in (%_actwin% %_actoff% %_actprojvis% %_actwinoff% %_uni%) do (if "%%A"=
|
|||||||
|
|
||||||
call :dk_setvar
|
call :dk_setvar
|
||||||
|
|
||||||
|
if %winbuild% EQU 1 (
|
||||||
|
%eline%
|
||||||
|
echo Failed to detect Windows build number.
|
||||||
|
echo:
|
||||||
|
setlocal EnableDelayedExpansion
|
||||||
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
if %winbuild% LSS 7600 (
|
if %winbuild% LSS 7600 (
|
||||||
%nceline%
|
%nceline%
|
||||||
echo Unsupported OS version detected [%winbuild%].
|
echo Unsupported OS version detected [%winbuild%].
|
||||||
@ -231,33 +241,6 @@ goto dk_done
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:: Check PowerShell
|
|
||||||
|
|
||||||
REM :PStest: $ExecutionContext.SessionState.LanguageMode :PStest:
|
|
||||||
|
|
||||||
cmd /c "%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':PStest:\s*';iex ($f[1])"" | find /i "FullLanguage" %nul1% || (
|
|
||||||
%eline%
|
|
||||||
cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode""
|
|
||||||
echo:
|
|
||||||
cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode"" | find /i "FullLanguage" %nul1% && (
|
|
||||||
echo Failed to run Powershell command but Powershell is working.
|
|
||||||
echo:
|
|
||||||
cmd /c "%psc% ""$av = Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct; $n = @(); foreach ($i in $av) { if ($i.displayName -notlike '*windows*') { $n += $i.displayName } }; if ($n) { Write-Host ('Installed 3rd party Antivirus might be blocking the script - ' + ($n -join ', ')) -ForegroundColor White -BackgroundColor Blue }"""
|
|
||||||
echo:
|
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
|
||||||
) || (
|
|
||||||
echo PowerShell is not working. Aborting...
|
|
||||||
echo If you have applied restrictions on Powershell then undo those changes.
|
|
||||||
echo:
|
|
||||||
set fixes=%fixes% %mas%fix_powershell
|
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%fix_powershell"
|
|
||||||
)
|
|
||||||
goto dk_done
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Elevate script as admin and pass arguments and preventing loop
|
:: Elevate script as admin and pass arguments and preventing loop
|
||||||
|
|
||||||
%nul1% fltmc || (
|
%nul1% fltmc || (
|
||||||
@ -270,6 +253,58 @@ goto dk_done
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
:: Check PowerShell
|
||||||
|
|
||||||
|
::pstst $ExecutionContext.SessionState.LanguageMode :pstst
|
||||||
|
|
||||||
|
for /f "delims=" %%a in ('cmd /c "%psc% ""if ($PSVersionTable.PSEdition -ne 'Core') {$f=[io.file]::ReadAllText('!_batp!') -split ':pstst';iex ($f[1])}""" %nul6%') do (set tstresult=%%a)
|
||||||
|
|
||||||
|
if /i not "%tstresult%"=="FullLanguage" (
|
||||||
|
%eline%
|
||||||
|
echo: %tstresult%
|
||||||
|
cmd /c "%psc% $ExecutionContext.SessionState.LanguageMode"
|
||||||
|
|
||||||
|
REM check LanguageMode
|
||||||
|
|
||||||
|
cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode"" | findstr /i "ConstrainedLanguage RestrictedLanguage NoLanguage" %nul1% && (
|
||||||
|
echo FullLanguage mode not found in PowerShell. Aborting...
|
||||||
|
echo If you have applied restrictions on Powershell then undo those changes.
|
||||||
|
echo:
|
||||||
|
set fixes=%fixes% %mas%fix_powershell
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%fix_powershell"
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
|
REM check Powershell core version
|
||||||
|
|
||||||
|
cmd /c "%psc% "$PSVersionTable.PSEdition"" | find /i "Core" %nul1% && (
|
||||||
|
echo Windows Powershell is needed for MAS but it seems to be replaced with Powershell core. Aborting...
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
|
REM check for Mal-ware that may cause issues with Powershell
|
||||||
|
|
||||||
|
for /r "%ProgramFiles%\" %%f in (secureboot.exe) do if exist "%%f" (
|
||||||
|
echo "%%f"
|
||||||
|
echo Mal%blank%ware found, PowerShell is not working properly.
|
||||||
|
echo:
|
||||||
|
set fixes=%fixes% %mas%remove_mal%w%ware
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%remove_mal%w%ware"
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
|
REM check antivirus and other errors
|
||||||
|
|
||||||
|
echo PowerShell is not working properly. Aborting...
|
||||||
|
cmd /c "%psc% ""$av = Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct; $n = @(); foreach ($i in $av) { if ($i.displayName -notlike '*windows*') { $n += $i.displayName } }; if ($n) { Write-Host ('Installed 3rd party Antivirus might be blocking the script - ' + ($n -join ', ')) -ForegroundColor White -BackgroundColor Blue }"""
|
||||||
|
echo:
|
||||||
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
|
::========================================================================================================================================
|
||||||
|
|
||||||
:: Disable QuickEdit and launch from conhost.exe to avoid Terminal app
|
:: Disable QuickEdit and launch from conhost.exe to avoid Terminal app
|
||||||
|
|
||||||
if %winbuild% GEQ 17763 (
|
if %winbuild% GEQ 17763 (
|
||||||
@ -280,34 +315,33 @@ set terminal=
|
|||||||
|
|
||||||
:: Check if script is running in Terminal app
|
:: Check if script is running in Terminal app
|
||||||
|
|
||||||
set r1=$TB = [AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2, $False).DefineType(0);
|
|
||||||
set r2=%r1% [void]$TB.DefinePInvokeMethod('GetConsoleWindow', 'kernel32.dll', 22, 1, [IntPtr], @(), 1, 3).SetImplementationFlags(128);
|
|
||||||
set r3=%r2% [void]$TB.DefinePInvokeMethod('SendMessageW', 'user32.dll', 22, 1, [IntPtr], @([IntPtr], [UInt32], [IntPtr], [IntPtr]), 1, 3).SetImplementationFlags(128);
|
|
||||||
set d1=%r3% $hIcon = $TB.CreateType(); $hWnd = $hIcon::GetConsoleWindow();
|
|
||||||
set d2=%d1% echo $($hIcon::SendMessageW($hWnd, 127, 0, 0) -ne [IntPtr]::Zero);
|
|
||||||
|
|
||||||
if defined terminal (
|
if defined terminal (
|
||||||
%psc% "%d2%" %nul2% | find /i "True" %nul1% && set terminal=
|
set lines=0
|
||||||
|
for /f "skip=2 tokens=2 delims=: " %%A in ('mode con') do if "!lines!"=="0" set lines=%%A
|
||||||
|
if !lines! GEQ 100 set terminal=
|
||||||
)
|
)
|
||||||
|
|
||||||
if defined ps32onArm goto :skipQE
|
|
||||||
if %_unattended%==1 goto :skipQE
|
if %_unattended%==1 goto :skipQE
|
||||||
for %%# in (%_args%) do (if /i "%%#"=="-qedit" goto :skipQE)
|
for %%# in (%_args%) do (if /i "%%#"=="-qedit" goto :skipQE)
|
||||||
|
|
||||||
|
:: Relaunch to disable QuickEdit in the current session and use conhost.exe instead of the Terminal app
|
||||||
|
:: This code disables QuickEdit for the current cmd.exe session without making permanent registry changes
|
||||||
|
:: It is included because clicking on the script window can pause execution, causing confusion that the script has stopped due to an error
|
||||||
|
|
||||||
|
set resetQE=1
|
||||||
|
reg query HKCU\Console /v QuickEdit %nul2% | find /i "0x0" %nul1% && set resetQE=0
|
||||||
|
reg add HKCU\Console /v QuickEdit /t REG_DWORD /d 0 /f %nul1%
|
||||||
|
|
||||||
if defined terminal (
|
if defined terminal (
|
||||||
set "launchcmd=start conhost.exe %psc%"
|
start conhost.exe "!_batf!" %_args% -qedit
|
||||||
) else (
|
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
|
||||||
set "launchcmd=%psc%"
|
exit /b
|
||||||
|
) else if %resetQE% EQU 1 (
|
||||||
|
start cmd.exe /c ""!_batf!" %_args% -qedit"
|
||||||
|
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
|
||||||
|
exit /b
|
||||||
)
|
)
|
||||||
|
|
||||||
:: Disable QuickEdit in current session
|
|
||||||
|
|
||||||
set "d1=$t=[AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2, $False).DefineType(0);"
|
|
||||||
set "d2=$t.DefinePInvokeMethod('GetStdHandle', 'kernel32.dll', 22, 1, [IntPtr], @([Int32]), 1, 3).SetImplementationFlags(128);"
|
|
||||||
set "d3=$t.DefinePInvokeMethod('SetConsoleMode', 'kernel32.dll', 22, 1, [Boolean], @([IntPtr], [Int32]), 1, 3).SetImplementationFlags(128);"
|
|
||||||
set "d4=$k=$t.CreateType(); $b=$k::SetConsoleMode($k::GetStdHandle(-10), 0x0080);"
|
|
||||||
|
|
||||||
%launchcmd% "%d1% %d2% %d3% %d4% & cmd.exe '/c' '!_PSarg! -qedit'" && (exit /b) || (set terminal=1)
|
|
||||||
:skipQE
|
:skipQE
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
@ -316,9 +350,19 @@ set "d4=$k=$t.CreateType(); $b=$k::SetConsoleMode($k::GetStdHandle(-10), 0x0080)
|
|||||||
|
|
||||||
set -=
|
set -=
|
||||||
set old=
|
set old=
|
||||||
|
set pingp=
|
||||||
|
set upver=%masver:.=%
|
||||||
|
|
||||||
for /f "delims=[] tokens=2" %%# in ('ping -4 -n 1 updatecheck.mass%-%grave.dev') do (
|
for %%A in (
|
||||||
if not "%%#"=="" (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.69.%masver%" %nul1% || set old=1))
|
activ%-%ated.win
|
||||||
|
mass%-%grave.dev
|
||||||
|
) do if not defined pingp (
|
||||||
|
for /f "delims=[] tokens=2" %%B in ('ping -n 1 %%A') do (
|
||||||
|
if not "%%B"=="" (set old=1& set pingp=1)
|
||||||
|
for /f "delims=[] tokens=2" %%C in ('ping -n 1 updatecheck%upver%.%%A') do (
|
||||||
|
if not "%%C"=="" set old=
|
||||||
|
)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
if defined old (
|
if defined old (
|
||||||
@ -334,7 +378,7 @@ echo:
|
|||||||
call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :"
|
call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :"
|
||||||
choice /C:10 /N
|
choice /C:10 /N
|
||||||
if !errorlevel!==2 rem
|
if !errorlevel!==2 rem
|
||||||
if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b)
|
if !errorlevel!==1 (start %mas% & exit /b)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -429,7 +473,7 @@ if not exist %SysPath%\sppsvc.exe (
|
|||||||
echo [%SysPath%\sppsvc.exe] file is missing, aborting...
|
echo [%SysPath%\sppsvc.exe] file is missing, aborting...
|
||||||
echo:
|
echo:
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
goto dk_done
|
goto dk_done
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -483,6 +527,7 @@ set "_serv=sppsvc Winmgmt"
|
|||||||
:: Software Protection
|
:: Software Protection
|
||||||
:: Windows Management Instrumentation
|
:: Windows Management Instrumentation
|
||||||
|
|
||||||
|
if %_actwin%==0 set notwinact=1
|
||||||
call :dk_errorcheck
|
call :dk_errorcheck
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
@ -519,8 +564,9 @@ call :dk_color %Red% "Checking Evaluation Edition [Evaluation editio
|
|||||||
if defined _evalserv (
|
if defined _evalserv (
|
||||||
call :dk_color %Blue% "Go back to main menu and use [Change Edition] option."
|
call :dk_color %Blue% "Go back to main menu and use [Change Edition] option."
|
||||||
) else (
|
) else (
|
||||||
|
call :dk_color %Blue% "Use TSforge activation option from the main menu to reset evaluation period."
|
||||||
set fixes=%fixes% %mas%evaluation_editions
|
set fixes=%fixes% %mas%evaluation_editions
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%evaluation_editions"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%evaluation_editions"
|
||||||
)
|
)
|
||||||
|
|
||||||
goto :ks_office
|
goto :ks_office
|
||||||
@ -570,21 +616,18 @@ if %winbuild% LSS 9200 if exist "%SysPath%\spp\tokens\skus\Security-SPP-Componen
|
|||||||
if defined skunotfound (
|
if defined skunotfound (
|
||||||
call :dk_color %Red% "Required license files not found in %SysPath%\spp\tokens\skus\"
|
call :dk_color %Red% "Required license files not found in %SysPath%\spp\tokens\skus\"
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
)
|
)
|
||||||
|
|
||||||
if defined sppks (
|
if defined sppks (
|
||||||
call :dk_color %Red% "%KS% activation is supported but failed to find the %KS% key."
|
call :dk_color %Red% "%KS% activation is supported but failed to find the %KS% key."
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
)
|
)
|
||||||
|
|
||||||
if not defined skunotfound if not defined sppks (
|
if not defined skunotfound if not defined sppks (
|
||||||
call :dk_color %Red% "This product does not support %KS% activation."
|
call :dk_color %Red% "This product does not support %KS% activation."
|
||||||
if %winbuild% LSS 9200 (
|
call :dk_color %Blue% "Use TSforge activation option from the main menu."
|
||||||
call :dk_color2 %Blue% "Use the alternative activator listed here - " %_Yellow% " %mas%unsupported_products_activation"
|
|
||||||
)
|
|
||||||
set fixes=%fixes% %mas%unsupported_products_activation
|
|
||||||
)
|
)
|
||||||
echo:
|
echo:
|
||||||
goto :ks_office
|
goto :ks_office
|
||||||
@ -1196,7 +1239,7 @@ for /r "%_common%\Microsoft Shared\OFFICE%oVer%\" %%f in (BRANDING.XML) do if ex
|
|||||||
if not defined _oBranding for /r "%_common2%\Microsoft Shared\OFFICE%oVer%\" %%f in (BRANDING.XML) do if exist "%%f" set "_oBranding=%%f"
|
if not defined _oBranding for /r "%_common2%\Microsoft Shared\OFFICE%oVer%\" %%f in (BRANDING.XML) do if exist "%%f" set "_oBranding=%%f"
|
||||||
|
|
||||||
call :ksdata getmsiprod %2
|
call :ksdata getmsiprod %2
|
||||||
call :ks_msiretaildata getmsiret %2
|
call :msiofficedata %2 getmsiret
|
||||||
|
|
||||||
echo:
|
echo:
|
||||||
echo Processing Office... [MSI ^| %_version% ^| %_oArch%]
|
echo Processing Office... [MSI ^| %_version% ^| %_oArch%]
|
||||||
@ -1393,7 +1436,7 @@ echo Clearing Office License Blocks [Successfully cleared from all %cou
|
|||||||
set defname=DEFTEMP-%random%
|
set defname=DEFTEMP-%random%
|
||||||
for /f "skip=2 tokens=2*" %%a in ('"reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /v Default" %nul6%') do call set "defdat=%%b"
|
for /f "skip=2 tokens=2*" %%a in ('"reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /v Default" %nul6%') do call set "defdat=%%b"
|
||||||
|
|
||||||
if defined o16c2r if defined officeact (
|
if defined o16c2r if defined ohookact (
|
||||||
if exist "%defdat%\NTUSER.DAT" (
|
if exist "%defdat%\NTUSER.DAT" (
|
||||||
reg load HKU\%defname% "%defdat%\NTUSER.DAT" %nul%
|
reg load HKU\%defname% "%defdat%\NTUSER.DAT" %nul%
|
||||||
reg query HKU\%defname%\Software %nul% && (
|
reg query HKU\%defname%\Software %nul% && (
|
||||||
@ -1429,11 +1472,8 @@ set upk_result=0
|
|||||||
call :dk_actid 0ff1ce15-a989-479d-af46-f275c6370663
|
call :dk_actid 0ff1ce15-a989-479d-af46-f275c6370663
|
||||||
|
|
||||||
if "%_actprojvis%"=="1" (
|
if "%_actprojvis%"=="1" (
|
||||||
set _allactid=
|
for /f "delims=" %%a in ('%psc% "Get-WmiObject -Query 'SELECT ID, Description, LicenseFamily FROM %spp% WHERE ApplicationID=''0ff1ce15-a989-479d-af46-f275c6370663'' AND PartialProductKey IS NOT NULL' | Where-Object { $_.LicenseFamily -notmatch 'Project' -and $_.LicenseFamily -notmatch 'Visio' } | Select-Object -ExpandProperty ID" %nul6%') do call set "_allactid=%%a !_allactid!"
|
||||||
for /f "delims=" %%a in ('%psc% "(Get-WmiObject -Query 'SELECT ID, Description, LicenseFamily FROM %spp% WHERE ApplicationID=''0ff1ce15-a989-479d-af46-f275c6370663'' AND PartialProductKey IS NOT NULL' | Where-Object { $_.LicenseFamily -notmatch 'Project' -and $_.LicenseFamily -notmatch 'Visio' }).ID" %nul6%') do call set "_allactid=%%a !_allactid!"
|
for /f "delims=" %%a in ('%psc% "Get-WmiObject -Query 'SELECT ID, Description, LicenseFamily FROM %spp% WHERE ApplicationID=''0ff1ce15-a989-479d-af46-f275c6370663'' AND PartialProductKey IS NOT NULL' | Where-Object { '!_allactid!' -contains $_.ID -and ($_.LicenseFamily -match 'Project' -or $_.LicenseFamily -match 'Visio') } | Select-Object -ExpandProperty ID" %nul6%') do call set "_allactid=%%a !_allactid!"
|
||||||
for /f "delims=" %%a in ('%psc% "(Get-WmiObject -Query 'SELECT ID, Description, LicenseFamily FROM %spp% WHERE ApplicationID=''0ff1ce15-a989-479d-af46-f275c6370663'' AND PartialProductKey IS NOT NULL' | Where-Object { $_.Description -match 'KMSCLIENT' -and ($_.LicenseFamily -match 'Project' -or $_.LicenseFamily -match 'Visio') }).ID" %nul6%') do call set "_allactid=%%a !_allactid!"
|
|
||||||
) else (
|
|
||||||
for /f "delims=" %%a in ('%psc% "(Get-WmiObject -Query 'SELECT ID FROM %spp% WHERE ApplicationID=''0ff1ce15-a989-479d-af46-f275c6370663'' AND LicenseStatus=1 AND GracePeriodRemaining=0 AND PartialProductKey IS NOT NULL').ID" %nul6%') do call set "_allactid=%%a !_allactid!"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
for %%# in (%apps%) do (
|
for %%# in (%apps%) do (
|
||||||
@ -1451,7 +1491,7 @@ set upk_result=2
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
if defined officeact if not %upk_result%==0 echo:
|
if defined ohookact if not %upk_result%==0 echo:
|
||||||
if %upk_result%==1 echo Uninstalling Other/Grace Keys [Successful]
|
if %upk_result%==1 echo Uninstalling Other/Grace Keys [Successful]
|
||||||
if %upk_result%==2 call :dk_color %Red% "Uninstalling Other/Grace Keys [Failed]"
|
if %upk_result%==2 call :dk_color %Red% "Uninstalling Other/Grace Keys [Failed]"
|
||||||
exit /b
|
exit /b
|
||||||
@ -1615,7 +1655,7 @@ set _tserror=
|
|||||||
set winbuild=1
|
set winbuild=1
|
||||||
set "nul=>nul 2>&1"
|
set "nul=>nul 2>&1"
|
||||||
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
|
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
|
||||||
set psc=powershell.exe
|
set psc=powershell.exe -nop -c
|
||||||
|
|
||||||
set run_once=
|
set run_once=
|
||||||
set t_name=Renewal Task
|
set t_name=Renewal Task
|
||||||
@ -1830,8 +1870,7 @@ if defined t_name (
|
|||||||
echo %prodname% cannot be KMS-activated on this computer due to unqualified OEM BIOS [0xC004F035].
|
echo %prodname% cannot be KMS-activated on this computer due to unqualified OEM BIOS [0xC004F035].
|
||||||
) else (
|
) else (
|
||||||
call :dk_color %Red% "%prodname% cannot be KMS-activated on this computer due to unqualified OEM BIOS [0xC004F035]."
|
call :dk_color %Red% "%prodname% cannot be KMS-activated on this computer due to unqualified OEM BIOS [0xC004F035]."
|
||||||
set fixes=%fixes% %mas%unsupported_products_activation
|
call :dk_color %Blue% "Use TSforge activation option from the main menu."
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%unsupported_products_activation"
|
|
||||||
)
|
)
|
||||||
set oemerr=1
|
set oemerr=1
|
||||||
set showfix=1
|
set showfix=1
|
||||||
@ -2302,7 +2341,7 @@ exit /b
|
|||||||
|
|
||||||
:dk_setvar
|
:dk_setvar
|
||||||
|
|
||||||
set psc=powershell.exe
|
set psc=powershell.exe -nop -c
|
||||||
set winbuild=1
|
set winbuild=1
|
||||||
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
|
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
|
||||||
|
|
||||||
@ -2569,7 +2608,7 @@ echo sc start sppsvc [Error Code: %spperror%]
|
|||||||
)
|
)
|
||||||
|
|
||||||
echo:
|
echo:
|
||||||
%psc% "$job = Start-Job { (Get-WmiObject -Query 'SELECT * FROM %sps%').Version }; if (-not (Wait-Job $job -Timeout 30)) {write-host 'sppsvc is not working correctly. Help - %mas%troubleshoot'}"
|
%psc% "$job = Start-Job { (Get-WmiObject -Query 'SELECT * FROM %sps%').Version }; if (-not (Wait-Job $job -Timeout 30)) {write-host 'sppsvc is not working correctly. Check this webpage for help - %mas%troubleshoot'}"
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
:: Get Product name (WMI/REG methods are not reliable in all conditions, hence winbrand.dll method is used)
|
:: Get Product name (WMI/REG methods are not reliable in all conditions, hence winbrand.dll method is used)
|
||||||
@ -2690,7 +2729,7 @@ if defined pupfound call :dk_color %Gray% "Checking PUP Activators
|
|||||||
if defined results call :dk_color %Red% "Checking Probable Mal%w%ware Infection..."
|
if defined results call :dk_color %Red% "Checking Probable Mal%w%ware Infection..."
|
||||||
if defined results call :dk_color %Red% "%results%"
|
if defined results call :dk_color %Red% "%results%"
|
||||||
set fixes=%fixes% %mas%remove_mal%w%ware
|
set fixes=%fixes% %mas%remove_mal%w%ware
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%remove_mal%w%ware"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%remove_mal%w%ware"
|
||||||
echo:
|
echo:
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -2810,7 +2849,7 @@ set showfix=1
|
|||||||
)
|
)
|
||||||
echo %serv_e% | findstr /i "sppsvc-1060" %nul% && (
|
echo %serv_e% | findstr /i "sppsvc-1060" %nul% && (
|
||||||
set fixes=%fixes% %mas%fix_service
|
set fixes=%fixes% %mas%fix_service
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%fix_service"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%fix_service"
|
||||||
set showfix=1
|
set showfix=1
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -2831,10 +2870,10 @@ call :dk_color2 %Red% "Checking Boot Mode [%safeboot_option
|
|||||||
for /f "skip=2 tokens=2*" %%A in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State" /v ImageState') do (set imagestate=%%B)
|
for /f "skip=2 tokens=2*" %%A in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State" /v ImageState') do (set imagestate=%%B)
|
||||||
|
|
||||||
if /i not "%imagestate%"=="IMAGE_STATE_COMPLETE" (
|
if /i not "%imagestate%"=="IMAGE_STATE_COMPLETE" (
|
||||||
set error=1
|
|
||||||
set showfix=1
|
|
||||||
call :dk_color %Gray% "Checking Windows Setup State [%imagestate%]"
|
call :dk_color %Gray% "Checking Windows Setup State [%imagestate%]"
|
||||||
echo "%imagestate%" | find /i "RESEAL" %nul% && (
|
echo "%imagestate%" | find /i "RESEAL" %nul% && (
|
||||||
|
set error=1
|
||||||
|
set showfix=1
|
||||||
call :dk_color %Blue% "You need to run it in normal mode in case you are running it in Audit Mode."
|
call :dk_color %Blue% "You need to run it in normal mode in case you are running it in Audit Mode."
|
||||||
)
|
)
|
||||||
echo "%imagestate%" | find /i "UNDEPLOYABLE" %nul% && (
|
echo "%imagestate%" | find /i "UNDEPLOYABLE" %nul% && (
|
||||||
@ -2863,12 +2902,11 @@ echo Checking WPA Registry Count [%wpainfo%]
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
if not defined officeact if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" (
|
if not defined notwinact if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" (
|
||||||
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul2% | find /i "Eval" %nul1% || (
|
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul2% | find /i "Eval" %nul1% || (
|
||||||
set error=1
|
|
||||||
call :dk_color %Red% "Checking Eval Packages [Non-Eval Licenses are installed in Eval Windows]"
|
call :dk_color %Red% "Checking Eval Packages [Non-Eval Licenses are installed in Eval Windows]"
|
||||||
set fixes=%fixes% %mas%evaluation_editions
|
set fixes=%fixes% %mas%evaluation_editions
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%evaluation_editions"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%evaluation_editions"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -2887,19 +2925,17 @@ if "%osSKU%"=="164" set osedition=ProfessionalEducation
|
|||||||
if "%osSKU%"=="165" set osedition=ProfessionalEducationN
|
if "%osSKU%"=="165" set osedition=ProfessionalEducationN
|
||||||
)
|
)
|
||||||
|
|
||||||
if not defined officeact (
|
if not defined notwinact (
|
||||||
if %osedition%==0 (
|
if %osedition%==0 (
|
||||||
call :dk_color %Red% "Checking Edition Name [Not Found In Registry]"
|
call :dk_color %Red% "Checking Edition Name [Not Found In Registry]"
|
||||||
) else (
|
) else (
|
||||||
|
|
||||||
if not exist "%SysPath%\spp\tokens\skus\%osedition%\%osedition%*.xrm-ms" if not exist "%SysPath%\spp\tokens\skus\Security-SPP-Component-SKU-%osedition%\*-%osedition%-*.xrm-ms" (
|
if not exist "%SysPath%\spp\tokens\skus\%osedition%\%osedition%*.xrm-ms" if not exist "%SysPath%\spp\tokens\skus\Security-SPP-Component-SKU-%osedition%\*-%osedition%-*.xrm-ms" (
|
||||||
set error=1
|
|
||||||
set skunotfound=1
|
set skunotfound=1
|
||||||
call :dk_color %Red% "Checking License Files [Not Found] [%osedition%]"
|
call :dk_color %Red% "Checking License Files [Not Found] [%osedition%]"
|
||||||
)
|
)
|
||||||
|
|
||||||
if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*-%osedition%-*.mum" (
|
if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*-%osedition%-*.mum" (
|
||||||
set error=1
|
|
||||||
call :dk_color %Red% "Checking Package Files [Not Found] [%osedition%]"
|
call :dk_color %Red% "Checking Package Files [Not Found] [%osedition%]"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -2930,7 +2966,7 @@ set showfix=1
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
if not defined officeact (
|
if not defined notwinact (
|
||||||
if %winbuild% GEQ 10240 (
|
if %winbuild% GEQ 10240 (
|
||||||
%nul% set /a "sum=%slcSKU%+%regSKU%+%wmiSKU%"
|
%nul% set /a "sum=%slcSKU%+%regSKU%+%wmiSKU%"
|
||||||
set /a "sum/=3"
|
set /a "sum/=3"
|
||||||
@ -2963,11 +2999,7 @@ call :dk_color2 %Red% "Checking ClipSVC " %Blue% "[System
|
|||||||
:: This "WLMS" service was included in previous Eval editions (which were activable) to automatically shut down the system every hour after the evaluation period expired and prevent SPPSVC from stopping.
|
:: This "WLMS" service was included in previous Eval editions (which were activable) to automatically shut down the system every hour after the evaluation period expired and prevent SPPSVC from stopping.
|
||||||
|
|
||||||
if exist "%SysPath%\wlms\wlms.exe" (
|
if exist "%SysPath%\wlms\wlms.exe" (
|
||||||
if %winbuild% LSS 9200 (
|
|
||||||
echo Checking Eval WLMS Service [Found]
|
echo Checking Eval WLMS Service [Found]
|
||||||
) else (
|
|
||||||
call :dk_color %Red% "Checking Eval WLMS Service [Found]"
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -2998,14 +3030,13 @@ for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT
|
|||||||
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "SkipRearm" /t REG_DWORD /d "0" /f %nul%
|
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "SkipRearm" /t REG_DWORD /d "0" /f %nul%
|
||||||
call :dk_color %Red% "Checking SkipRearm [Default 0 Value Not Found. Changing To 0]"
|
call :dk_color %Red% "Checking SkipRearm [Default 0 Value Not Found. Changing To 0]"
|
||||||
%psc% "Start-Job { Stop-Service sppsvc -force } | Wait-Job -Timeout 20 | Out-Null"
|
%psc% "Start-Job { Stop-Service sppsvc -force } | Wait-Job -Timeout 20 | Out-Null"
|
||||||
set error=1
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\Plugins\Objects\msft:rm/algorithm/hwid/4.0" /f ba02fed39662 /d %nul% || (
|
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\Plugins\Objects\msft:rm/algorithm/hwid/4.0" /f ba02fed39662 /d %nul% || (
|
||||||
call :dk_color %Red% "Checking SPP Registry Key [Incorrect ModuleId Found]"
|
call :dk_color %Red% "Checking SPP Registry Key [Incorrect ModuleId Found]"
|
||||||
set fixes=%fixes% %mas%issues_due_to_gaming_spoofers
|
set fixes=%fixes% %mas%issues_due_to_gaming_spoofers
|
||||||
call :dk_color2 %Blue% "Most likely caused by HWID spoofers. Help - " %_Yellow% " %mas%issues_due_to_gaming_spoofers"
|
call :dk_color2 %Blue% "Most likely caused by gaming spoofers. Check this webpage for help - " %_Yellow% " %mas%issues_due_to_gaming_spoofers"
|
||||||
set error=1
|
set error=1
|
||||||
set showfix=1
|
set showfix=1
|
||||||
)
|
)
|
||||||
@ -3020,7 +3051,7 @@ set error=1
|
|||||||
set showfix=1
|
set showfix=1
|
||||||
call :dk_color %Red% "Checking TokenStore Registry Key [Correct Path Not Found] [%tokenstore%]"
|
call :dk_color %Red% "Checking TokenStore Registry Key [Correct Path Not Found] [%tokenstore%]"
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -3044,6 +3075,7 @@ set showfix=1
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
if not defined notwinact (
|
||||||
call :dk_actid 55c92734-d682-4d71-983e-d6ec3f16059f
|
call :dk_actid 55c92734-d682-4d71-983e-d6ec3f16059f
|
||||||
if not defined apps (
|
if not defined apps (
|
||||||
%psc% "Start-Job { Stop-Service sppsvc -force } | Wait-Job -Timeout 20 | Out-Null; $sls = Get-WmiObject SoftwareLicensingService; $f=[io.file]::ReadAllText('!_batp!') -split ':xrm\:.*';iex ($f[1]); ReinstallLicenses" %nul%
|
%psc% "Start-Job { Stop-Service sppsvc -force } | Wait-Job -Timeout 20 | Out-Null; $sls = Get-WmiObject SoftwareLicensingService; $f=[io.file]::ReadAllText('!_batp!') -split ':xrm\:.*';iex ($f[1]); ReinstallLicenses" %nul%
|
||||||
@ -3052,12 +3084,13 @@ if not defined apps (
|
|||||||
set "_notfoundids=Key Not Installed / Act ID Not Found"
|
set "_notfoundids=Key Not Installed / Act ID Not Found"
|
||||||
call :dk_actids 55c92734-d682-4d71-983e-d6ec3f16059f
|
call :dk_actids 55c92734-d682-4d71-983e-d6ec3f16059f
|
||||||
if not defined allapps (
|
if not defined allapps (
|
||||||
|
set error=1
|
||||||
set "_notfoundids=Not found"
|
set "_notfoundids=Not found"
|
||||||
)
|
)
|
||||||
set error=1
|
|
||||||
call :dk_color %Red% "Checking Activation IDs [!_notfoundids!]"
|
call :dk_color %Red% "Checking Activation IDs [!_notfoundids!]"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
if exist "%tokenstore%\" if not exist "%tokenstore%\tokens.dat" (
|
if exist "%tokenstore%\" if not exist "%tokenstore%\tokens.dat" (
|
||||||
@ -3067,12 +3100,15 @@ call :dk_color %Red% "Checking SPP tokens.dat [Not Found] [%toke
|
|||||||
|
|
||||||
|
|
||||||
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% || (
|
||||||
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% "(Get-ScheduledTask -TaskName 'SvcRestartTask' -TaskPath '\Microsoft\Windows\SoftwareProtectionPlatform\').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 %Red% "Checking SvcRestartTask Status [!taskinfo!, System might deactivate later]"
|
||||||
|
if not defined error call :dk_color %Blue% "Reboot your machine using the restart option."
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -3140,7 +3176,7 @@ exit /b
|
|||||||
$wpaKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $env:COMPUTERNAME).OpenSubKey("SYSTEM\\WPA")
|
$wpaKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $env:COMPUTERNAME).OpenSubKey("SYSTEM\\WPA")
|
||||||
$count = 0
|
$count = 0
|
||||||
foreach ($subkeyName in $wpaKey.GetSubKeyNames()) {
|
foreach ($subkeyName in $wpaKey.GetSubKeyNames()) {
|
||||||
if ($subkeyName -match '.*-.*-.*-.*-.*-') {
|
if ($subkeyName -match '8DEC0AF1-0341-4b93-85CD-72606C2DF94C.*') {
|
||||||
$count++
|
$count++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3149,7 +3185,7 @@ $minBuildNumber = 14393
|
|||||||
if ($osVersion.Build -ge $minBuildNumber) {
|
if ($osVersion.Build -ge $minBuildNumber) {
|
||||||
$subkeyHashTable = @{}
|
$subkeyHashTable = @{}
|
||||||
foreach ($subkeyName in $wpaKey.GetSubKeyNames()) {
|
foreach ($subkeyName in $wpaKey.GetSubKeyNames()) {
|
||||||
if ($subkeyName -match '.*-.*-.*-.*-.*-') {
|
if ($subkeyName -match '8DEC0AF1-0341-4b93-85CD-72606C2DF94C.*') {
|
||||||
$keyNumber = $subkeyName -replace '.*-', ''
|
$keyNumber = $subkeyName -replace '.*-', ''
|
||||||
$subkeyHashTable[$keyNumber] = $true
|
$subkeyHashTable[$keyNumber] = $true
|
||||||
}
|
}
|
||||||
@ -3163,7 +3199,7 @@ if ($osVersion.Build -ge $minBuildNumber) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
$wpaKey.GetSubKeyNames() | ForEach-Object {
|
$wpaKey.GetSubKeyNames() | ForEach-Object {
|
||||||
if ($_ -match '.*-.*-.*-.*-.*-') {
|
if ($_ -match '8DEC0AF1-0341-4b93-85CD-72606C2DF94C.*') {
|
||||||
if ($PSVersionTable.PSVersion.Major -lt 3) {
|
if ($PSVersionTable.PSVersion.Major -lt 3) {
|
||||||
cmd /c "reg query "HKLM\SYSTEM\WPA\$_" /ve /t REG_BINARY >nul 2>&1"
|
cmd /c "reg query "HKLM\SYSTEM\WPA\$_" /ve /t REG_BINARY >nul 2>&1"
|
||||||
if ($LASTEXITCODE -ne 0) {
|
if ($LASTEXITCODE -ne 0) {
|
||||||
@ -3234,127 +3270,195 @@ exit /b
|
|||||||
|
|
||||||
:: 1st column = Office version number
|
:: 1st column = Office version number
|
||||||
:: 2nd column = Activation ID
|
:: 2nd column = Activation ID
|
||||||
:: 3rd column = Edition
|
:: 3rd column = Product ID from branding.xml
|
||||||
:: 4th column = Other Edition IDs if they are part of the same primary product (For reference only)
|
:: 4th column = Edition
|
||||||
|
:: 5th column = Other Edition IDs if they are part of the same primary product (For reference only)
|
||||||
:: Separator = "_"
|
:: Separator = "_"
|
||||||
|
|
||||||
:ks_msiretaildata
|
:: EditionID Notes:
|
||||||
|
:: For Office 2013 and later, all Edition IDs are clearly defined, and each ID corresponds to its specific licensing.
|
||||||
|
|
||||||
|
:: In Office 2010, the situation is a bit more complicated.
|
||||||
|
:: Products typically fall into two separate categories: Volume License (VL) and Non-VL. This is because a single installation cannot include both Retail and VL licensing types.
|
||||||
|
:: Some Edition IDs share the same primary product ID. For example, installing ProPlusVL also installs ProPlusAcadVL licenses, as both use 0011 as the primary product ID.
|
||||||
|
:: Therefore, in the script, we grouped VL and Non-VL versions by primary product ID and selected the highest Edition ID when multiple Edition IDs existed for the same primary product ID.
|
||||||
|
|
||||||
|
:: There are a few exceptions to this 2010 rule: Visio (Premium, Pro, Standard) and OEM-SingleImage.
|
||||||
|
|
||||||
|
:: For Visio, the issue is that branding.xml lists incorrect primary product IDs. The correct primary product ID for all three Visio variants is 0057. Based on the criteria above, we chose Visio-Premium as the representative Edition ID among the three.
|
||||||
|
:: For OEM-SingleImage, it installs multiple Edition IDs and uses 003D as the primary product ID. Following our method, we selected the highest available Edition ID—ProfessionalR in this case.
|
||||||
|
|
||||||
|
:msiofficedata
|
||||||
|
|
||||||
for %%# in (
|
for %%# in (
|
||||||
:: Office 2010
|
14_4d463c2c-0505-4626-8cdb-a4da82e2d8ed_0015_AccessR
|
||||||
14_4d463c2c-0505-4626-8cdb-a4da82e2d8ed_AccessR
|
14_745fb377-0a59-4ca9-b9a9-c359557a2c4e_001C_AccessRuntimeR
|
||||||
14_745fb377-0a59-4ca9-b9a9-c359557a2c4e_AccessRuntimeR
|
14_95ab3ec8-4106-4f9d-b632-03c019d1d23f_0015_AccessVL
|
||||||
14_4eaff0d0-c6cb-4187-94f3-c7656d49a0aa_ExcelR
|
14_4eaff0d0-c6cb-4187-94f3-c7656d49a0aa_0016_ExcelR
|
||||||
14_7004b7f0-6407-4f45-8eac-966e5f868bde_GrooveR
|
14_71dc86ff-f056-40d0-8ffb-9592705c9b76_0016_ExcelVL
|
||||||
14_7b7d1f17-fdcb-4820-9789-9bec6e377821_HomeBusinessR_[HomeBusinessDemoR]
|
14_7004b7f0-6407-4f45-8eac-966e5f868bde_00BA_GrooveR
|
||||||
14_19316117-30a8-4773-8fd9-7f7231f4e060_HomeBusinessSubR
|
14_fdad0dfa-417d-4b4f-93e4-64ea8867b7fd_00BA_GrooveVL
|
||||||
14_09e2d37e-474b-4121-8626-58ad9be5776f_HomeStudentR_[HomeStudentDemoR]
|
14_7b7d1f17-fdcb-4820-9789-9bec6e377821_0013_HomeBusinessR_[HomeBusinessDemoR]
|
||||||
14_c3ae020c-5a71-4cc5-a27a-2a97c2d46860_HSExcelR
|
14_19316117-30a8-4773-8fd9-7f7231f4e060_011E_HomeBusinessSubR
|
||||||
14_25fe4611-b44d-49cc-ae87-2143d299194e_HSOneNoteR
|
14_09e2d37e-474b-4121-8626-58ad9be5776f_002F_HomeStudentR_[HomeStudentDemoR]
|
||||||
14_d652ad8d-da5c-4358-b928-7fb1b4de7a7c_HSPowerPointR
|
14_c3ae020c-5a71-4cc5-a27a-2a97c2d46860_0029_HSExcelR
|
||||||
14_a963d7ae-7a88-41a7-94da-8bb5635a8af9_HSWordR
|
14_25fe4611-b44d-49cc-ae87-2143d299194e_00A3_HSOneNoteR
|
||||||
14_ef1da464-01c8-43a6-91af-e4e5713744f9_InfoPathR
|
14_d652ad8d-da5c-4358-b928-7fb1b4de7a7c_0037_HSPowerPointR
|
||||||
14_14f5946a-debc-4716-babc-7e2c240fec08_MondoR
|
14_a963d7ae-7a88-41a7-94da-8bb5635a8af9_002B_HSWordR
|
||||||
14_c1ceda8b-c578-4d5d-a4aa-23626be4e234_OEM
|
14_ef1da464-01c8-43a6-91af-e4e5713744f9_0044_InfoPathR
|
||||||
14_3f7aa693-9a7e-44fc-9309-bb3d8e604925_OneNoteR
|
14_85e22450-b741-430c-a172-a37962c938af_0044_InfoPathVL
|
||||||
14_fbf4ac36-31c8-4340-8666-79873129cf40_OutlookR
|
14_14f5946a-debc-4716-babc-7e2c240fec08_000F_MondoR
|
||||||
14_acb51361-c0db-4895-9497-1831c41f31a6_PersonalR_[PersonalDemoR,PersonalPrepaidR]
|
14_533b656a-4425-480b-8e30-1a2358898350_000F_MondoVL
|
||||||
14_133c8359-4e93-4241-8118-30bb18737ea0_PowerPointR
|
14_c1ceda8b-c578-4d5d-a4aa-23626be4e234_003D_ProfessionalR_[OEM-SingleImage]Exception
|
||||||
14_8b559c37-0117-413e-921b-b853aeb6e210_ProfessionalR_[ProfessionalAcadR,ProfessionalDemoR]
|
14_3f7aa693-9a7e-44fc-9309-bb3d8e604925_00A1_OneNoteR
|
||||||
14_725714d7-d58f-4d12-9fa8-35873c6f7215_ProjectProR_[ProjectProMSDNR]
|
14_6860b31f-6a67-48b8-84b9-e312b3485c4b_00A1_OneNoteVL
|
||||||
14_4d06f72e-fd50-4bc2-a24b-d448d7f17ef2_ProjectProSubR
|
14_fbf4ac36-31c8-4340-8666-79873129cf40_001A_OutlookR
|
||||||
14_688f6589-2bd9-424e-a152-b13f36aa6de1_ProjectStdR
|
14_a9aeabd8-63b8-4079-a28e-f531807fd6b8_001A_OutlookVL
|
||||||
14_71af7e84-93e6-4363-9b69-699e04e74071_ProPlusR_[ProPlusAcadR,ProPlusMSDNR,Sub4R]
|
14_acb51361-c0db-4895-9497-1831c41f31a6_0033_PersonalR_[PersonalDemoR,PersonalPrepaidR]
|
||||||
14_e98ef0c0-71c4-42ce-8305-287d8721e26c_ProPlusSubR
|
14_133c8359-4e93-4241-8118-30bb18737ea0_0018_PowerPointR
|
||||||
14_98677603-a668-4fa4-9980-3f1f05f78f69_PublisherR
|
14_38252940-718c-4aa6-81a4-135398e53851_0018_PowerPointVL
|
||||||
14_dbe3aee0-5183-4ff7-8142-66050173cb01_SmallBusBasicsR_[SmallBusBasicsMSDNR]
|
14_8b559c37-0117-413e-921b-b853aeb6e210_0014_ProfessionalR_[ProfessionalAcadR,ProfessionalDemoR]
|
||||||
14_b78df69e-0966-40b1-ae85-30a5134dedd0_SPDR
|
14_725714d7-d58f-4d12-9fa8-35873c6f7215_003B_ProjectProR_[ProjectProMSDNR]
|
||||||
14_d3422cfb-8d8b-4ead-99f9-eab0ccd990d7_StandardR
|
14_4d06f72e-fd50-4bc2-a24b-d448d7f17ef2_011F_ProjectProSubR
|
||||||
14_2745e581-565a-4670-ae90-6bf7c57ffe43_StarterR
|
14_1cf57a59-c532-4e56-9a7d-ffa2fe94b474_003B_ProjectProVL
|
||||||
14_66cad568-c2dc-459d-93ec-2f3cb967ee34_VisioSIR_Prem[Pro,Std]
|
14_688f6589-2bd9-424e-a152-b13f36aa6de1_003A_ProjectStdR
|
||||||
14_db3bbc9c-ce52-41d1-a46f-1a1d68059119_WordR
|
14_11b39439-6b93-4642-9570-f2eb81be2238_003A_ProjectStdVL
|
||||||
|
14_71af7e84-93e6-4363-9b69-699e04e74071_0011_ProPlusR_[ProPlusAcadR,ProPlusMSDNR,Sub4R]
|
||||||
|
14_e98ef0c0-71c4-42ce-8305-287d8721e26c_011D_ProPlusSubR
|
||||||
|
14_fdf3ecb9-b56f-43b2-a9b8-1b48b6bae1a7_0011_ProPlusVL_[ProPlusAcadVL]
|
||||||
|
14_98677603-a668-4fa4-9980-3f1f05f78f69_0019_PublisherR
|
||||||
|
14_3d014759-b128-4466-9018-e80f6320d9d0_0019_PublisherVL
|
||||||
|
14_dbe3aee0-5183-4ff7-8142-66050173cb01_008B_SmallBusBasicsR_[SmallBusBasicsMSDNR]
|
||||||
|
14_8090771e-d41a-4482-929e-de87f1f47e46_008B_SmallBusBasicsVL
|
||||||
|
14_b78df69e-0966-40b1-ae85-30a5134dedd0_0017_SPDR
|
||||||
|
14_d3422cfb-8d8b-4ead-99f9-eab0ccd990d7_0012_StandardR
|
||||||
|
14_1f76e346-e0be-49bc-9954-70ec53a4fcfe_0012_StandardVL_[StandardAcadVL]
|
||||||
|
14_2745e581-565a-4670-ae90-6bf7c57ffe43_0066_StarterR
|
||||||
|
14_66cad568-c2dc-459d-93ec-2f3cb967ee34_0057_VisioSIR_Prem[Pro,Std]Exception
|
||||||
|
14_36756cb8-8e69-4d11-9522-68899507cd6a_0057_VisioSIVL_Prem[Pro,Std]Exception
|
||||||
|
14_db3bbc9c-ce52-41d1-a46f-1a1d68059119_001B_WordR
|
||||||
|
14_98d4050e-9c98-49bf-9be1-85e12eb3ab13_001B_WordVL
|
||||||
:: Office 2013
|
:: Office 2013
|
||||||
15_ab4d047b-97cf-4126-a69f-34df08e2f254_AccessRetail
|
15_ab4d047b-97cf-4126-a69f-34df08e2f254_0015_AccessRetail
|
||||||
15_1b1d9bd5-12ea-4063-964c-16e7e87d6e08_ExcelRetail
|
15_259de5be-492b-44b3-9d78-9645f848f7b0_001C_AccessRuntimeRetail
|
||||||
15_cfaf5356-49e3-48a8-ab3c-e729ab791250_GrooveRetail
|
15_4374022d-56b8-48c1-9bb7-d8f2fc726343_0015_AccessVolume
|
||||||
15_c02fb62e-1cd5-4e18-ba25-e0480467ffaa_HomeBusinessPipcRetail
|
15_1b1d9bd5-12ea-4063-964c-16e7e87d6e08_0016_ExcelRetail
|
||||||
15_a2b90e7a-a797-4713-af90-f0becf52a1dd_HomeBusinessRetail
|
15_ac1ae7fd-b949-4e04-a330-849bc40638cf_0016_ExcelVolume
|
||||||
15_f2de350d-3028-410a-bfae-283e00b44d0e_HomeStudentRetail
|
15_cfaf5356-49e3-48a8-ab3c-e729ab791250_00BA_GrooveRetail
|
||||||
15_44984381-406e-4a35-b1c3-e54f499556e2_InfoPathRetail
|
15_4825ac28-ce41-45a7-9e6e-1fed74057601_00BA_GrooveVolume
|
||||||
15_9103f3ce-1084-447a-827e-d6097f68c895_LyncAcademicRetail
|
15_c02fb62e-1cd5-4e18-ba25-e0480467ffaa_00E7_HomeBusinessPipcRetail
|
||||||
15_ff693bf4-0276-4ddb-bb42-74ef1a0c9f4d_LyncEntryRetail
|
15_cd256150-a898-441f-aac0-9f8f33390e45_0013_HomeBusinessRetail
|
||||||
15_fada6658-bfc6-4c4e-825a-59a89822cda8_LyncRetail
|
15_1fdfb4e4-f9c9-41c4-b055-c80daf00697d_00CE_HomeStudentARMRetail
|
||||||
15_69ec9152-153b-471a-bf35-77ec88683eae_MondoRetail
|
15_ebef9f05-5273-404a-9253-c5e252f50555_00DA_HomeStudentPlusARMRetail
|
||||||
15_3391e125-f6e4-4b1e-899c-a25e6092d40d_OneNoteFreeRetail
|
15_98685d21-78bd-4c62-bc4f-653344a63035_002F_HomeStudentRetail
|
||||||
15_8b524bcc-67ea-4876-a509-45e46f6347e8_OneNoteRetail
|
15_44984381-406e-4a35-b1c3-e54f499556e2_0044_InfoPathRetail
|
||||||
15_12004b48-e6c8-4ffa-ad5a-ac8d4467765a_OutlookRetail
|
15_9e016989-4007-42a6-8051-64eb97110cf2_0044_InfoPathVolume
|
||||||
15_5aab8561-1686-43f7-9ff5-2c861da58d17_PersonalPipcRetail
|
15_9103f3ce-1084-447a-827e-d6097f68c895_00EA_LyncAcademicRetail
|
||||||
15_17e9df2d-ed91-4382-904b-4fed6a12caf0_PersonalRetail
|
15_ff693bf4-0276-4ddb-bb42-74ef1a0c9f4d_012D_LyncEntryRetail
|
||||||
15_31743b82-bfbc-44b6-aa12-85d42e644d5b_PowerPointRetail
|
15_fada6658-bfc6-4c4e-825a-59a89822cda8_012C_LyncRetail
|
||||||
15_064383fa-1538-491c-859b-0ecab169a0ab_ProPlusRetail
|
15_e1264e10-afaf-4439-a98b-256df8bb156f_012C_LyncVolume
|
||||||
15_4e26cac1-e15a-4467-9069-cb47b67fe191_ProfessionalPipcRetail
|
15_3169c8df-f659-4f95-9cc6-3115e6596e83_000F_MondoRetail
|
||||||
15_44bc70e2-fb83-4b09-9082-e5557e0c2ede_ProfessionalRetail
|
15_f33485a0-310b-4b72-9a0e-b1d605510dbd_000F_MondoVolume
|
||||||
15_2f72340c-b555-418d-8b46-355944fe66b8_ProjectProRetail
|
15_3391e125-f6e4-4b1e-899c-a25e6092d40d_00A1_OneNoteFreeRetail
|
||||||
15_58d95b09-6af6-453d-a976-8ef0ae0316b1_ProjectStdRetail
|
15_8b524bcc-67ea-4876-a509-45e46f6347e8_00A1_OneNoteRetail
|
||||||
15_c3a0814a-70a4-471f-af37-2313a6331111_PublisherRetail
|
15_b067e965-7521-455b-b9f7-c740204578a2_00A1_OneNoteVolume
|
||||||
15_ba3e3833-6a7e-445a-89d0-7802a9a68588_SPDRetail
|
15_12004b48-e6c8-4ffa-ad5a-ac8d4467765a_001A_OutlookRetail
|
||||||
15_32255c0a-16b4-4ce2-b388-8a4267e219eb_StandardRetail
|
15_8d577c50-ae5e-47fd-a240-24986f73d503_001A_OutlookVolume
|
||||||
15_a56a3b37-3a35-4bbb-a036-eee5f1898eee_VisioProRetail
|
15_5aab8561-1686-43f7-9ff5-2c861da58d17_00E6_PersonalPipcRetail
|
||||||
15_980f9e3e-f5a8-41c8-8596-61404addf677_VisioStdRetail
|
15_17e9df2d-ed91-4382-904b-4fed6a12caf0_0033_PersonalRetail
|
||||||
15_191509f2-6977-456f-ab30-cf0492b1e93a_WordRetail
|
15_31743b82-bfbc-44b6-aa12-85d42e644d5b_0018_PowerPointRetail
|
||||||
|
15_e40dcb44-1d5c-4085-8e8f-943f33c4f004_0018_PowerPointVolume
|
||||||
|
15_4e26cac1-e15a-4467-9069-cb47b67fe191_00E8_ProfessionalPipcRetail
|
||||||
|
15_44bc70e2-fb83-4b09-9082-e5557e0c2ede_0014_ProfessionalRetail
|
||||||
|
15_f2435de4-5fc0-4e5b-ac97-34f515ec5ee7_003B_ProjectProRetail
|
||||||
|
15_ed34dc89-1c27-4ecd-8b2f-63d0f4cedc32_003B_ProjectProVolume
|
||||||
|
15_5517e6a2-739b-4822-946f-7f0f1c5934b1_003A_ProjectStdRetail
|
||||||
|
15_2b9e4a37-6230-4b42-bee2-e25ce86c8c7a_003A_ProjectStdVolume
|
||||||
|
15_064383fa-1538-491c-859b-0ecab169a0ab_0011_ProPlusRetail
|
||||||
|
15_2b88c4f2-ea8f-43cd-805e-4d41346e18a7_0011_ProPlusVolume
|
||||||
|
15_c3a0814a-70a4-471f-af37-2313a6331111_0019_PublisherRetail
|
||||||
|
15_38ea49f6-ad1d-43f1-9888-99a35d7c9409_0019_PublisherVolume
|
||||||
|
15_ba3e3833-6a7e-445a-89d0-7802a9a68588_0017_SPDRetail
|
||||||
|
15_32255c0a-16b4-4ce2-b388-8a4267e219eb_0012_StandardRetail
|
||||||
|
15_a24cca51-3d54-4c41-8a76-4031f5338cb2_0012_StandardVolume
|
||||||
|
15_15d12ad4-622d-4257-976c-5eb3282fb93d_0051_VisioProRetail
|
||||||
|
15_3e4294dd-a765-49bc-8dbd-cf8b62a4bd3d_0051_VisioProVolume
|
||||||
|
15_dae597ce-5823-4c77-9580-7268b93a4b23_0053_VisioStdRetail
|
||||||
|
15_44a1f6ff-0876-4edb-9169-dbb43101ee89_0053_VisioStdVolume
|
||||||
|
15_191509f2-6977-456f-ab30-cf0492b1e93a_001B_WordRetail
|
||||||
|
15_9cedef15-be37-4ff0-a08a-13a045540641_001B_WordVolume
|
||||||
:: Office 365 - 15.0 version
|
:: Office 365 - 15.0 version
|
||||||
15_6337137e-7c07-4197-8986-bece6a76fc33_O365BusinessRetail
|
15_befee371-a2f5-4648-85db-a2c55fdf324c_00E9_O365BusinessRetail
|
||||||
15_537ea5b5-7d50-4876-bd38-a53a77caca32_O365HomePremRetail
|
15_537ea5b5-7d50-4876-bd38-a53a77caca32_00D6_O365HomePremRetail
|
||||||
15_149dbce7-a48e-44db-8364-a53386cd4580_O365ProPlusRetail
|
15_149dbce7-a48e-44db-8364-a53386cd4580_00D4_O365ProPlusRetail
|
||||||
15_bacd4614-5bef-4a5e-bafc-de4c788037a2_O365SmallBusPremRetail
|
15_bacd4614-5bef-4a5e-bafc-de4c788037a2_00D5_O365SmallBusPremRetail
|
||||||
:: Office 365 - 16.0 version
|
:: Office 365 - 16.0 version
|
||||||
16_6337137e-7c07-4197-8986-bece6a76fc33_O365BusinessRetail
|
16_6337137e-7c07-4197-8986-bece6a76fc33_00E9_O365BusinessRetail
|
||||||
16_2f5c71b4-5b7a-4005-bb68-f9fac26f2ea3_O365EduCloudRetail
|
16_2f5c71b4-5b7a-4005-bb68-f9fac26f2ea3_00D6_O365EduCloudRetail
|
||||||
16_537ea5b5-7d50-4876-bd38-a53a77caca32_O365HomePremRetail
|
16_537ea5b5-7d50-4876-bd38-a53a77caca32_00D6_O365HomePremRetail
|
||||||
16_149dbce7-a48e-44db-8364-a53386cd4580_O365ProPlusRetail
|
16_149dbce7-a48e-44db-8364-a53386cd4580_00D4_O365ProPlusRetail
|
||||||
16_bacd4614-5bef-4a5e-bafc-de4c788037a2_O365SmallBusPremRetail
|
16_bacd4614-5bef-4a5e-bafc-de4c788037a2_00D5_O365SmallBusPremRetail
|
||||||
:: Office 2016
|
:: Office 2016
|
||||||
16_bfa358b0-98f1-4125-842e-585fa13032e6_AccessRetail
|
16_bfa358b0-98f1-4125-842e-585fa13032e6_0015_AccessRetail
|
||||||
16_9d9faf9e-d345-4b49-afce-68cb0a539c7c_AccessRuntimeRetail
|
16_9d9faf9e-d345-4b49-afce-68cb0a539c7c_001C_AccessRuntimeRetail
|
||||||
16_424d52ff-7ad2-4bc7-8ac6-748d767b455d_ExcelRetail
|
16_3b2fa33f-cd5a-43a5-bd95-f49f3f546b0b_0015_AccessVolume
|
||||||
16_c02fb62e-1cd5-4e18-ba25-e0480467ffaa_HomeBusinessPipcRetail
|
16_424d52ff-7ad2-4bc7-8ac6-748d767b455d_0016_ExcelRetail
|
||||||
16_86834d00-7896-4a38-8fae-32f20b86fa2b_HomeBusinessRetail
|
16_685062a7-6024-42e7-8c5f-6bb9e63e697f_0016_ExcelVolume
|
||||||
16_c28acdb8-d8b3-4199-baa4-024d09e97c99_HomeStudentRetail
|
16_c02fb62e-1cd5-4e18-ba25-e0480467ffaa_00E7_HomeBusinessPipcRetail
|
||||||
16_e2127526-b60c-43e0-bed1-3c9dc3d5a468_HomeStudentVNextRetail
|
16_86834d00-7896-4a38-8fae-32f20b86fa2b_0013_HomeBusinessRetail
|
||||||
16_69ec9152-153b-471a-bf35-77ec88683eae_MondoRetail
|
16_090896a0-ea98-48ac-b545-ba5da0eb0c9c_00CE_HomeStudentARMRetail
|
||||||
16_436366de-5579-4f24-96db-3893e4400030_OneNoteFreeRetail
|
16_6bbe2077-01a4-4269-bf15-5bf4d8efc0b2_00DA_HomeStudentPlusARMRetail
|
||||||
16_83ac4dd9-1b93-40ed-aa55-ede25bb6af38_OneNoteRetail
|
16_c28acdb8-d8b3-4199-baa4-024d09e97c99_002F_HomeStudentRetail
|
||||||
16_5a670809-0983-4c2d-8aad-d3c2c5b7d5d1_OutlookRetail
|
16_e2127526-b60c-43e0-bed1-3c9dc3d5a468_002F_HomeStudentVNextRetail
|
||||||
16_5aab8561-1686-43f7-9ff5-2c861da58d17_PersonalPipcRetail
|
16_b21367df-9545-4f02-9f24-240691da0e58_000F_MondoRetail
|
||||||
16_a9f645a1-0d6a-4978-926a-abcb363b72a6_PersonalRetail
|
16_2cd0ea7e-749f-4288-a05e-567c573b2a6c_000F_MondoVolume
|
||||||
16_f32d1284-0792-49da-9ac6-deb2bc9c80b6_PowerPointRetail
|
16_436366de-5579-4f24-96db-3893e4400030_00A3_OneNoteFreeRetail
|
||||||
16_de52bd50-9564-4adc-8fcb-a345c17f84f9_ProPlusRetail
|
16_83ac4dd9-1b93-40ed-aa55-ede25bb6af38_00A1_OneNoteRetail
|
||||||
16_4e26cac1-e15a-4467-9069-cb47b67fe191_ProfessionalPipcRetail
|
16_23b672da-a456-4860-a8f3-e062a501d7e8_00A1_OneNoteVolume
|
||||||
16_d64edc00-7453-4301-8428-197343fafb16_ProfessionalRetail
|
16_5a670809-0983-4c2d-8aad-d3c2c5b7d5d1_001A_OutlookRetail
|
||||||
16_2f72340c-b555-418d-8b46-355944fe66b8_ProjectProRetail
|
16_50059979-ac6f-4458-9e79-710bcb41721a_001A_OutlookVolume
|
||||||
16_58d95b09-6af6-453d-a976-8ef0ae0316b1_ProjectStdRetail
|
16_5aab8561-1686-43f7-9ff5-2c861da58d17_00E6_PersonalPipcRetail
|
||||||
16_6e0c1d99-c72e-4968-bcb7-ab79e03e201e_PublisherRetail
|
16_a9f645a1-0d6a-4978-926a-abcb363b72a6_0033_PersonalRetail
|
||||||
16_9103f3ce-1084-447a-827e-d6097f68c895_SkypeServiceBypassRetail
|
16_f32d1284-0792-49da-9ac6-deb2bc9c80b6_0018_PowerPointRetail
|
||||||
16_971cd368-f2e1-49c1-aedd-330909ce18b6_SkypeforBusinessEntryRetail
|
16_9b4060c9-a7f5-4a66-b732-faf248b7240f_0018_PowerPointVolume
|
||||||
16_418d2b9f-b491-4d7f-84f1-49e27cc66597_SkypeforBusinessRetail
|
16_4e26cac1-e15a-4467-9069-cb47b67fe191_00E8_ProfessionalPipcRetail
|
||||||
16_4a31c291-3a12-4c64-b8ab-cd79212be45e_StandardRetail
|
16_d64edc00-7453-4301-8428-197343fafb16_0014_ProfessionalRetail
|
||||||
16_a56a3b37-3a35-4bbb-a036-eee5f1898eee_VisioProRetail
|
16_0f42f316-00b1-48c5-ada4-2f52b5720ad0_003B_ProjectProRetail
|
||||||
16_980f9e3e-f5a8-41c8-8596-61404addf677_VisioStdRetail
|
16_82f502b5-b0b0-4349-bd2c-c560df85b248_003B_ProjectProVolume
|
||||||
16_cacaa1bf-da53-4c3b-9700-11738ef1c2a5_WordRetail
|
16_16728639-a9ab-4994-b6d8-f81051e69833_003B_ProjectProXVolume
|
||||||
|
16_e9f0b3fc-962f-4944-ad06-05c10b6bcd5e_003A_ProjectStdRetail
|
||||||
|
16_82e6b314-2a62-4e51-9220-61358dd230e6_003A_ProjectStdVolume
|
||||||
|
16_431058f0-c059-44c5-b9e7-ed2dd46b6789_003A_ProjectStdXVolume
|
||||||
|
16_de52bd50-9564-4adc-8fcb-a345c17f84f9_0011_ProPlusRetail
|
||||||
|
16_c47456e3-265d-47b6-8ca0-c30abbd0ca36_0011_ProPlusVolume
|
||||||
|
16_6e0c1d99-c72e-4968-bcb7-ab79e03e201e_0019_PublisherRetail
|
||||||
|
16_fcc1757b-5d5f-486a-87cf-c4d6dedb6032_0019_PublisherVolume
|
||||||
|
16_971cd368-f2e1-49c1-aedd-330909ce18b6_012D_SkypeforBusinessEntryRetail
|
||||||
|
16_418d2b9f-b491-4d7f-84f1-49e27cc66597_012C_SkypeforBusinessRetail
|
||||||
|
16_03ca3b9a-0869-4749-8988-3cbc9d9f51bb_012C_SkypeforBusinessVolume
|
||||||
|
16_9103f3ce-1084-447a-827e-d6097f68c895_012C_SkypeServiceBypassRetail
|
||||||
|
16_4a31c291-3a12-4c64-b8ab-cd79212be45e_0012_StandardRetail
|
||||||
|
16_0ed94aac-2234-4309-ba29-74bdbb887083_0012_StandardVolume
|
||||||
|
16_2dfe2075-2d04-4e43-816a-eb60bbb77574_0051_VisioProRetail
|
||||||
|
16_295b2c03-4b1c-4221-b292-1411f468bd02_0051_VisioProVolume
|
||||||
|
16_0594dc12-8444-4912-936a-747ca742dbdb_0051_VisioProXVolume
|
||||||
|
16_c76dbcbc-d71b-4f45-b5b3-b7494cb4e23e_0053_VisioStdRetail
|
||||||
|
16_44151c2d-c398-471f-946f-7660542e3369_0053_VisioStdVolume
|
||||||
|
16_1d1c6879-39a3-47a5-9a6d-aceefa6a289d_0053_VisioStdXVolume
|
||||||
|
16_cacaa1bf-da53-4c3b-9700-11738ef1c2a5_001B_WordRetail
|
||||||
|
16_c3000759-551f-4f4a-bcac-a4b42cbf1de2_001B_WordVolume
|
||||||
) do (
|
) do (
|
||||||
for /f "tokens=1-5 delims=_" %%A in ("%%#") do (
|
for /f "tokens=1-5 delims=_" %%A in ("%%#") do (
|
||||||
|
|
||||||
if %1==getmsiret if "%oVer%"=="%%A" (
|
set getIds=1
|
||||||
for /f "tokens=*" %%x in ('findstr /i /c:"%%B" "%_oBranding%"') do set "prodId=%%x"
|
if "%oVer%"=="%%A" (
|
||||||
set prodId=!prodId:"/>=!
|
if /i "%2"=="getmsiret" (echo %%D | findstr /i "Volume VL" %nul% && set getIds=)
|
||||||
set prodId=!prodId:~-4!
|
|
||||||
if "%oVer%"=="14" (
|
if defined getIds (
|
||||||
REM Exception case for Visio because wrong primary product ID is mentioned in Branding.xml
|
reg query "%1\Registration\{%%B}" /v ProductCode %nul2% | find /i "-%%C-" %nul% && (
|
||||||
echo %%C | find /i "Visio" %nul% && set prodId=0057
|
reg query "%1\Common\InstalledPackages" %nul2% | find /i "-%%C-" %nul% && (
|
||||||
|
if defined _oIds (set _oIds=!_oIds! %%D) else (set _oIds=%%D)
|
||||||
)
|
)
|
||||||
reg query "%2\Registration\{%%B}" /v ProductCode %nul2% | find /i "-!prodId!-" %nul% && (
|
|
||||||
reg query "%2\Common\InstalledPackages" %nul2% | find /i "-!prodId!-" %nul% && (
|
|
||||||
if defined _oIds (set _oIds=!_oIds! %%C) else (set _oIds=%%C)
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -3518,6 +3622,7 @@ ea509e87-07a1-4a45-9edc-eba5a39f36af_D6QFG-VBYP2-XQHM7-J97RH-VV%f%RCK__14_SmallB
|
|||||||
2d0882e7-a4e7-423b-8ccc-70d91e0158b1_HVHB3-C6FV7-KQX9W-YQG79-CR%f%Y7T__14_WordVL
|
2d0882e7-a4e7-423b-8ccc-70d91e0158b1_HVHB3-C6FV7-KQX9W-YQG79-CR%f%Y7T__14_WordVL
|
||||||
:: Office 2013
|
:: Office 2013
|
||||||
6ee7622c-18d8-4005-9fb7-92db644a279b_NG2JY-H4JBT-HQXYP-78QH9-4J%f%M2D__15_AccessVolume_-AccessRetail-
|
6ee7622c-18d8-4005-9fb7-92db644a279b_NG2JY-H4JBT-HQXYP-78QH9-4J%f%M2D__15_AccessVolume_-AccessRetail-
|
||||||
|
259de5be-492b-44b3-9d78-9645f848f7b0_X3XNB-HJB7K-66THH-8DWQ3-XH%f%GJP__15_AccessRuntimeRetail_[Bypass]
|
||||||
f7461d52-7c2b-43b2-8744-ea958e0bd09a_VGPNG-Y7HQW-9RHP7-TKPV3-BG%f%7GB__15_ExcelVolume_-ExcelRetail-
|
f7461d52-7c2b-43b2-8744-ea958e0bd09a_VGPNG-Y7HQW-9RHP7-TKPV3-BG%f%7GB__15_ExcelVolume_-ExcelRetail-
|
||||||
fb4875ec-0c6b-450f-b82b-ab57d8d1677f_H7R7V-WPNXQ-WCYYC-76BGV-VT%f%7GH__15_GrooveVolume_-GrooveRetail-
|
fb4875ec-0c6b-450f-b82b-ab57d8d1677f_H7R7V-WPNXQ-WCYYC-76BGV-VT%f%7GH__15_GrooveVolume_-GrooveRetail-
|
||||||
a30b8040-d68a-423f-b0b5-9ce292ea5a8f_DKT8B-N7VXH-D963P-Q4PHY-F8%f%894__15_InfoPathVolume_-InfoPathRetail-
|
a30b8040-d68a-423f-b0b5-9ce292ea5a8f_DKT8B-N7VXH-D963P-Q4PHY-F8%f%894__15_InfoPathVolume_-InfoPathRetail-
|
||||||
@ -3535,7 +3640,7 @@ efe1f3e6-aea2-4144-a208-32aa872b6545_TGN6P-8MMBC-37P2F-XHXXK-P3%f%4VW__15_OneNot
|
|||||||
b322da9c-a2e2-4058-9e4e-f59a6970bd69_YC7DK-G2NP3-2QQC3-J6H88-GV%f%GXT__15_ProPlusVolume_-ProPlusRetail-ProfessionalPipcRetail-ProfessionalRetail-
|
b322da9c-a2e2-4058-9e4e-f59a6970bd69_YC7DK-G2NP3-2QQC3-J6H88-GV%f%GXT__15_ProPlusVolume_-ProPlusRetail-ProfessionalPipcRetail-ProfessionalRetail-
|
||||||
00c79ff1-6850-443d-bf61-71cde0de305f_PN2WF-29XG2-T9HJ7-JQPJR-FC%f%XK4__15_PublisherVolume_-PublisherRetail-
|
00c79ff1-6850-443d-bf61-71cde0de305f_PN2WF-29XG2-T9HJ7-JQPJR-FC%f%XK4__15_PublisherVolume_-PublisherRetail-
|
||||||
ba3e3833-6a7e-445a-89d0-7802a9a68588_3NY6J-WHT3F-47BDV-JHF36-23%f%43W__15_SPDRetail_[PrepidBypass]
|
ba3e3833-6a7e-445a-89d0-7802a9a68588_3NY6J-WHT3F-47BDV-JHF36-23%f%43W__15_SPDRetail_[PrepidBypass]
|
||||||
b13afb38-cd79-4ae5-9f7f-eed058d750ca_KBKQT-2NMXY-JJWGP-M62JB-92%f%CD4__15_StandardVolume_-StandardRetail-HomeBusinessPipcRetail-HomeBusinessRetail-HomeStudentRetail-PersonalPipcRetail-PersonalRetail-
|
b13afb38-cd79-4ae5-9f7f-eed058d750ca_KBKQT-2NMXY-JJWGP-M62JB-92%f%CD4__15_StandardVolume_-StandardRetail-HomeBusinessPipcRetail-HomeBusinessRetail-HomeStudentARMRetail-HomeStudentPlusARMRetail-HomeStudentRetail-PersonalPipcRetail-PersonalRetail-
|
||||||
e13ac10e-75d0-4aff-a0cd-764982cf541c_C2FG9-N6J68-H8BTJ-BW3QX-RM%f%3B3__15_VisioProVolume_-VisioProRetail-
|
e13ac10e-75d0-4aff-a0cd-764982cf541c_C2FG9-N6J68-H8BTJ-BW3QX-RM%f%3B3__15_VisioProVolume_-VisioProRetail-
|
||||||
ac4efaf0-f81f-4f61-bdf7-ea32b02ab117_J484Y-4NKBF-W2HMG-DBMJC-PG%f%WR7__15_VisioStdVolume_-VisioStdRetail-
|
ac4efaf0-f81f-4f61-bdf7-ea32b02ab117_J484Y-4NKBF-W2HMG-DBMJC-PG%f%WR7__15_VisioStdVolume_-VisioStdRetail-
|
||||||
d9f5b1c6-5386-495a-88f9-9ad6b41ac9b3_6Q7VD-NX8JD-WJ2VH-88V73-4G%f%BJ7__15_WordVolume_-WordRetail-
|
d9f5b1c6-5386-495a-88f9-9ad6b41ac9b3_6Q7VD-NX8JD-WJ2VH-88V73-4G%f%BJ7__15_WordVolume_-WordRetail-
|
||||||
@ -3558,7 +3663,7 @@ d450596f-894d-49e0-966a-fd39ed4c4c64_XQNVK-8JYDB-WJ9W3-YJ8YR-WF%f%G99__16_ProPlu
|
|||||||
9103f3ce-1084-447a-827e-d6097f68c895_6MDN4-WF3FV-4WH3Q-W699V-RG%f%CMY__16_SkypeServiceBypassRetail_[PrepidBypass]
|
9103f3ce-1084-447a-827e-d6097f68c895_6MDN4-WF3FV-4WH3Q-W699V-RG%f%CMY__16_SkypeServiceBypassRetail_[PrepidBypass]
|
||||||
971cd368-f2e1-49c1-aedd-330909ce18b6_4N4D8-3J7Y3-YYW7C-73HD2-V8%f%RHY__16_SkypeforBusinessEntryRetail_[PrepidBypass]
|
971cd368-f2e1-49c1-aedd-330909ce18b6_4N4D8-3J7Y3-YYW7C-73HD2-V8%f%RHY__16_SkypeforBusinessEntryRetail_[PrepidBypass]
|
||||||
83e04ee1-fa8d-436d-8994-d31a862cab77_869NQ-FJ69K-466HW-QYCP2-DD%f%BV6__16_SkypeforBusinessVolume_-SkypeforBusinessRetail-
|
83e04ee1-fa8d-436d-8994-d31a862cab77_869NQ-FJ69K-466HW-QYCP2-DD%f%BV6__16_SkypeforBusinessVolume_-SkypeforBusinessRetail-
|
||||||
dedfa23d-6ed1-45a6-85dc-63cae0546de6_JNRGM-WHDWX-FJJG3-K47QV-DR%f%TFM__16_StandardVolume_-StandardRetail-HomeBusinessPipcRetail-HomeBusinessRetail-HomeStudentRetail-HomeStudentVNextRetail-PersonalPipcRetail-PersonalRetail-
|
dedfa23d-6ed1-45a6-85dc-63cae0546de6_JNRGM-WHDWX-FJJG3-K47QV-DR%f%TFM__16_StandardVolume_-StandardRetail-HomeBusinessPipcRetail-HomeBusinessRetail-HomeStudentARMRetail-HomeStudentPlusARMRetail-HomeStudentRetail-HomeStudentVNextRetail-PersonalPipcRetail-PersonalRetail-
|
||||||
6bf301c1-b94a-43e9-ba31-d494598c47fb_PD3PC-RHNGV-FXJ29-8JK7D-RJ%f%RJK__16_VisioProVolume_-VisioProRetail-
|
6bf301c1-b94a-43e9-ba31-d494598c47fb_PD3PC-RHNGV-FXJ29-8JK7D-RJ%f%RJK__16_VisioProVolume_-VisioProRetail-
|
||||||
b234abe3-0857-4f9c-b05a-4dc314f85557_69WXN-MBYV6-22PQG-3WGHK-RM%f%6XC__16_VisioProXVolume
|
b234abe3-0857-4f9c-b05a-4dc314f85557_69WXN-MBYV6-22PQG-3WGHK-RM%f%6XC__16_VisioProXVolume
|
||||||
aa2a7821-1827-4c2c-8f1d-4513a34dda97_7WHWN-4T7MP-G96JF-G33KR-W8%f%GF4__16_VisioStdVolume_-VisioStdRetail-
|
aa2a7821-1827-4c2c-8f1d-4513a34dda97_7WHWN-4T7MP-G96JF-G33KR-W8%f%GF4__16_VisioStdVolume_-VisioStdRetail-
|
||||||
@ -3576,14 +3681,17 @@ c8f8a301-19f5-4132-96ce-2de9d4adbd33_7HD7K-N4PVK-BHBCQ-YWQRW-XW%f%4VK__16_Outloo
|
|||||||
9d3e4cca-e172-46f1-a2f4-1d2107051444_G2KWX-3NW6P-PY93R-JXK2T-C9%f%Y9V__16_Publisher2019Volume_-Publisher2019Retail-
|
9d3e4cca-e172-46f1-a2f4-1d2107051444_G2KWX-3NW6P-PY93R-JXK2T-C9%f%Y9V__16_Publisher2019Volume_-Publisher2019Retail-
|
||||||
734c6c6e-b0ba-4298-a891-671772b2bd1b_NCJ33-JHBBY-HTK98-MYCV8-HM%f%KHJ__16_SkypeforBusiness2019Volume_-SkypeforBusiness2019Retail-
|
734c6c6e-b0ba-4298-a891-671772b2bd1b_NCJ33-JHBBY-HTK98-MYCV8-HM%f%KHJ__16_SkypeforBusiness2019Volume_-SkypeforBusiness2019Retail-
|
||||||
f88cfdec-94ce-4463-a969-037be92bc0e7_N9722-BV9H6-WTJTT-FPB93-97%f%8MK__16_SkypeforBusinessEntry2019Retail_[PrepidBypass]
|
f88cfdec-94ce-4463-a969-037be92bc0e7_N9722-BV9H6-WTJTT-FPB93-97%f%8MK__16_SkypeforBusinessEntry2019Retail_[PrepidBypass]
|
||||||
6912a74b-a5fb-401a-bfdb-2e3ab46f4b02_6NWWJ-YQWMR-QKGCB-6TMB3-9D%f%9HK__16_Standard2019Volume_-Standard2019Retail-HomeBusiness2019Retail-HomeStudent2019Retail-Personal2019Retail-
|
6912a74b-a5fb-401a-bfdb-2e3ab46f4b02_6NWWJ-YQWMR-QKGCB-6TMB3-9D%f%9HK__16_Standard2019Volume_-Standard2019Retail-HomeBusiness2019Retail-HomeStudentARM2019Retail-HomeStudentPlusARM2019Retail-HomeStudent2019Retail-Personal2019Retail-
|
||||||
5b5cf08f-b81a-431d-b080-3450d8620565_9BGNQ-K37YR-RQHF2-38RQ3-7V%f%CBB__16_VisioPro2019Volume_-VisioPro2019Retail-
|
5b5cf08f-b81a-431d-b080-3450d8620565_9BGNQ-K37YR-RQHF2-38RQ3-7V%f%CBB__16_VisioPro2019Volume_-VisioPro2019Retail-
|
||||||
e06d7df3-aad0-419d-8dfb-0ac37e2bdf39_7TQNQ-K3YQQ-3PFH7-CCPPM-X4%f%VQ2__16_VisioStd2019Volume_-VisioStd2019Retail-
|
e06d7df3-aad0-419d-8dfb-0ac37e2bdf39_7TQNQ-K3YQQ-3PFH7-CCPPM-X4%f%VQ2__16_VisioStd2019Volume_-VisioStd2019Retail-
|
||||||
059834fe-a8ea-4bff-b67b-4d006b5447d3_PBX3G-NWMT6-Q7XBW-PYJGG-WX%f%D33__16_Word2019Volume_-Word2019Retail-
|
059834fe-a8ea-4bff-b67b-4d006b5447d3_PBX3G-NWMT6-Q7XBW-PYJGG-WX%f%D33__16_Word2019Volume_-Word2019Retail-
|
||||||
:: Office 2021
|
:: Office 2021
|
||||||
|
:: OneNote2021Volume KMS license is not available
|
||||||
|
844c36cb-851c-49e7-9079-12e62a049e2a_MNX9D-PB834-VCGY2-K2RW2-2D%f%P3D__16_AccessRuntime2021Retail_[Bypass]
|
||||||
1fe429d8-3fa7-4a39-b6f0-03dded42fe14_WM8YG-YNGDD-4JHDC-PG3F4-FC%f%4T4__16_Access2021Volume_-Access2021Retail-
|
1fe429d8-3fa7-4a39-b6f0-03dded42fe14_WM8YG-YNGDD-4JHDC-PG3F4-FC%f%4T4__16_Access2021Volume_-Access2021Retail-
|
||||||
ea71effc-69f1-4925-9991-2f5e319bbc24_NWG3X-87C9K-TC7YY-BC2G7-G6%f%RVC__16_Excel2021Volume_-Excel2021Retail-
|
ea71effc-69f1-4925-9991-2f5e319bbc24_NWG3X-87C9K-TC7YY-BC2G7-G6%f%RVC__16_Excel2021Volume_-Excel2021Retail-
|
||||||
a5799e4c-f83c-4c6e-9516-dfe9b696150b_C9FM6-3N72F-HFJXB-TM3V9-T8%f%6R9__16_Outlook2021Volume_-Outlook2021Retail-
|
a5799e4c-f83c-4c6e-9516-dfe9b696150b_C9FM6-3N72F-HFJXB-TM3V9-T8%f%6R9__16_Outlook2021Volume_-Outlook2021Retail-
|
||||||
|
778ccb9a-2f6a-44e5-853c-eb22b7609643_CNM3W-V94GB-QJQHH-BDQ3J-33%f%Y8H__16_OneNoteFree2021Retail_[Bypass]
|
||||||
6e166cc3-495d-438a-89e7-d7c9e6fd4dea_TY7XF-NFRBR-KJ44C-G83KF-GX%f%27K__16_PowerPoint2021Volume_-PowerPoint2021Retail-
|
6e166cc3-495d-438a-89e7-d7c9e6fd4dea_TY7XF-NFRBR-KJ44C-G83KF-GX%f%27K__16_PowerPoint2021Volume_-PowerPoint2021Retail-
|
||||||
76881159-155c-43e0-9db7-2d70a9a3a4ca_FTNWT-C6WBT-8HMGF-K9PRX-QV%f%9H8__16_ProjectPro2021Volume_-ProjectPro2021Retail-
|
76881159-155c-43e0-9db7-2d70a9a3a4ca_FTNWT-C6WBT-8HMGF-K9PRX-QV%f%9H8__16_ProjectPro2021Volume_-ProjectPro2021Retail-
|
||||||
6dd72704-f752-4b71-94c7-11cec6bfc355_J2JDC-NJCYY-9RGQ4-YXWMH-T3%f%D4T__16_ProjectStd2021Volume_-ProjectStd2021Retail-
|
6dd72704-f752-4b71-94c7-11cec6bfc355_J2JDC-NJCYY-9RGQ4-YXWMH-T3%f%D4T__16_ProjectStd2021Volume_-ProjectStd2021Retail-
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
--------------------------------------------------------------------------------------
|
|
||||||
Activation Type Supported Product Activation Period
|
|
||||||
--------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
HWID - Windows 10-11 - Permanent
|
|
||||||
Ohook - Office - Permanent
|
|
||||||
KMS38 - Windows 10-11-Server - Till the Year 2038
|
|
||||||
Online KMS - Windows / Office - 180 Days. Lifetime With Renewal Task
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
For more details, use the respective docs section here https://massgrave.dev/
|
|
7441
MAS/Separate-Files-Version/Activators/TSforge_Activation.cmd
Normal file
7441
MAS/Separate-Files-Version/Activators/TSforge_Activation.cmd
Normal file
File diff suppressed because it is too large
Load Diff
14
MAS/Separate-Files-Version/Activators/_ReadMe.txt
Normal file
14
MAS/Separate-Files-Version/Activators/_ReadMe.txt
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
Activation Type Supported Product Activation Period
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
HWID - Windows 10-11 - Permanent
|
||||||
|
Ohook - Office - Permanent
|
||||||
|
TSforge - Windows / ESU / Office - Permanent
|
||||||
|
KMS38 - Windows 10-11-Server - Till the Year 2038
|
||||||
|
Online KMS - Windows / Office - 180 Days. Lifetime With Renewal Task
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Check the below link for more details:
|
||||||
|
https://massgrave.dev/chart
|
@ -1,4 +1,4 @@
|
|||||||
@set masver=2.9
|
@set masver=3.0
|
||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
|
|
||||||
@ -69,7 +69,7 @@ echo:
|
|||||||
echo Null service is not running, script may crash...
|
echo Null service is not running, script may crash...
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
echo Help - %mas%fix_service
|
echo Check this webpage for help - %mas%fix_service
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
ping 127.0.0.1 -n 20
|
ping 127.0.0.1 -n 20
|
||||||
@ -84,7 +84,7 @@ echo:
|
|||||||
echo Error - Script either has LF line ending issue or an empty line at the end of the script is missing.
|
echo Error - Script either has LF line ending issue or an empty line at the end of the script is missing.
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
echo Help - %mas%troubleshoot
|
echo Check this webpage for help - %mas%troubleshoot
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
ping 127.0.0.1 -n 20 >nul
|
ping 127.0.0.1 -n 20 >nul
|
||||||
@ -123,6 +123,16 @@ set "line=echo _________________________________________________________________
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
if %winbuild% EQU 1 (
|
||||||
|
%eline%
|
||||||
|
echo Failed to detect Windows build number.
|
||||||
|
echo:
|
||||||
|
setlocal EnableDelayedExpansion
|
||||||
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
if %winbuild% LSS 7600 (
|
if %winbuild% LSS 7600 (
|
||||||
%nceline%
|
%nceline%
|
||||||
echo Unsupported OS version detected [%winbuild%].
|
echo Unsupported OS version detected [%winbuild%].
|
||||||
@ -162,33 +172,6 @@ goto dk_done
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:: Check PowerShell
|
|
||||||
|
|
||||||
REM :PStest: $ExecutionContext.SessionState.LanguageMode :PStest:
|
|
||||||
|
|
||||||
cmd /c "%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':PStest:\s*';iex ($f[1])"" | find /i "FullLanguage" %nul1% || (
|
|
||||||
%eline%
|
|
||||||
cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode""
|
|
||||||
echo:
|
|
||||||
cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode"" | find /i "FullLanguage" %nul1% && (
|
|
||||||
echo Failed to run Powershell command but Powershell is working.
|
|
||||||
echo:
|
|
||||||
cmd /c "%psc% ""$av = Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct; $n = @(); foreach ($i in $av) { if ($i.displayName -notlike '*windows*') { $n += $i.displayName } }; if ($n) { Write-Host ('Installed 3rd party Antivirus might be blocking the script - ' + ($n -join ', ')) -ForegroundColor White -BackgroundColor Blue }"""
|
|
||||||
echo:
|
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
|
||||||
) || (
|
|
||||||
echo PowerShell is not working. Aborting...
|
|
||||||
echo If you have applied restrictions on Powershell then undo those changes.
|
|
||||||
echo:
|
|
||||||
set fixes=%fixes% %mas%fix_powershell
|
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%fix_powershell"
|
|
||||||
)
|
|
||||||
goto dk_done
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Elevate script as admin and pass arguments and preventing loop
|
:: Elevate script as admin and pass arguments and preventing loop
|
||||||
|
|
||||||
%nul1% fltmc || (
|
%nul1% fltmc || (
|
||||||
@ -201,6 +184,58 @@ goto dk_done
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
:: Check PowerShell
|
||||||
|
|
||||||
|
::pstst $ExecutionContext.SessionState.LanguageMode :pstst
|
||||||
|
|
||||||
|
for /f "delims=" %%a in ('cmd /c "%psc% ""if ($PSVersionTable.PSEdition -ne 'Core') {$f=[io.file]::ReadAllText('!_batp!') -split ':pstst';iex ($f[1])}""" %nul6%') do (set tstresult=%%a)
|
||||||
|
|
||||||
|
if /i not "%tstresult%"=="FullLanguage" (
|
||||||
|
%eline%
|
||||||
|
echo: %tstresult%
|
||||||
|
cmd /c "%psc% $ExecutionContext.SessionState.LanguageMode"
|
||||||
|
|
||||||
|
REM check LanguageMode
|
||||||
|
|
||||||
|
cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode"" | findstr /i "ConstrainedLanguage RestrictedLanguage NoLanguage" %nul1% && (
|
||||||
|
echo FullLanguage mode not found in PowerShell. Aborting...
|
||||||
|
echo If you have applied restrictions on Powershell then undo those changes.
|
||||||
|
echo:
|
||||||
|
set fixes=%fixes% %mas%fix_powershell
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%fix_powershell"
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
|
REM check Powershell core version
|
||||||
|
|
||||||
|
cmd /c "%psc% "$PSVersionTable.PSEdition"" | find /i "Core" %nul1% && (
|
||||||
|
echo Windows Powershell is needed for MAS but it seems to be replaced with Powershell core. Aborting...
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
|
REM check for Mal-ware that may cause issues with Powershell
|
||||||
|
|
||||||
|
for /r "%ProgramFiles%\" %%f in (secureboot.exe) do if exist "%%f" (
|
||||||
|
echo "%%f"
|
||||||
|
echo Mal%blank%ware found, PowerShell is not working properly.
|
||||||
|
echo:
|
||||||
|
set fixes=%fixes% %mas%remove_mal%w%ware
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%remove_mal%w%ware"
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
|
REM check antivirus and other errors
|
||||||
|
|
||||||
|
echo PowerShell is not working properly. Aborting...
|
||||||
|
cmd /c "%psc% ""$av = Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct; $n = @(); foreach ($i in $av) { if ($i.displayName -notlike '*windows*') { $n += $i.displayName } }; if ($n) { Write-Host ('Installed 3rd party Antivirus might be blocking the script - ' + ($n -join ', ')) -ForegroundColor White -BackgroundColor Blue }"""
|
||||||
|
echo:
|
||||||
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
|
::========================================================================================================================================
|
||||||
|
|
||||||
:: Disable QuickEdit and launch from conhost.exe to avoid Terminal app
|
:: Disable QuickEdit and launch from conhost.exe to avoid Terminal app
|
||||||
|
|
||||||
if %winbuild% GEQ 17763 (
|
if %winbuild% GEQ 17763 (
|
||||||
@ -211,34 +246,33 @@ set terminal=
|
|||||||
|
|
||||||
:: Check if script is running in Terminal app
|
:: Check if script is running in Terminal app
|
||||||
|
|
||||||
set r1=$TB = [AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2, $False).DefineType(0);
|
|
||||||
set r2=%r1% [void]$TB.DefinePInvokeMethod('GetConsoleWindow', 'kernel32.dll', 22, 1, [IntPtr], @(), 1, 3).SetImplementationFlags(128);
|
|
||||||
set r3=%r2% [void]$TB.DefinePInvokeMethod('SendMessageW', 'user32.dll', 22, 1, [IntPtr], @([IntPtr], [UInt32], [IntPtr], [IntPtr]), 1, 3).SetImplementationFlags(128);
|
|
||||||
set d1=%r3% $hIcon = $TB.CreateType(); $hWnd = $hIcon::GetConsoleWindow();
|
|
||||||
set d2=%d1% echo $($hIcon::SendMessageW($hWnd, 127, 0, 0) -ne [IntPtr]::Zero);
|
|
||||||
|
|
||||||
if defined terminal (
|
if defined terminal (
|
||||||
%psc% "%d2%" %nul2% | find /i "True" %nul1% && set terminal=
|
set lines=0
|
||||||
|
for /f "skip=2 tokens=2 delims=: " %%A in ('mode con') do if "!lines!"=="0" set lines=%%A
|
||||||
|
if !lines! GEQ 100 set terminal=
|
||||||
)
|
)
|
||||||
|
|
||||||
if defined ps32onArm goto :skipQE
|
|
||||||
if %_unattended%==1 goto :skipQE
|
if %_unattended%==1 goto :skipQE
|
||||||
for %%# in (%_args%) do (if /i "%%#"=="-qedit" goto :skipQE)
|
for %%# in (%_args%) do (if /i "%%#"=="-qedit" goto :skipQE)
|
||||||
|
|
||||||
|
:: Relaunch to disable QuickEdit in the current session and use conhost.exe instead of the Terminal app
|
||||||
|
:: This code disables QuickEdit for the current cmd.exe session without making permanent registry changes
|
||||||
|
:: It is included because clicking on the script window can pause execution, causing confusion that the script has stopped due to an error
|
||||||
|
|
||||||
|
set resetQE=1
|
||||||
|
reg query HKCU\Console /v QuickEdit %nul2% | find /i "0x0" %nul1% && set resetQE=0
|
||||||
|
reg add HKCU\Console /v QuickEdit /t REG_DWORD /d 0 /f %nul1%
|
||||||
|
|
||||||
if defined terminal (
|
if defined terminal (
|
||||||
set "launchcmd=start conhost.exe %psc%"
|
start conhost.exe "!_batf!" %_args% -qedit
|
||||||
) else (
|
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
|
||||||
set "launchcmd=%psc%"
|
exit /b
|
||||||
|
) else if %resetQE% EQU 1 (
|
||||||
|
start cmd.exe /c ""!_batf!" %_args% -qedit"
|
||||||
|
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
|
||||||
|
exit /b
|
||||||
)
|
)
|
||||||
|
|
||||||
:: Disable QuickEdit in current session
|
|
||||||
|
|
||||||
set "d1=$t=[AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2, $False).DefineType(0);"
|
|
||||||
set "d2=$t.DefinePInvokeMethod('GetStdHandle', 'kernel32.dll', 22, 1, [IntPtr], @([Int32]), 1, 3).SetImplementationFlags(128);"
|
|
||||||
set "d3=$t.DefinePInvokeMethod('SetConsoleMode', 'kernel32.dll', 22, 1, [Boolean], @([IntPtr], [Int32]), 1, 3).SetImplementationFlags(128);"
|
|
||||||
set "d4=$k=$t.CreateType(); $b=$k::SetConsoleMode($k::GetStdHandle(-10), 0x0080);"
|
|
||||||
|
|
||||||
%launchcmd% "%d1% %d2% %d3% %d4% & cmd.exe '/c' '!_PSarg! -qedit'" && (exit /b) || (set terminal=1)
|
|
||||||
:skipQE
|
:skipQE
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
@ -247,9 +281,19 @@ set "d4=$k=$t.CreateType(); $b=$k::SetConsoleMode($k::GetStdHandle(-10), 0x0080)
|
|||||||
|
|
||||||
set -=
|
set -=
|
||||||
set old=
|
set old=
|
||||||
|
set pingp=
|
||||||
|
set upver=%masver:.=%
|
||||||
|
|
||||||
for /f "delims=[] tokens=2" %%# in ('ping -4 -n 1 updatecheck.mass%-%grave.dev') do (
|
for %%A in (
|
||||||
if not "%%#"=="" (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.69.%masver%" %nul1% || set old=1))
|
activ%-%ated.win
|
||||||
|
mass%-%grave.dev
|
||||||
|
) do if not defined pingp (
|
||||||
|
for /f "delims=[] tokens=2" %%B in ('ping -n 1 %%A') do (
|
||||||
|
if not "%%B"=="" (set old=1& set pingp=1)
|
||||||
|
for /f "delims=[] tokens=2" %%C in ('ping -n 1 updatecheck%upver%.%%A') do (
|
||||||
|
if not "%%C"=="" set old=
|
||||||
|
)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
if defined old (
|
if defined old (
|
||||||
@ -265,7 +309,7 @@ echo:
|
|||||||
call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :"
|
call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :"
|
||||||
choice /C:10 /N
|
choice /C:10 /N
|
||||||
if !errorlevel!==2 rem
|
if !errorlevel!==2 rem
|
||||||
if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b)
|
if !errorlevel!==1 (start %mas% & exit /b)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -284,7 +328,7 @@ if not exist %SysPath%\sppsvc.exe (
|
|||||||
echo [%SysPath%\sppsvc.exe] file is missing. Aborting...
|
echo [%SysPath%\sppsvc.exe] file is missing. Aborting...
|
||||||
echo:
|
echo:
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
goto dk_done
|
goto dk_done
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -322,7 +366,7 @@ if %osedition%==0 (
|
|||||||
echo Failed to detect OS Edition. Aborting...
|
echo Failed to detect OS Edition. Aborting...
|
||||||
echo:
|
echo:
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
goto dk_done
|
goto dk_done
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -395,7 +439,7 @@ echo which is not officially supported on your Windows build version %winbuild%.
|
|||||||
echo Aborting...
|
echo Aborting...
|
||||||
echo:
|
echo:
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
goto dk_done
|
goto dk_done
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -409,7 +453,7 @@ echo Unsupported Office %verchk% is installed on your Windows build version %win
|
|||||||
echo Aborting...
|
echo Aborting...
|
||||||
echo:
|
echo:
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
goto dk_done
|
goto dk_done
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -515,7 +559,7 @@ if not exist %SystemRoot%\Temp\%list%.txt (
|
|||||||
echo Failed to generate available editions list.
|
echo Failed to generate available editions list.
|
||||||
echo:
|
echo:
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
goto :oe_goback
|
goto :oe_goback
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -580,7 +624,7 @@ if not exist %SystemRoot%\Temp\getAppIds.txt (
|
|||||||
echo Failed to generate available apps list.
|
echo Failed to generate available apps list.
|
||||||
echo:
|
echo:
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
goto :oe_goback
|
goto :oe_goback
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -762,7 +806,7 @@ if %errorcode% EQU 0 (
|
|||||||
call :dk_color %Gray% "Now run the Office activation option from the main menu."
|
call :dk_color %Gray% "Now run the Office activation option from the main menu."
|
||||||
) else (
|
) else (
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
)
|
)
|
||||||
|
|
||||||
call :oe_tempcleanup
|
call :oe_tempcleanup
|
||||||
@ -905,7 +949,7 @@ echo %c2rcommand%
|
|||||||
if %errorlevel% NEQ 0 (
|
if %errorlevel% NEQ 0 (
|
||||||
echo:
|
echo:
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
)
|
)
|
||||||
|
|
||||||
goto :oe_goback
|
goto :oe_goback
|
||||||
@ -1053,7 +1097,7 @@ echo:
|
|||||||
echo %updcommand%
|
echo %updcommand%
|
||||||
%updcommand%
|
%updcommand%
|
||||||
echo:
|
echo:
|
||||||
echo Help - %mas%troubleshoot
|
echo Check this webpage for help - %mas%troubleshoot
|
||||||
goto :oe_goback
|
goto :oe_goback
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
@ -1308,7 +1352,7 @@ if ($appIdsList.Count -gt 0) {
|
|||||||
|
|
||||||
:dk_setvar
|
:dk_setvar
|
||||||
|
|
||||||
set psc=powershell.exe
|
set psc=powershell.exe -nop -c
|
||||||
set winbuild=1
|
set winbuild=1
|
||||||
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
|
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
|
||||||
|
|
||||||
@ -1377,7 +1421,7 @@ echo sc start sppsvc [Error Code: %spperror%]
|
|||||||
)
|
)
|
||||||
|
|
||||||
echo:
|
echo:
|
||||||
%psc% "$job = Start-Job { (Get-WmiObject -Query 'SELECT * FROM %sps%').Version }; if (-not (Wait-Job $job -Timeout 30)) {write-host 'sppsvc is not working correctly. Help - %mas%troubleshoot'}"
|
%psc% "$job = Start-Job { (Get-WmiObject -Query 'SELECT * FROM %sps%').Version }; if (-not (Wait-Job $job -Timeout 30)) {write-host 'sppsvc is not working correctly. Check this webpage for help - %mas%troubleshoot'}"
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
:: Common lines used in PowerShell reflection code
|
:: Common lines used in PowerShell reflection code
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
@set masver=2.9
|
@set masver=3.0
|
||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
|
|
||||||
@ -74,7 +74,7 @@ echo:
|
|||||||
echo Null service is not running, script may crash...
|
echo Null service is not running, script may crash...
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
echo Help - %mas%fix_service
|
echo Check this webpage for help - %mas%fix_service
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
ping 127.0.0.1 -n 20
|
ping 127.0.0.1 -n 20
|
||||||
@ -89,7 +89,7 @@ echo:
|
|||||||
echo Error - Script either has LF line ending issue or an empty line at the end of the script is missing.
|
echo Error - Script either has LF line ending issue or an empty line at the end of the script is missing.
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
echo Help - %mas%troubleshoot
|
echo Check this webpage for help - %mas%troubleshoot
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
ping 127.0.0.1 -n 20 >nul
|
ping 127.0.0.1 -n 20 >nul
|
||||||
@ -128,6 +128,16 @@ set "line=echo _________________________________________________________________
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
if %winbuild% EQU 1 (
|
||||||
|
%eline%
|
||||||
|
echo Failed to detect Windows build number.
|
||||||
|
echo:
|
||||||
|
setlocal EnableDelayedExpansion
|
||||||
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
if %winbuild% LSS 7600 (
|
if %winbuild% LSS 7600 (
|
||||||
%nceline%
|
%nceline%
|
||||||
echo Unsupported OS version detected [%winbuild%].
|
echo Unsupported OS version detected [%winbuild%].
|
||||||
@ -167,33 +177,6 @@ goto dk_done
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:: Check PowerShell
|
|
||||||
|
|
||||||
REM :PStest: $ExecutionContext.SessionState.LanguageMode :PStest:
|
|
||||||
|
|
||||||
cmd /c "%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':PStest:\s*';iex ($f[1])"" | find /i "FullLanguage" %nul1% || (
|
|
||||||
%eline%
|
|
||||||
cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode""
|
|
||||||
echo:
|
|
||||||
cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode"" | find /i "FullLanguage" %nul1% && (
|
|
||||||
echo Failed to run Powershell command but Powershell is working.
|
|
||||||
echo:
|
|
||||||
cmd /c "%psc% ""$av = Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct; $n = @(); foreach ($i in $av) { if ($i.displayName -notlike '*windows*') { $n += $i.displayName } }; if ($n) { Write-Host ('Installed 3rd party Antivirus might be blocking the script - ' + ($n -join ', ')) -ForegroundColor White -BackgroundColor Blue }"""
|
|
||||||
echo:
|
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
|
||||||
) || (
|
|
||||||
echo PowerShell is not working. Aborting...
|
|
||||||
echo If you have applied restrictions on Powershell then undo those changes.
|
|
||||||
echo:
|
|
||||||
set fixes=%fixes% %mas%fix_powershell
|
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%fix_powershell"
|
|
||||||
)
|
|
||||||
goto dk_done
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Elevate script as admin and pass arguments and preventing loop
|
:: Elevate script as admin and pass arguments and preventing loop
|
||||||
|
|
||||||
%nul1% fltmc || (
|
%nul1% fltmc || (
|
||||||
@ -206,6 +189,58 @@ goto dk_done
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
:: Check PowerShell
|
||||||
|
|
||||||
|
::pstst $ExecutionContext.SessionState.LanguageMode :pstst
|
||||||
|
|
||||||
|
for /f "delims=" %%a in ('cmd /c "%psc% ""if ($PSVersionTable.PSEdition -ne 'Core') {$f=[io.file]::ReadAllText('!_batp!') -split ':pstst';iex ($f[1])}""" %nul6%') do (set tstresult=%%a)
|
||||||
|
|
||||||
|
if /i not "%tstresult%"=="FullLanguage" (
|
||||||
|
%eline%
|
||||||
|
echo: %tstresult%
|
||||||
|
cmd /c "%psc% $ExecutionContext.SessionState.LanguageMode"
|
||||||
|
|
||||||
|
REM check LanguageMode
|
||||||
|
|
||||||
|
cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode"" | findstr /i "ConstrainedLanguage RestrictedLanguage NoLanguage" %nul1% && (
|
||||||
|
echo FullLanguage mode not found in PowerShell. Aborting...
|
||||||
|
echo If you have applied restrictions on Powershell then undo those changes.
|
||||||
|
echo:
|
||||||
|
set fixes=%fixes% %mas%fix_powershell
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%fix_powershell"
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
|
REM check Powershell core version
|
||||||
|
|
||||||
|
cmd /c "%psc% "$PSVersionTable.PSEdition"" | find /i "Core" %nul1% && (
|
||||||
|
echo Windows Powershell is needed for MAS but it seems to be replaced with Powershell core. Aborting...
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
|
REM check for Mal-ware that may cause issues with Powershell
|
||||||
|
|
||||||
|
for /r "%ProgramFiles%\" %%f in (secureboot.exe) do if exist "%%f" (
|
||||||
|
echo "%%f"
|
||||||
|
echo Mal%blank%ware found, PowerShell is not working properly.
|
||||||
|
echo:
|
||||||
|
set fixes=%fixes% %mas%remove_mal%w%ware
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%remove_mal%w%ware"
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
|
REM check antivirus and other errors
|
||||||
|
|
||||||
|
echo PowerShell is not working properly. Aborting...
|
||||||
|
cmd /c "%psc% ""$av = Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct; $n = @(); foreach ($i in $av) { if ($i.displayName -notlike '*windows*') { $n += $i.displayName } }; if ($n) { Write-Host ('Installed 3rd party Antivirus might be blocking the script - ' + ($n -join ', ')) -ForegroundColor White -BackgroundColor Blue }"""
|
||||||
|
echo:
|
||||||
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
|
::========================================================================================================================================
|
||||||
|
|
||||||
:: Disable QuickEdit and launch from conhost.exe to avoid Terminal app
|
:: Disable QuickEdit and launch from conhost.exe to avoid Terminal app
|
||||||
|
|
||||||
if %winbuild% GEQ 17763 (
|
if %winbuild% GEQ 17763 (
|
||||||
@ -216,34 +251,33 @@ set terminal=
|
|||||||
|
|
||||||
:: Check if script is running in Terminal app
|
:: Check if script is running in Terminal app
|
||||||
|
|
||||||
set r1=$TB = [AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2, $False).DefineType(0);
|
|
||||||
set r2=%r1% [void]$TB.DefinePInvokeMethod('GetConsoleWindow', 'kernel32.dll', 22, 1, [IntPtr], @(), 1, 3).SetImplementationFlags(128);
|
|
||||||
set r3=%r2% [void]$TB.DefinePInvokeMethod('SendMessageW', 'user32.dll', 22, 1, [IntPtr], @([IntPtr], [UInt32], [IntPtr], [IntPtr]), 1, 3).SetImplementationFlags(128);
|
|
||||||
set d1=%r3% $hIcon = $TB.CreateType(); $hWnd = $hIcon::GetConsoleWindow();
|
|
||||||
set d2=%d1% echo $($hIcon::SendMessageW($hWnd, 127, 0, 0) -ne [IntPtr]::Zero);
|
|
||||||
|
|
||||||
if defined terminal (
|
if defined terminal (
|
||||||
%psc% "%d2%" %nul2% | find /i "True" %nul1% && set terminal=
|
set lines=0
|
||||||
|
for /f "skip=2 tokens=2 delims=: " %%A in ('mode con') do if "!lines!"=="0" set lines=%%A
|
||||||
|
if !lines! GEQ 100 set terminal=
|
||||||
)
|
)
|
||||||
|
|
||||||
if defined ps32onArm goto :skipQE
|
|
||||||
if %_unattended%==1 goto :skipQE
|
if %_unattended%==1 goto :skipQE
|
||||||
for %%# in (%_args%) do (if /i "%%#"=="-qedit" goto :skipQE)
|
for %%# in (%_args%) do (if /i "%%#"=="-qedit" goto :skipQE)
|
||||||
|
|
||||||
|
:: Relaunch to disable QuickEdit in the current session and use conhost.exe instead of the Terminal app
|
||||||
|
:: This code disables QuickEdit for the current cmd.exe session without making permanent registry changes
|
||||||
|
:: It is included because clicking on the script window can pause execution, causing confusion that the script has stopped due to an error
|
||||||
|
|
||||||
|
set resetQE=1
|
||||||
|
reg query HKCU\Console /v QuickEdit %nul2% | find /i "0x0" %nul1% && set resetQE=0
|
||||||
|
reg add HKCU\Console /v QuickEdit /t REG_DWORD /d 0 /f %nul1%
|
||||||
|
|
||||||
if defined terminal (
|
if defined terminal (
|
||||||
set "launchcmd=start conhost.exe %psc%"
|
start conhost.exe "!_batf!" %_args% -qedit
|
||||||
) else (
|
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
|
||||||
set "launchcmd=%psc%"
|
exit /b
|
||||||
|
) else if %resetQE% EQU 1 (
|
||||||
|
start cmd.exe /c ""!_batf!" %_args% -qedit"
|
||||||
|
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
|
||||||
|
exit /b
|
||||||
)
|
)
|
||||||
|
|
||||||
:: Disable QuickEdit in current session
|
|
||||||
|
|
||||||
set "d1=$t=[AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2, $False).DefineType(0);"
|
|
||||||
set "d2=$t.DefinePInvokeMethod('GetStdHandle', 'kernel32.dll', 22, 1, [IntPtr], @([Int32]), 1, 3).SetImplementationFlags(128);"
|
|
||||||
set "d3=$t.DefinePInvokeMethod('SetConsoleMode', 'kernel32.dll', 22, 1, [Boolean], @([IntPtr], [Int32]), 1, 3).SetImplementationFlags(128);"
|
|
||||||
set "d4=$k=$t.CreateType(); $b=$k::SetConsoleMode($k::GetStdHandle(-10), 0x0080);"
|
|
||||||
|
|
||||||
%launchcmd% "%d1% %d2% %d3% %d4% & cmd.exe '/c' '!_PSarg! -qedit'" && (exit /b) || (set terminal=1)
|
|
||||||
:skipQE
|
:skipQE
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
@ -252,9 +286,19 @@ set "d4=$k=$t.CreateType(); $b=$k::SetConsoleMode($k::GetStdHandle(-10), 0x0080)
|
|||||||
|
|
||||||
set -=
|
set -=
|
||||||
set old=
|
set old=
|
||||||
|
set pingp=
|
||||||
|
set upver=%masver:.=%
|
||||||
|
|
||||||
for /f "delims=[] tokens=2" %%# in ('ping -4 -n 1 updatecheck.mass%-%grave.dev') do (
|
for %%A in (
|
||||||
if not "%%#"=="" (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.69.%masver%" %nul1% || set old=1))
|
activ%-%ated.win
|
||||||
|
mass%-%grave.dev
|
||||||
|
) do if not defined pingp (
|
||||||
|
for /f "delims=[] tokens=2" %%B in ('ping -n 1 %%A') do (
|
||||||
|
if not "%%B"=="" (set old=1& set pingp=1)
|
||||||
|
for /f "delims=[] tokens=2" %%C in ('ping -n 1 updatecheck%upver%.%%A') do (
|
||||||
|
if not "%%C"=="" set old=
|
||||||
|
)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
if defined old (
|
if defined old (
|
||||||
@ -270,7 +314,7 @@ echo:
|
|||||||
call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :"
|
call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :"
|
||||||
choice /C:10 /N
|
choice /C:10 /N
|
||||||
if !errorlevel!==2 rem
|
if !errorlevel!==2 rem
|
||||||
if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b)
|
if !errorlevel!==1 (start %mas% & exit /b)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -311,7 +355,7 @@ if not exist %SysPath%\%%# (
|
|||||||
echo [%SysPath%\%%#] file is missing, aborting...
|
echo [%SysPath%\%%#] file is missing, aborting...
|
||||||
echo:
|
echo:
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
goto dk_done
|
goto dk_done
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -344,7 +388,7 @@ if not defined allapps (
|
|||||||
echo Failed to find activation IDs. Aborting...
|
echo Failed to find activation IDs. Aborting...
|
||||||
echo:
|
echo:
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
goto dk_done
|
goto dk_done
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -367,7 +411,7 @@ if not defined osedition (
|
|||||||
echo Failed to detect OS edition, aborting...
|
echo Failed to detect OS edition, aborting...
|
||||||
echo:
|
echo:
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
goto dk_done
|
goto dk_done
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -393,7 +437,7 @@ if %winbuild% GEQ 10240 for /f "tokens=4" %%a in ('dism /online /english /Get-Ta
|
|||||||
if %winbuild% LSS 10240 for /f "tokens=4" %%a in ('%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':cbsxml\:.*';& ([ScriptBlock]::Create($f[1])) -GetTargetEditions;" ^| findstr /i /c:"Target Edition : "') do (if defined _ptarget (set "_ptarget= !_ptarget! %%a ") else (set "_ptarget= %%a "))
|
if %winbuild% LSS 10240 for /f "tokens=4" %%a in ('%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':cbsxml\:.*';& ([ScriptBlock]::Create($f[1])) -GetTargetEditions;" ^| findstr /i /c:"Target Edition : "') do (if defined _ptarget (set "_ptarget= !_ptarget! %%a ") else (set "_ptarget= %%a "))
|
||||||
|
|
||||||
if %winbuild% GEQ 10240 if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" (
|
if %winbuild% GEQ 10240 if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" (
|
||||||
call :ced_edilist
|
if %winbuild% GEQ 17063 call :ced_edilist
|
||||||
if /i "%osedition:~0,4%"=="Core" set _pro=Professional
|
if /i "%osedition:~0,4%"=="Core" set _pro=Professional
|
||||||
if /i "%osedition%"=="CoreN" set _pro=ProfessionalN
|
if /i "%osedition%"=="CoreN" set _pro=ProfessionalN
|
||||||
set "_dtarget= %_dtarget% !_wtarget! !_pro! "
|
set "_dtarget= %_dtarget% !_wtarget! !_pro! "
|
||||||
@ -506,7 +550,7 @@ set _dismapi=0
|
|||||||
|
|
||||||
:: Check if DISM API or slmgr.vbs is required for edition upgrade
|
:: Check if DISM API or slmgr.vbs is required for edition upgrade
|
||||||
|
|
||||||
if not exist "%SysPath%\spp\tokens\skus\%targetedition%\" (
|
if not exist "%SysPath%\spp\tokens\skus\%targetedition%\%targetedition%*.xrm-ms" (
|
||||||
echo %_wtarget% | find /i " %targetedition% " || (
|
echo %_wtarget% | find /i " %targetedition% " || (
|
||||||
set _dismapi=1
|
set _dismapi=1
|
||||||
)
|
)
|
||||||
@ -529,7 +573,7 @@ echo [%targetedition% ^| %winbuild%]
|
|||||||
echo Failed to get product key from pkeyhelper.dll.
|
echo Failed to get product key from pkeyhelper.dll.
|
||||||
echo:
|
echo:
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
goto dk_done
|
goto dk_done
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -584,7 +628,7 @@ call :dk_color %Gray% "Reboot is required to fully change the edition."
|
|||||||
call :dk_color %Red% "[Unsuccessful] [Error Code: !keyerror!]"
|
call :dk_color %Red% "[Unsuccessful] [Error Code: !keyerror!]"
|
||||||
echo:
|
echo:
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -665,7 +709,7 @@ echo [%targetedition% ^| %winbuild%]
|
|||||||
echo Failed to get product key from pkeyhelper.dll.
|
echo Failed to get product key from pkeyhelper.dll.
|
||||||
echo:
|
echo:
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
goto dk_done
|
goto dk_done
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -741,7 +785,7 @@ echo:
|
|||||||
call :dk_color %Blue% "In case there are errors, you should restart the system before trying again."
|
call :dk_color %Blue% "In case there are errors, you should restart the system before trying again."
|
||||||
echo:
|
echo:
|
||||||
set fixes=%fixes% %mas%change_edition_issues
|
set fixes=%fixes% %mas%change_edition_issues
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%change_edition_issues"
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%change_edition_issues"
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
:compresslog
|
:compresslog
|
||||||
@ -780,7 +824,7 @@ exit /b
|
|||||||
|
|
||||||
:dk_setvar
|
:dk_setvar
|
||||||
|
|
||||||
set psc=powershell.exe
|
set psc=powershell.exe -nop -c
|
||||||
set winbuild=1
|
set winbuild=1
|
||||||
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
|
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
|
||||||
|
|
||||||
@ -876,7 +920,7 @@ echo sc start sppsvc [Error Code: %spperror%]
|
|||||||
)
|
)
|
||||||
|
|
||||||
echo:
|
echo:
|
||||||
%psc% "$job = Start-Job { (Get-WmiObject -Query 'SELECT * FROM %sps%').Version }; if (-not (Wait-Job $job -Timeout 30)) {write-host 'sppsvc is not working correctly. Help - %mas%troubleshoot'}"
|
%psc% "$job = Start-Job { (Get-WmiObject -Query 'SELECT * FROM %sps%').Version }; if (-not (Wait-Job $job -Timeout 30)) {write-host 'sppsvc is not working correctly. Check this webpage for help - %mas%troubleshoot'}"
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
:: Common lines used in PowerShell reflection code
|
:: Common lines used in PowerShell reflection code
|
||||||
|
@ -47,20 +47,40 @@ choice /c 0 /n
|
|||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
:sppmgr:
|
:sppmgr:
|
||||||
|
param (
|
||||||
|
[Parameter()]
|
||||||
|
[switch]
|
||||||
|
$All,
|
||||||
|
[Parameter()]
|
||||||
|
[switch]
|
||||||
|
$Dlv,
|
||||||
|
[Parameter()]
|
||||||
|
[switch]
|
||||||
|
$IID,
|
||||||
|
[Parameter()]
|
||||||
|
[switch]
|
||||||
|
$Pass
|
||||||
|
)
|
||||||
|
|
||||||
|
function CONOUT($strObj)
|
||||||
|
{
|
||||||
|
Out-Host -Input $strObj
|
||||||
|
}
|
||||||
|
|
||||||
function ExitScript($ExitCode = 0)
|
function ExitScript($ExitCode = 0)
|
||||||
{
|
{
|
||||||
Exit $ExitCode
|
Exit $ExitCode
|
||||||
}
|
}
|
||||||
|
|
||||||
if (-Not $PSVersionTable) {
|
if (-Not $PSVersionTable) {
|
||||||
Write-Host "==== ERROR ====`r`n"
|
"==== ERROR ====`r`n"
|
||||||
Write-Host 'Windows PowerShell 1.0 is not supported by this script.'
|
"Windows PowerShell 1.0 is not supported by this script."
|
||||||
ExitScript 1
|
ExitScript 1
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($ExecutionContext.SessionState.LanguageMode.value__ -NE 0) {
|
if ($ExecutionContext.SessionState.LanguageMode.value__ -NE 0) {
|
||||||
Write-Host "==== ERROR ====`r`n"
|
"==== ERROR ====`r`n"
|
||||||
Write-Host 'Windows PowerShell is not running in Full Language Mode.'
|
"Windows PowerShell is not running in Full Language Mode."
|
||||||
ExitScript 1
|
ExitScript 1
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,21 +88,34 @@ $winbuild = 1
|
|||||||
try {
|
try {
|
||||||
$winbuild = [System.Diagnostics.FileVersionInfo]::GetVersionInfo("$env:SystemRoot\System32\kernel32.dll").FileBuildPart
|
$winbuild = [System.Diagnostics.FileVersionInfo]::GetVersionInfo("$env:SystemRoot\System32\kernel32.dll").FileBuildPart
|
||||||
} catch {
|
} catch {
|
||||||
$winbuild = [int](Get-WmiObject Win32_OperatingSystem).BuildNumber
|
$winbuild = [int]([wmi]'Win32_OperatingSystem=@').BuildNumber
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($winbuild -EQ 1) {
|
if ($winbuild -EQ 1) {
|
||||||
Write-Host "==== ERROR ====`r`n"
|
"==== ERROR ====`r`n"
|
||||||
Write-Host 'Could not detect Windows build.'
|
"Could not detect Windows build."
|
||||||
ExitScript 1
|
ExitScript 1
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($winbuild -LT 2600) {
|
if ($winbuild -LT 2600) {
|
||||||
Write-Host "==== ERROR ====`r`n"
|
"==== ERROR ====`r`n"
|
||||||
Write-Host 'This build of Windows is not supported by this script.'
|
"This build of Windows is not supported by this script."
|
||||||
ExitScript 1
|
ExitScript 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($All.IsPresent)
|
||||||
|
{
|
||||||
|
$isAll = {CONOUT "`r"}
|
||||||
|
$noAll = {$null}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$isAll = {$null}
|
||||||
|
$noAll = {CONOUT "`r"}
|
||||||
|
}
|
||||||
|
$Dlv = $Dlv.IsPresent
|
||||||
|
$IID = $IID.IsPresent -Or $Dlv.IsPresent
|
||||||
|
|
||||||
$NT6 = $winbuild -GE 6000
|
$NT6 = $winbuild -GE 6000
|
||||||
$NT7 = $winbuild -GE 7600
|
$NT7 = $winbuild -GE 7600
|
||||||
$NT9 = $winbuild -GE 9600
|
$NT9 = $winbuild -GE 9600
|
||||||
@ -94,10 +127,10 @@ $line3 = "____________________________________________________________"
|
|||||||
|
|
||||||
function echoWindows
|
function echoWindows
|
||||||
{
|
{
|
||||||
Write-Host "$line2"
|
CONOUT "$line2"
|
||||||
Write-Host "=== Windows Status ==="
|
CONOUT "=== Windows Status ==="
|
||||||
Write-Host "$line2"
|
CONOUT "$line2"
|
||||||
if (!$All.IsPresent) {Write-Host}
|
& $noAll
|
||||||
}
|
}
|
||||||
|
|
||||||
function echoOffice
|
function echoOffice
|
||||||
@ -106,18 +139,22 @@ function echoOffice
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($All.IsPresent) {Write-Host}
|
& $isAll
|
||||||
Write-Host "$line2"
|
CONOUT "$line2"
|
||||||
Write-Host "=== Office Status ==="
|
CONOUT "=== Office Status ==="
|
||||||
Write-Host "$line2"
|
CONOUT "$line2"
|
||||||
if (!$All.IsPresent) {Write-Host}
|
& $noAll
|
||||||
|
|
||||||
$script:doMSG = 0
|
$script:doMSG = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
function strGetRegistry($strKey, $strName)
|
function strGetRegistry($strKey, $strName)
|
||||||
{
|
{
|
||||||
Get-ItemProperty -EA 0 $strKey | select -EA 0 -Expand $strName
|
try {
|
||||||
|
return [Microsoft.Win32.Registry]::GetValue($strKey, $strName, $null)
|
||||||
|
} catch {
|
||||||
|
return $null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function CheckOhook
|
function CheckOhook
|
||||||
@ -148,55 +185,57 @@ function CheckOhook
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($All.IsPresent) {Write-Host}
|
& $isAll
|
||||||
Write-Host "$line2"
|
CONOUT "$line2"
|
||||||
Write-Host "=== Office Ohook Status ==="
|
CONOUT "=== Office Ohook Status ==="
|
||||||
Write-Host "$line2"
|
CONOUT "$line2"
|
||||||
Write-Host
|
$host.UI.WriteLine('Yellow', 'Black', "`r`nOhook for permanent Office activation is installed.`r`nYou can ignore the below mentioned Office activation status.")
|
||||||
Write-Host -back 'Black' -fore 'Yellow' 'Ohook for permanent Office activation is installed.'
|
& $noAll
|
||||||
Write-Host -back 'Black' -fore 'Yellow' 'You can ignore the below mentioned Office activation status.'
|
|
||||||
if (!$All.IsPresent) {Write-Host}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#region WMI
|
#region WMI
|
||||||
function DetectID($strSLP, $strAppId, [ref]$strAppVar)
|
function DetectID($strSLP, $strAppId)
|
||||||
{
|
{
|
||||||
$fltr = "ApplicationID='$strAppId'"
|
$ppk = (" AND PartialProductKey <> NULL)", ")")[$All.IsPresent]
|
||||||
if (!$All.IsPresent) {
|
$fltr = "SELECT ID FROM $strSLP WHERE (ApplicationID='$strAppId'"
|
||||||
$fltr = $fltr + " AND PartialProductKey <> NULL"
|
$clause = $fltr + $ppk
|
||||||
}
|
$sWmi = [wmisearcher]$clause
|
||||||
Get-WmiObject $strSLP ID -Filter $fltr -EA 0 | select ID -EA 0 | foreach {
|
$sWmi.Options.Rewindable = $false
|
||||||
$strAppVar.Value = 1
|
return ($sWmi.Get().Count -GT 0)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function GetID($strSLP, $strAppId, $strProperty = "ID")
|
function GetID($strSLP, $strAppId)
|
||||||
{
|
{
|
||||||
$NT5 = ($strSLP -EQ $wslp -And $winbuild -LT 6001)
|
$NT5 = ($strSLP -EQ $wslp -And $winbuild -LT 6001)
|
||||||
$IDs = [Collections.ArrayList]@()
|
$IDs = [Collections.ArrayList]@()
|
||||||
|
$isAdd = (" AND LicenseDependsOn <> NULL)", ")")[$NT5]
|
||||||
|
$noAdd = " AND LicenseDependsOn IS NULL)"
|
||||||
|
$query = "SELECT ID FROM $strSLP WHERE (ApplicationID='$strAppId' AND PartialProductKey"
|
||||||
|
|
||||||
if ($All.IsPresent) {
|
if ($All.IsPresent) {
|
||||||
$fltr = "ApplicationID='$strAppId' AND PartialProductKey IS NULL"
|
$fltr = $query + " IS NULL"
|
||||||
$clause = $fltr
|
$clause = $fltr + $isAdd
|
||||||
|
$sWmi = [wmisearcher]$clause
|
||||||
|
$sWmi.Options.Rewindable = $false
|
||||||
|
try {$sWmi.Get() | select -Expand Properties -EA 0 | foreach {$IDs += $_.Value}} catch {}
|
||||||
if (-Not $NT5) {
|
if (-Not $NT5) {
|
||||||
$clause = $fltr + " AND LicenseDependsOn <> NULL"
|
$clause = $fltr + $noAdd
|
||||||
}
|
$sWmi = [wmisearcher]$clause
|
||||||
Get-WmiObject $strSLP $strProperty -Filter $clause -EA 0 | select -Expand $strProperty -EA 0 | foreach {$IDs += $_}
|
$sWmi.Options.Rewindable = $false
|
||||||
if (-Not $NT5) {
|
try {$sWmi.Get() | select -Expand Properties -EA 0 | foreach {$IDs += $_.Value}} catch {}
|
||||||
$clause = $fltr + " AND LicenseDependsOn IS NULL"
|
|
||||||
Get-WmiObject $strSLP $strProperty -Filter $clause -EA 0 | select -Expand $strProperty -EA 0 | foreach {$IDs += $_}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$fltr = "ApplicationID='$strAppId' AND PartialProductKey <> NULL"
|
$fltr = $query + " <> NULL"
|
||||||
$clause = $fltr
|
$clause = $fltr + $isAdd
|
||||||
|
$sWmi = [wmisearcher]$clause
|
||||||
|
$sWmi.Options.Rewindable = $false
|
||||||
|
try {$sWmi.Get() | select -Expand Properties -EA 0 | foreach {$IDs += $_.Value}} catch {}
|
||||||
if (-Not $NT5) {
|
if (-Not $NT5) {
|
||||||
$clause = $fltr + " AND LicenseDependsOn <> NULL"
|
$clause = $fltr + $noAdd
|
||||||
}
|
$sWmi = [wmisearcher]$clause
|
||||||
Get-WmiObject $strSLP $strProperty -Filter $clause -EA 0 | select -Expand $strProperty -EA 0 | foreach {$IDs += $_}
|
$sWmi.Options.Rewindable = $false
|
||||||
if (-Not $NT5) {
|
try {$sWmi.Get() | select -Expand Properties -EA 0 | foreach {$IDs += $_.Value}} catch {}
|
||||||
$clause = $fltr + " AND LicenseDependsOn IS NULL"
|
|
||||||
Get-WmiObject $strSLP $strProperty -Filter $clause -EA 0 | select -Expand $strProperty -EA 0 | foreach {$IDs += $_}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $IDs
|
return $IDs
|
||||||
@ -233,38 +272,45 @@ function DetectSubscription {
|
|||||||
if ($objSvc.SubscriptionEdition.Contains("UNKNOWN") -EQ $false) {$SubMsgEdition = $objSvc.SubscriptionEdition}
|
if ($objSvc.SubscriptionEdition.Contains("UNKNOWN") -EQ $false) {$SubMsgEdition = $objSvc.SubscriptionEdition}
|
||||||
}
|
}
|
||||||
|
|
||||||
Write-Host
|
CONOUT "`nSubscription information:"
|
||||||
Write-Host "Subscription information:"
|
CONOUT " Edition: $SubMsgEdition"
|
||||||
Write-Host " Edition: $SubMsgEdition"
|
CONOUT " Type : $SubMsgType"
|
||||||
Write-Host " Type : $SubMsgType"
|
CONOUT " Status : $SubMsgStatus"
|
||||||
Write-Host " Status : $SubMsgStatus"
|
CONOUT " Expiry : $SubMsgExpiry"
|
||||||
Write-Host " Expiry : $SubMsgExpiry"
|
}
|
||||||
|
|
||||||
|
function DetectAdbaClient
|
||||||
|
{
|
||||||
|
CONOUT "`nAD Activation client information:"
|
||||||
|
CONOUT " Object Name: $ADActivationObjectName"
|
||||||
|
CONOUT " Domain Name: $ADActivationObjectDN"
|
||||||
|
CONOUT " CSVLK Extended PID: $ADActivationCsvlkPid"
|
||||||
|
CONOUT " CSVLK Activation ID: $ADActivationCsvlkSkuId"
|
||||||
}
|
}
|
||||||
|
|
||||||
function DetectAvmClient
|
function DetectAvmClient
|
||||||
{
|
{
|
||||||
Write-Host
|
CONOUT "`nAutomatic VM Activation client information:"
|
||||||
Write-Host "Automatic VM Activation client information:"
|
|
||||||
if (-Not [String]::IsNullOrEmpty($IAID)) {
|
if (-Not [String]::IsNullOrEmpty($IAID)) {
|
||||||
Write-Host " Guest IAID: $IAID"
|
CONOUT " Guest IAID: $IAID"
|
||||||
} else {
|
} else {
|
||||||
Write-Host " Guest IAID: Not Available"
|
CONOUT " Guest IAID: Not Available"
|
||||||
}
|
}
|
||||||
if (-Not [String]::IsNullOrEmpty($AutomaticVMActivationHostMachineName)) {
|
if (-Not [String]::IsNullOrEmpty($AutomaticVMActivationHostMachineName)) {
|
||||||
Write-Host " Host machine name: $AutomaticVMActivationHostMachineName"
|
CONOUT " Host machine name: $AutomaticVMActivationHostMachineName"
|
||||||
} else {
|
} else {
|
||||||
Write-Host " Host machine name: Not Available"
|
CONOUT " Host machine name: Not Available"
|
||||||
}
|
}
|
||||||
if ($AutomaticVMActivationLastActivationTime.Substring(0,4) -NE "1601") {
|
if ($AutomaticVMActivationLastActivationTime.Substring(0,4) -NE "1601") {
|
||||||
$EED = [DateTime]::Parse([Management.ManagementDateTimeConverter]::ToDateTime($AutomaticVMActivationLastActivationTime),$null,48).ToString('yyyy-MM-dd hh:mm:ss tt')
|
$EED = [DateTime]::Parse([Management.ManagementDateTimeConverter]::ToDateTime($AutomaticVMActivationLastActivationTime),$null,48).ToString('yyyy-MM-dd hh:mm:ss tt')
|
||||||
Write-Host " Activation time: $EED UTC"
|
CONOUT " Activation time: $EED UTC"
|
||||||
} else {
|
} else {
|
||||||
Write-Host " Activation time: Not Available"
|
CONOUT " Activation time: Not Available"
|
||||||
}
|
}
|
||||||
if (-Not [String]::IsNullOrEmpty($AutomaticVMActivationHostDigitalPid2)) {
|
if (-Not [String]::IsNullOrEmpty($AutomaticVMActivationHostDigitalPid2)) {
|
||||||
Write-Host " Host Digital PID2: $AutomaticVMActivationHostDigitalPid2"
|
CONOUT " Host Digital PID2: $AutomaticVMActivationHostDigitalPid2"
|
||||||
} else {
|
} else {
|
||||||
Write-Host " Host Digital PID2: Not Available"
|
CONOUT " Host Digital PID2: Not Available"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -294,32 +340,30 @@ function DetectKmsHost
|
|||||||
$KeyManagementServiceLowPriority = "Normal"
|
$KeyManagementServiceLowPriority = "Normal"
|
||||||
}
|
}
|
||||||
|
|
||||||
Write-Host
|
CONOUT "`nKey Management Service host information:"
|
||||||
Write-Host "Key Management Service host information:"
|
CONOUT " Current count: $KeyManagementServiceCurrentCount"
|
||||||
Write-Host " Current count: $KeyManagementServiceCurrentCount"
|
CONOUT " Listening on Port: $KeyManagementServiceListeningPort"
|
||||||
Write-Host " Listening on Port: $KeyManagementServiceListeningPort"
|
CONOUT " DNS publishing: $KeyManagementServiceDnsPublishing"
|
||||||
Write-Host " DNS publishing: $KeyManagementServiceDnsPublishing"
|
CONOUT " KMS priority: $KeyManagementServiceLowPriority"
|
||||||
Write-Host " KMS priority: $KeyManagementServiceLowPriority"
|
|
||||||
if (-Not [String]::IsNullOrEmpty($KeyManagementServiceTotalRequests)) {
|
if (-Not [String]::IsNullOrEmpty($KeyManagementServiceTotalRequests)) {
|
||||||
Write-Host
|
CONOUT "`nKey Management Service cumulative requests received from clients:"
|
||||||
Write-Host "Key Management Service cumulative requests received from clients:"
|
CONOUT " Total: $KeyManagementServiceTotalRequests"
|
||||||
Write-Host " Total: $KeyManagementServiceTotalRequests"
|
CONOUT " Failed: $KeyManagementServiceFailedRequests"
|
||||||
Write-Host " Failed: $KeyManagementServiceFailedRequests"
|
CONOUT " Unlicensed: $KeyManagementServiceUnlicensedRequests"
|
||||||
Write-Host " Unlicensed: $KeyManagementServiceUnlicensedRequests"
|
CONOUT " Licensed: $KeyManagementServiceLicensedRequests"
|
||||||
Write-Host " Licensed: $KeyManagementServiceLicensedRequests"
|
CONOUT " Initial grace period: $KeyManagementServiceOOBGraceRequests"
|
||||||
Write-Host " Initial grace period: $KeyManagementServiceOOBGraceRequests"
|
CONOUT " Expired or Hardware out of tolerance: $KeyManagementServiceOOTGraceRequests"
|
||||||
Write-Host " Expired or Hardware out of tolerance: $KeyManagementServiceOOTGraceRequests"
|
CONOUT " Non-genuine grace period: $KeyManagementServiceNonGenuineGraceRequests"
|
||||||
Write-Host " Non-genuine grace period: $KeyManagementServiceNonGenuineGraceRequests"
|
if ($null -NE $KeyManagementServiceNotificationRequests) {CONOUT " Notification: $KeyManagementServiceNotificationRequests"}
|
||||||
Write-Host " Notification: $KeyManagementServiceNotificationRequests"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function DetectKmsClient
|
function DetectKmsClient
|
||||||
{
|
{
|
||||||
if ($null -NE $VLActivationTypeEnabled) {Write-Host "Configured Activation Type: $($VLActTypes[$VLActivationTypeEnabled])"}
|
if ($null -NE $VLActivationTypeEnabled) {CONOUT "Configured Activation Type: $($VLActTypes[$VLActivationTypeEnabled])"}
|
||||||
Write-Host
|
CONOUT "`r"
|
||||||
if ($LicenseStatus -NE 1) {
|
if ($LicenseStatus -NE 1) {
|
||||||
Write-Host "Please activate the product in order to update KMS client information values."
|
CONOUT "Please activate the product in order to update KMS client information values."
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -352,33 +396,42 @@ function DetectKmsClient
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Write-Host "Key Management Service client information:"
|
CONOUT "Key Management Service client information:"
|
||||||
Write-Host " Client Machine ID (CMID): $($objSvc.ClientMachineID)"
|
CONOUT " Client Machine ID (CMID): $($objSvc.ClientMachineID)"
|
||||||
if ($null -EQ $KmsReg) {
|
if ($null -EQ $KmsReg) {
|
||||||
Write-Host " $KmsDns"
|
CONOUT " $KmsDns"
|
||||||
Write-Host " Registered KMS machine name: KMS name not available"
|
CONOUT " Registered KMS machine name: KMS name not available"
|
||||||
} else {
|
} else {
|
||||||
Write-Host " $KmsReg"
|
CONOUT " $KmsReg"
|
||||||
}
|
}
|
||||||
if ($null -NE $DiscoveredKeyManagementServiceMachineIpAddress) {Write-Host " KMS machine IP address: $DiscoveredKeyManagementServiceMachineIpAddress"}
|
if ($null -NE $DiscoveredKeyManagementServiceMachineIpAddress) {CONOUT " KMS machine IP address: $DiscoveredKeyManagementServiceMachineIpAddress"}
|
||||||
Write-Host " KMS machine extended PID: $KeyManagementServiceProductKeyID"
|
CONOUT " KMS machine extended PID: $KeyManagementServiceProductKeyID"
|
||||||
Write-Host " Activation interval: $VLActivationInterval minutes"
|
CONOUT " Activation interval: $VLActivationInterval minutes"
|
||||||
Write-Host " Renewal interval: $VLRenewalInterval minutes"
|
CONOUT " Renewal interval: $VLRenewalInterval minutes"
|
||||||
if ($null -NE $KeyManagementServiceHostCaching) {Write-Host " KMS host caching: $KeyManagementServiceHostCaching"}
|
if ($null -NE $KeyManagementServiceHostCaching) {CONOUT " KMS host caching: $KeyManagementServiceHostCaching"}
|
||||||
if (-Not [String]::IsNullOrEmpty($KeyManagementServiceLookupDomain)) {Write-Host " KMS SRV record lookup domain: $KeyManagementServiceLookupDomain"}
|
if (-Not [String]::IsNullOrEmpty($KeyManagementServiceLookupDomain)) {CONOUT " KMS SRV record lookup domain: $KeyManagementServiceLookupDomain"}
|
||||||
}
|
}
|
||||||
|
|
||||||
function GetResult($strSLP, $strSLS, $strID)
|
function GetResult($strSLP, $strSLS, $strID)
|
||||||
{
|
{
|
||||||
try {$objPrd = Get-WmiObject $strSLP -Filter "ID='$strID'" -EA 1} catch {return}
|
try
|
||||||
$objPrd | select -Expand Properties -EA 0 | foreach {
|
{
|
||||||
if (-Not [String]::IsNullOrEmpty($_.Value)) {set $_.Name $_.Value}
|
$objPrd = [wmisearcher]"SELECT * FROM $strSLP WHERE ID='$strID'"
|
||||||
|
$objPrd.Options.Rewindable = $false
|
||||||
|
$objPrd.Get() | select -Expand Properties -EA 0 | foreach { if (-Not [String]::IsNullOrEmpty($_.Value)) {set $_.Name $_.Value} }
|
||||||
|
$objPrd.Dispose()
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
$winID = ($ApplicationID -EQ $winApp)
|
$winID = ($ApplicationID -EQ $winApp)
|
||||||
$winPR = ($winID -And -Not $LicenseIsAddon)
|
$winPR = ($winID -And -Not $LicenseIsAddon)
|
||||||
$Vista = ($winID -And $NT6 -And -Not $NT7)
|
$Vista = ($winID -And $NT6 -And -Not $NT7)
|
||||||
$NT5 = ($strSLP -EQ $wslp -And $winbuild -LT 6001)
|
$NT5 = ($strSLP -EQ $wslp -And $winbuild -LT 6001)
|
||||||
|
$reapp = ("Windows", "App")[!$winID]
|
||||||
|
$prmnt = ("machine", "product")[!$winPR]
|
||||||
|
|
||||||
if ($Description | Select-String "VOLUME_KMSCLIENT") {$cKmsClient = 1; $_mTag = "Volume"}
|
if ($Description | Select-String "VOLUME_KMSCLIENT") {$cKmsClient = 1; $_mTag = "Volume"}
|
||||||
if ($Description | Select-String "TIMEBASED_") {$cTblClient = 1; $_mTag = "Timebased"}
|
if ($Description | Select-String "TIMEBASED_") {$cTblClient = 1; $_mTag = "Timebased"}
|
||||||
@ -403,7 +456,7 @@ function GetResult($strSLP, $strSLS, $strID)
|
|||||||
$LicenseInf = "Licensed"
|
$LicenseInf = "Licensed"
|
||||||
$LicenseMsg = $null
|
$LicenseMsg = $null
|
||||||
if ($GracePeriodRemaining -EQ 0) {
|
if ($GracePeriodRemaining -EQ 0) {
|
||||||
if ($winPR) {$ExpireMsg = "The machine is permanently activated."} else {$ExpireMsg = "The product is permanently activated."}
|
$ExpireMsg = "The $prmnt is permanently activated."
|
||||||
} else {
|
} else {
|
||||||
$LicenseMsg = "$_mTag activation expiration: $GracePeriodRemaining minute(s) ($_gpr day(s))"
|
$LicenseMsg = "$_mTag activation expiration: $GracePeriodRemaining minute(s) ($_gpr day(s))"
|
||||||
if ($null -NE $_xpr) {$ExpireMsg = "$_mTag activation will expire $_xpr"}
|
if ($null -NE $_xpr) {$ExpireMsg = "$_mTag activation will expire $_xpr"}
|
||||||
@ -424,8 +477,9 @@ function GetResult($strSLP, $strSLS, $strID)
|
|||||||
if ($LicenseStatus -EQ 5 -And -Not $NT5) {
|
if ($LicenseStatus -EQ 5 -And -Not $NT5) {
|
||||||
$LicenseInf = "Notification"
|
$LicenseInf = "Notification"
|
||||||
$LicenseMsg = "Notification Reason: $LicenseReason"
|
$LicenseMsg = "Notification Reason: $LicenseReason"
|
||||||
|
if ($LicenseReason -EQ "0xC004F00F") {if ($null -NE $cKmsClient) {$LicenseMsg = $LicenseMsg + " (KMS license expired)."} else {$LicenseMsg = $LicenseMsg + " (hardware out of tolerance)."}}
|
||||||
if ($LicenseReason -EQ "0xC004F200") {$LicenseMsg = $LicenseMsg + " (non-genuine)."}
|
if ($LicenseReason -EQ "0xC004F200") {$LicenseMsg = $LicenseMsg + " (non-genuine)."}
|
||||||
if ($LicenseReason -EQ "0xC004F009") {$LicenseMsg = $LicenseMsg + " (grace time expired)."}
|
if ($LicenseReason -EQ "0xC004F009" -Or $LicenseReason -EQ "0xC004F064") {$LicenseMsg = $LicenseMsg + " (grace time expired)."}
|
||||||
}
|
}
|
||||||
if ($LicenseStatus -GT 5 -Or ($LicenseStatus -GT 4 -And $NT5)) {
|
if ($LicenseStatus -GT 5 -Or ($LicenseStatus -GT 4 -And $NT5)) {
|
||||||
$LicenseInf = "Unknown"
|
$LicenseInf = "Unknown"
|
||||||
@ -437,25 +491,61 @@ function GetResult($strSLP, $strSLS, $strID)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($winPR -And $PartialProductKey -And -Not $NT9) {
|
if ($winPR -And $PartialProductKey -And -Not $NT9) {
|
||||||
$dp4 = Get-ItemProperty -EA 0 "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" | select -EA 0 -Expand DigitalProductId4
|
$dp4 = strGetRegistry "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" "DigitalProductId4"
|
||||||
if ($null -NE $dp4) {
|
if ($null -NE $dp4) {
|
||||||
$ProductKeyChannel = ([System.Text.Encoding]::Unicode.GetString($dp4, 1016, 128)).Trim([char]$null)
|
$ProductKeyChannel = ([System.Text.Encoding]::Unicode.GetString($dp4, 1016, 128)).Trim([char]$null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($All.IsPresent) {Write-Host}
|
if ($winPR -And $Dlv -And $NT7 -And $null -EQ $RemainingAppReArmCount) {
|
||||||
Write-Host "Name: $Name"
|
try
|
||||||
Write-Host "Description: $Description"
|
{
|
||||||
Write-Host "Activation ID: $ID"
|
$tmp = [wmisearcher]"SELECT RemainingWindowsReArmCount FROM $strSLS"
|
||||||
if ($null -NE $ProductKeyID) {Write-Host "Extended PID: $ProductKeyID"}
|
$tmp.Options.Rewindable = $false
|
||||||
if ($null -NE $OfflineInstallationId -And $IID.IsPresent) {Write-Host "Installation ID: $OfflineInstallationId"}
|
$tmp.Get() | select -Expand Properties -EA 0 | foreach {set $_.Name $_.Value}
|
||||||
if ($null -NE $ProductKeyChannel) {Write-Host "Product Key Channel: $ProductKeyChannel"}
|
$tmp.Dispose()
|
||||||
if ($null -NE $PartialProductKey) {Write-Host "Partial Product Key: $PartialProductKey"} else {Write-Host "Product Key: Not installed"}
|
}
|
||||||
Write-Host "License Status: $LicenseInf"
|
catch
|
||||||
if ($null -NE $LicenseMsg) {Write-Host "$LicenseMsg"}
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$add_on = $Name.IndexOf("add-on for", 5)
|
||||||
|
|
||||||
|
& $isAll
|
||||||
|
if ($add_on -EQ -1) {CONOUT "Name: $Name"} else {CONOUT "Name: $($Name.Substring(0, $add_on + 7))"}
|
||||||
|
CONOUT "Description: $Description"
|
||||||
|
CONOUT "Activation ID: $ID"
|
||||||
|
if ($null -NE $ProductKeyID) {CONOUT "Extended PID: $ProductKeyID"}
|
||||||
|
if ($null -NE $ProductKeyID2 -And $Dlv) {CONOUT "Product ID: $ProductKeyID2"}
|
||||||
|
if ($null -NE $OfflineInstallationId -And $IID) {CONOUT "Installation ID: $OfflineInstallationId"}
|
||||||
|
if ($null -NE $ProductKeyChannel) {CONOUT "Product Key Channel: $ProductKeyChannel"}
|
||||||
|
if ($null -NE $PartialProductKey) {CONOUT "Partial Product Key: $PartialProductKey"}
|
||||||
|
CONOUT "License Status: $LicenseInf"
|
||||||
|
if ($null -NE $LicenseMsg) {CONOUT "$LicenseMsg"}
|
||||||
if ($LicenseStatus -NE 0 -And $EvaluationEndDate.Substring(0,4) -NE "1601") {
|
if ($LicenseStatus -NE 0 -And $EvaluationEndDate.Substring(0,4) -NE "1601") {
|
||||||
$EED = [DateTime]::Parse([Management.ManagementDateTimeConverter]::ToDateTime($EvaluationEndDate),$null,48).ToString('yyyy-MM-dd hh:mm:ss tt')
|
$EED = [DateTime]::Parse([Management.ManagementDateTimeConverter]::ToDateTime($EvaluationEndDate),$null,48).ToString('yyyy-MM-dd hh:mm:ss tt')
|
||||||
Write-Host "Evaluation End Date: $EED UTC"
|
CONOUT "Evaluation End Date: $EED UTC"
|
||||||
|
}
|
||||||
|
if ($Dlv) {
|
||||||
|
if ($null -NE $RemainingWindowsReArmCount) {
|
||||||
|
CONOUT "Remaining Windows rearm count: $RemainingWindowsReArmCount"
|
||||||
|
}
|
||||||
|
if ($null -NE $RemainingSkuReArmCount -And $RemainingSkuReArmCount -NE 4294967295) {
|
||||||
|
CONOUT "Remaining $reapp rearm count: $RemainingAppReArmCount"
|
||||||
|
CONOUT "Remaining SKU rearm count: $RemainingSkuReArmCount"
|
||||||
|
}
|
||||||
|
if ($null -NE $TrustedTime -And $LicenseStatus -NE 0) {
|
||||||
|
$TTD = [DateTime]::Parse([Management.ManagementDateTimeConverter]::ToDateTime($TrustedTime),$null,32).ToString('yyyy-MM-dd hh:mm:ss tt')
|
||||||
|
CONOUT "Trusted time: $TTD"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($LicenseStatus -EQ 0) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($strSLP -EQ $wslp -And $null -NE $PartialProductKey -And $null -NE $ADActivationObjectName -And $VLActivationType -EQ 1) {
|
||||||
|
DetectAdbaClient
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($winID -And $null -NE $cAvmClient -And $null -NE $PartialProductKey) {
|
if ($winID -And $null -NE $cAvmClient -And $null -NE $PartialProductKey) {
|
||||||
@ -467,16 +557,22 @@ function GetResult($strSLP, $strSLS, $strID)
|
|||||||
$chkSLS = ($null -NE $PartialProductKey) -And ($null -NE $cKmsClient -Or $null -NE $cKmsHost -Or $chkSub)
|
$chkSLS = ($null -NE $PartialProductKey) -And ($null -NE $cKmsClient -Or $null -NE $cKmsHost -Or $chkSub)
|
||||||
|
|
||||||
if (!$chkSLS) {
|
if (!$chkSLS) {
|
||||||
if ($null -NE $ExpireMsg) {Write-Host; Write-Host " $ExpireMsg"}
|
if ($null -NE $ExpireMsg) {CONOUT "`n $ExpireMsg"}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
$objSvc = Get-WmiObject $strSLS -EA 0
|
try
|
||||||
|
{
|
||||||
if ($Vista) {
|
$objSvc = New-Object PSObject
|
||||||
$objSvc | select -Expand Properties -EA 0 | foreach {
|
$wmiSvc = [wmisearcher]"SELECT * FROM $strSLS"
|
||||||
if (-Not [String]::IsNullOrEmpty($_.Value)) {set $_.Name $_.Value}
|
$wmiSvc.Options.Rewindable = $false
|
||||||
}
|
$wmiSvc.Get() | select -Expand Properties -EA 0 | foreach { if (-Not [String]::IsNullOrEmpty($_.Value)) {$objSvc | Add-Member 8 $_.Name $_.Value} }
|
||||||
|
$wmiSvc.Dispose()
|
||||||
|
if ($null -EQ $IsKeyManagementServiceMachine) {$objSvc.PSObject.Properties | foreach {set $_.Name $_.Value}}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($strSLS -EQ $wsls -And $NT9) {
|
if ($strSLS -EQ $wsls -And $NT9) {
|
||||||
@ -486,6 +582,7 @@ function GetResult($strSLP, $strSLS, $strID)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($null -NE $cKmsHost -And $IsKeyManagementServiceMachine -GT 0) {
|
if ($null -NE $cKmsHost -And $IsKeyManagementServiceMachine -GT 0) {
|
||||||
|
if ($null -NE $ExpireMsg) {CONOUT "`n $ExpireMsg"}
|
||||||
DetectKmsHost
|
DetectKmsHost
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -493,7 +590,9 @@ function GetResult($strSLP, $strSLS, $strID)
|
|||||||
DetectKmsClient
|
DetectKmsClient
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($null -NE $ExpireMsg) {Write-Host; Write-Host " $ExpireMsg"}
|
if ($null -EQ $cKmsHost) {
|
||||||
|
if ($null -NE $ExpireMsg) {CONOUT "`n $ExpireMsg"}
|
||||||
|
}
|
||||||
|
|
||||||
if ($chkSub) {
|
if ($chkSub) {
|
||||||
DetectSubscription
|
DetectSubscription
|
||||||
@ -533,11 +632,10 @@ function PrintModePerPridFromRegistry
|
|||||||
$vNextPrids = Get-Item -Path $vNextRegkey -ErrorAction SilentlyContinue | Select-Object -ExpandProperty 'property' -ErrorAction SilentlyContinue | Where-Object -FilterScript {$_.ToLower() -like "*retail" -or $_.ToLower() -like "*volume"}
|
$vNextPrids = Get-Item -Path $vNextRegkey -ErrorAction SilentlyContinue | Select-Object -ExpandProperty 'property' -ErrorAction SilentlyContinue | Where-Object -FilterScript {$_.ToLower() -like "*retail" -or $_.ToLower() -like "*volume"}
|
||||||
If ($null -Eq $vNextPrids)
|
If ($null -Eq $vNextPrids)
|
||||||
{
|
{
|
||||||
Write-Host
|
CONOUT "`nNo registry keys found."
|
||||||
Write-Host "No registry keys found."
|
|
||||||
Return
|
Return
|
||||||
}
|
}
|
||||||
Write-Host
|
CONOUT "`r"
|
||||||
$vNextPrids | ForEach `
|
$vNextPrids | ForEach `
|
||||||
{
|
{
|
||||||
$mode = (Get-ItemProperty -Path $vNextRegkey -Name $_).$_
|
$mode = (Get-ItemProperty -Path $vNextRegkey -Name $_).$_
|
||||||
@ -547,7 +645,7 @@ function PrintModePerPridFromRegistry
|
|||||||
3 { $mode = "Device"; Break }
|
3 { $mode = "Device"; Break }
|
||||||
Default { $mode = "Legacy"; Break }
|
Default { $mode = "Legacy"; Break }
|
||||||
}
|
}
|
||||||
Write-Host $_ = $mode
|
CONOUT "$_ = $mode"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -561,8 +659,7 @@ function PrintSharedComputerLicensing
|
|||||||
$scaPolicyValue = Get-ItemProperty -Path $scaPolicyKey -ErrorAction SilentlyContinue | Select-Object -ExpandProperty "SharedComputerLicensing" -ErrorAction SilentlyContinue
|
$scaPolicyValue = Get-ItemProperty -Path $scaPolicyKey -ErrorAction SilentlyContinue | Select-Object -ExpandProperty "SharedComputerLicensing" -ErrorAction SilentlyContinue
|
||||||
If ($null -Eq $scaValue -And $null -Eq $scaValue2 -And $null -Eq $scaPolicyValue)
|
If ($null -Eq $scaValue -And $null -Eq $scaValue2 -And $null -Eq $scaPolicyValue)
|
||||||
{
|
{
|
||||||
Write-Host
|
CONOUT "`nNo registry keys found."
|
||||||
Write-Host "No registry keys found."
|
|
||||||
Return
|
Return
|
||||||
}
|
}
|
||||||
$scaModeValue = $scaValue -Or $scaValue2 -Or $scaPolicyValue
|
$scaModeValue = $scaValue -Or $scaValue2 -Or $scaPolicyValue
|
||||||
@ -574,23 +671,17 @@ function PrintSharedComputerLicensing
|
|||||||
{
|
{
|
||||||
$scaMode = "Enabled"
|
$scaMode = "Enabled"
|
||||||
}
|
}
|
||||||
Write-Host
|
CONOUT "`nStatus: $scaMode"
|
||||||
Write-Host "Status:" $scaMode
|
CONOUT "`r"
|
||||||
Write-Host
|
|
||||||
$tokenFiles = $null
|
$tokenFiles = $null
|
||||||
$tokenPath = "${env:LOCALAPPDATA}\Microsoft\Office\16.0\Licensing"
|
$tokenPath = "${env:LOCALAPPDATA}\Microsoft\Office\16.0\Licensing"
|
||||||
If (Test-Path $tokenPath)
|
If (Test-Path $tokenPath)
|
||||||
{
|
{
|
||||||
$tokenFiles = Get-ChildItem -Path $tokenPath -Filter "*authString*" -Recurse | Where-Object { !$_.PSIsContainer }
|
$tokenFiles = Get-ChildItem -Path $tokenPath -Filter "*authString*" -Recurse | Where-Object { !$_.PSIsContainer }
|
||||||
}
|
}
|
||||||
If ($null -Eq $tokenFiles)
|
If ($null -Eq $tokenFiles -Or $tokenFiles.Length -Eq 0)
|
||||||
{
|
{
|
||||||
Write-Host "No tokens found."
|
CONOUT "No tokens found."
|
||||||
Return
|
|
||||||
}
|
|
||||||
If ($tokenFiles.Length -Eq 0)
|
|
||||||
{
|
|
||||||
Write-Host "No tokens found."
|
|
||||||
Return
|
Return
|
||||||
}
|
}
|
||||||
$tokenFiles | ForEach `
|
$tokenFiles | ForEach `
|
||||||
@ -624,16 +715,9 @@ function PrintLicensesInformation
|
|||||||
{
|
{
|
||||||
$licenseFiles = Get-ChildItem -Path $licensePath -Recurse | Where-Object { !$_.PSIsContainer }
|
$licenseFiles = Get-ChildItem -Path $licensePath -Recurse | Where-Object { !$_.PSIsContainer }
|
||||||
}
|
}
|
||||||
If ($null -Eq $licenseFiles)
|
If ($null -Eq $licenseFiles -Or $licenseFiles.Length -Eq 0)
|
||||||
{
|
{
|
||||||
Write-Host
|
CONOUT "`nNo licenses found."
|
||||||
Write-Host "No licenses found."
|
|
||||||
Return
|
|
||||||
}
|
|
||||||
If ($licenseFiles.Length -Eq 0)
|
|
||||||
{
|
|
||||||
Write-Host
|
|
||||||
Write-Host "No licenses found."
|
|
||||||
Return
|
Return
|
||||||
}
|
}
|
||||||
$licenseFiles | ForEach `
|
$licenseFiles | ForEach `
|
||||||
@ -690,24 +774,20 @@ function vNextDiagRun
|
|||||||
Return
|
Return
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($All.IsPresent) {Write-Host}
|
& $isAll
|
||||||
Write-Host "$line2"
|
CONOUT "$line2"
|
||||||
Write-Host "=== Office vNext Status ==="
|
CONOUT "=== Office vNext Status ==="
|
||||||
Write-Host "$line2"
|
CONOUT "$line2"
|
||||||
Write-Host
|
CONOUT "`n========== Mode per ProductReleaseId =========="
|
||||||
Write-Host "========== Mode per ProductReleaseId =========="
|
|
||||||
PrintModePerPridFromRegistry
|
PrintModePerPridFromRegistry
|
||||||
Write-Host
|
CONOUT "`n========== Shared Computer Licensing =========="
|
||||||
Write-Host "========== Shared Computer Licensing =========="
|
|
||||||
PrintSharedComputerLicensing
|
PrintSharedComputerLicensing
|
||||||
Write-Host
|
CONOUT "`n========== vNext licenses ==========="
|
||||||
Write-Host "========== vNext licenses ==========="
|
|
||||||
PrintLicensesInformation -Mode "NUL"
|
PrintLicensesInformation -Mode "NUL"
|
||||||
Write-Host
|
CONOUT "`n========== Device licenses =========="
|
||||||
Write-Host "========== Device licenses =========="
|
|
||||||
PrintLicensesInformation -Mode "Device"
|
PrintLicensesInformation -Mode "Device"
|
||||||
Write-Host "$line3"
|
CONOUT "$line3"
|
||||||
Write-Host
|
CONOUT "`r"
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@ -790,13 +870,13 @@ function PrintStateData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
[string[]]$pwszStateString = $Marshal::PtrToStringUni($pwszStateData) -replace ";", "`n "
|
[string[]]$pwszStateString = $Marshal::PtrToStringUni($pwszStateData) -replace ";", "`n "
|
||||||
Write-Host " $pwszStateString"
|
CONOUT (" $pwszStateString")
|
||||||
|
|
||||||
$Marshal::FreeHGlobal($pwszStateData)
|
$Marshal::FreeHGlobal($pwszStateData)
|
||||||
return $TRUE
|
return $TRUE
|
||||||
}
|
}
|
||||||
|
|
||||||
function PrintLastActivationHRresult {
|
function PrintLastActivationHResult {
|
||||||
$pdwLastHResult = 0
|
$pdwLastHResult = 0
|
||||||
$cbSize = 0
|
$cbSize = 0
|
||||||
|
|
||||||
@ -809,12 +889,34 @@ function PrintLastActivationHRresult {
|
|||||||
return $FALSE
|
return $FALSE
|
||||||
}
|
}
|
||||||
|
|
||||||
Write-Host (" LastActivationHResult=0x{0:x8}" -f $Marshal::ReadInt32($pdwLastHResult))
|
CONOUT (" LastActivationHResult=0x{0:x8}" -f $Marshal::ReadInt32($pdwLastHResult))
|
||||||
|
|
||||||
$Marshal::FreeHGlobal($pdwLastHResult)
|
$Marshal::FreeHGlobal($pdwLastHResult)
|
||||||
return $TRUE
|
return $TRUE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function PrintLastActivationTime {
|
||||||
|
$pdwLastTime = 0
|
||||||
|
$cbSize = 0
|
||||||
|
|
||||||
|
if ($Win32::SLGetWindowsInformation(
|
||||||
|
"Security-SPP-LastWindowsActivationTime",
|
||||||
|
[ref]$null,
|
||||||
|
[ref]$cbSize,
|
||||||
|
[ref]$pdwLastTime
|
||||||
|
)) {
|
||||||
|
return $FALSE
|
||||||
|
}
|
||||||
|
|
||||||
|
$actTime = $Marshal::ReadInt64($pdwLastTime)
|
||||||
|
if ($actTime -ne 0) {
|
||||||
|
CONOUT (" LastActivationTime={0}" -f [DateTime]::FromFileTimeUtc($actTime).ToString("yyyy/MM/dd:HH:mm:ss"))
|
||||||
|
}
|
||||||
|
|
||||||
|
$Marshal::FreeHGlobal($pdwLastTime)
|
||||||
|
return $TRUE
|
||||||
|
}
|
||||||
|
|
||||||
function PrintIsWindowsGenuine {
|
function PrintIsWindowsGenuine {
|
||||||
$dwGenuine = 0
|
$dwGenuine = 0
|
||||||
$ppwszGenuineStates = @(
|
$ppwszGenuineStates = @(
|
||||||
@ -830,9 +932,9 @@ function PrintIsWindowsGenuine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($dwGenuine -lt 5) {
|
if ($dwGenuine -lt 5) {
|
||||||
Write-Host (" IsWindowsGenuine={0}" -f $ppwszGenuineStates[$dwGenuine])
|
CONOUT (" IsWindowsGenuine={0}" -f $ppwszGenuineStates[$dwGenuine])
|
||||||
} else {
|
} else {
|
||||||
Write-Host (" IsWindowsGenuine={0}" -f $dwGenuine)
|
CONOUT (" IsWindowsGenuine={0}" -f $dwGenuine)
|
||||||
}
|
}
|
||||||
|
|
||||||
return $TRUE
|
return $TRUE
|
||||||
@ -856,7 +958,7 @@ function PrintDigitalLicenseStatus {
|
|||||||
[bool]$bDigitalLicense = $FALSE
|
[bool]$bDigitalLicense = $FALSE
|
||||||
|
|
||||||
$bDigitalLicense = (($dwReturnCode -ge 0) -and ($dwReturnCode -ne 1))
|
$bDigitalLicense = (($dwReturnCode -ge 0) -and ($dwReturnCode -ne 1))
|
||||||
Write-Host (" IsDigitalLicense={0}" -f (BoolToWStr $bDigitalLicense))
|
CONOUT (" IsDigitalLicense={0}" -f (BoolToWStr $bDigitalLicense))
|
||||||
|
|
||||||
return $TRUE
|
return $TRUE
|
||||||
}
|
}
|
||||||
@ -874,7 +976,7 @@ function PrintSubscriptionStatus {
|
|||||||
return $FALSE
|
return $FALSE
|
||||||
}
|
}
|
||||||
|
|
||||||
Write-Host (" SubscriptionSupportedEdition={0}" -f (BoolToWStr $dwSupported))
|
CONOUT (" SubscriptionSupportedEdition={0}" -f (BoolToWStr $dwSupported))
|
||||||
|
|
||||||
$pStatus = $Marshal::AllocHGlobal($Marshal::SizeOf([Type]$SubStatus))
|
$pStatus = $Marshal::AllocHGlobal($Marshal::SizeOf([Type]$SubStatus))
|
||||||
if ($Win32::ClipGetSubscriptionStatus([ref]$pStatus)) {
|
if ($Win32::ClipGetSubscriptionStatus([ref]$pStatus)) {
|
||||||
@ -885,25 +987,26 @@ function PrintSubscriptionStatus {
|
|||||||
$sStatus = $Marshal::PtrToStructure($pStatus, [Type]$SubStatus)
|
$sStatus = $Marshal::PtrToStructure($pStatus, [Type]$SubStatus)
|
||||||
$Marshal::FreeHGlobal($pStatus)
|
$Marshal::FreeHGlobal($pStatus)
|
||||||
|
|
||||||
Write-Host (" SubscriptionEnabled={0}" -f (BoolToWStr $sStatus.dwEnabled))
|
CONOUT (" SubscriptionEnabled={0}" -f (BoolToWStr $sStatus.dwEnabled))
|
||||||
|
|
||||||
if ($sStatus.dwEnabled -eq 0) {
|
if ($sStatus.dwEnabled -eq 0) {
|
||||||
return $TRUE
|
return $TRUE
|
||||||
}
|
}
|
||||||
|
|
||||||
Write-Host (" SubscriptionSku={0}" -f $sStatus.dwSku)
|
CONOUT (" SubscriptionSku={0}" -f $sStatus.dwSku)
|
||||||
Write-Host (" SubscriptionState={0}" -f $sStatus.dwState)
|
CONOUT (" SubscriptionState={0}" -f $sStatus.dwState)
|
||||||
|
|
||||||
return $TRUE
|
return $TRUE
|
||||||
}
|
}
|
||||||
|
|
||||||
function ClicRun
|
function ClicRun
|
||||||
{
|
{
|
||||||
if ($All.IsPresent) {Write-Host}
|
& $isAll
|
||||||
Write-Host "Client Licensing Check information:"
|
CONOUT "Client Licensing Check information:"
|
||||||
|
|
||||||
$null = PrintStateData
|
$null = PrintStateData
|
||||||
$null = PrintLastActivationHRresult
|
$null = PrintLastActivationHResult
|
||||||
|
$null = PrintLastActivationTime
|
||||||
$null = PrintIsWindowsGenuine
|
$null = PrintIsWindowsGenuine
|
||||||
|
|
||||||
if ($DllDigital) {
|
if ($DllDigital) {
|
||||||
@ -914,15 +1017,15 @@ function ClicRun
|
|||||||
$null = PrintSubscriptionStatus
|
$null = PrintSubscriptionStatus
|
||||||
}
|
}
|
||||||
|
|
||||||
Write-Host "$line3"
|
CONOUT "$line3"
|
||||||
if (!$All.IsPresent) {Write-Host}
|
& $noAll
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
$Host.UI.RawUI.WindowTitle = "Check Activation Status"
|
$Host.UI.RawUI.WindowTitle = "Check Activation Status"
|
||||||
|
|
||||||
if ($All.IsPresent) {
|
if ($All.IsPresent) {
|
||||||
$B=$Host.UI.RawUI.BufferSize;$B.Height=3000;$Host.UI.RawUI.BufferSize=$B;clear;
|
$B=$Host.UI.RawUI.BufferSize;$B.Height=3000;$Host.UI.RawUI.BufferSize=$B;
|
||||||
|
if (!$Pass.IsPresent) {clear;}
|
||||||
}
|
}
|
||||||
|
|
||||||
$SysPath = "$env:SystemRoot\System32"
|
$SysPath = "$env:SystemRoot\System32"
|
||||||
@ -941,46 +1044,43 @@ $cSub = ($winbuild -GE 19041) -And (Select-String -Path "$SysPath\wbem\sppwmi.mo
|
|||||||
$DllDigital = ($winbuild -GE 14393) -And (Test-Path "$SysPath\EditionUpgradeManagerObj.dll")
|
$DllDigital = ($winbuild -GE 14393) -And (Test-Path "$SysPath\EditionUpgradeManagerObj.dll")
|
||||||
$DllSubscription = ($winbuild -GE 14393) -And (Test-Path "$SysPath\Clipc.dll")
|
$DllSubscription = ($winbuild -GE 14393) -And (Test-Path "$SysPath\Clipc.dll")
|
||||||
$VLActTypes = @("All", "AD", "KMS", "Token")
|
$VLActTypes = @("All", "AD", "KMS", "Token")
|
||||||
$SLKeyPath = "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SL"
|
$SLKeyPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SL"
|
||||||
$NSKeyPath = "Registry::HKEY_USERS\S-1-5-20\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SL"
|
$NSKeyPath = "HKEY_USERS\S-1-5-20\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SL"
|
||||||
|
|
||||||
'cW1nd0ws', 'c0ff1ce15', 'c0ff1ce14', 'ospp14', 'ospp15' | foreach {set $_ $null}
|
'cW1nd0ws', 'c0ff1ce15', 'c0ff1ce14', 'ospp14', 'ospp15' | foreach {set $_ $false}
|
||||||
|
|
||||||
$OsppHook = 1
|
$offsvc = "osppsvc"
|
||||||
try {gsv osppsvc -EA 1 | Out-Null} catch {$OsppHook = 0}
|
if ($NT7 -Or -Not $NT6) {$winsvc = "sppsvc"} else {$winsvc = "slsvc"}
|
||||||
|
|
||||||
if ($NT7 -Or -Not $NT6) {
|
try {gsv $winsvc -EA 1 | Out-Null; $WsppHook = 1} catch {$WsppHook = 0}
|
||||||
try {sasv sppsvc -EA 1} catch {}
|
try {gsv $offsvc -EA 1 | Out-Null; $OsppHook = 1} catch {$OsppHook = 0}
|
||||||
|
|
||||||
|
if ($WsppHook -NE 0) {
|
||||||
|
try {sasv $winsvc -EA 1} catch {}
|
||||||
|
$cW1nd0ws = DetectID $wslp $winApp
|
||||||
|
$c0ff1ce15 = DetectID $wslp $o15App
|
||||||
|
$c0ff1ce14 = DetectID $wslp $o14App
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
try {sasv slsvc -EA 1} catch {}
|
|
||||||
}
|
|
||||||
|
|
||||||
DetectID $wslp $winApp ([ref]$cW1nd0ws)
|
|
||||||
DetectID $wslp $o15App ([ref]$c0ff1ce15)
|
|
||||||
DetectID $wslp $o14App ([ref]$c0ff1ce14)
|
|
||||||
|
|
||||||
if ($OsppHook -NE 0) {
|
if ($OsppHook -NE 0) {
|
||||||
try {sasv osppsvc -EA 1} catch {}
|
try {sasv $offsvc -EA 1} catch {}
|
||||||
DetectID $oslp $o15App ([ref]$ospp15)
|
$ospp15 = DetectID $oslp $o15App
|
||||||
DetectID $oslp $o14App ([ref]$ospp14)
|
$ospp14 = DetectID $oslp $o14App
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($null -NE $cW1nd0ws)
|
if ($cW1nd0ws)
|
||||||
{
|
{
|
||||||
echoWindows
|
echoWindows
|
||||||
GetID $wslp $winApp | foreach -EA 1 {
|
GetID $wslp $winApp | foreach -EA 1 {
|
||||||
GetResult $wslp $wsls $_
|
GetResult $wslp $wsls $_
|
||||||
Write-Host "$line3"
|
CONOUT "$line3"
|
||||||
if (!$All.IsPresent) {Write-Host}
|
& $noAll
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elseif ($NT6)
|
elseif ($NT6)
|
||||||
{
|
{
|
||||||
echoWindows
|
echoWindows
|
||||||
Write-Host
|
CONOUT "`nError: product key not found."
|
||||||
Write-Host "Error: product key not found."
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($winbuild -GE 9200) {
|
if ($winbuild -GE 9200) {
|
||||||
@ -994,39 +1094,43 @@ if ($c0ff1ce15 -Or $ospp15) {
|
|||||||
|
|
||||||
$doMSG = 1
|
$doMSG = 1
|
||||||
|
|
||||||
if ($null -NE $c0ff1ce15) {
|
if ($c0ff1ce15)
|
||||||
|
{
|
||||||
echoOffice
|
echoOffice
|
||||||
GetID $wslp $o15App | foreach -EA 1 {
|
GetID $wslp $o15App | foreach -EA 1 {
|
||||||
GetResult $wslp $wsls $_
|
GetResult $wslp $wsls $_
|
||||||
Write-Host "$line3"
|
CONOUT "$line3"
|
||||||
if (!$All.IsPresent) {Write-Host}
|
& $noAll
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($null -NE $c0ff1ce14) {
|
if ($c0ff1ce14)
|
||||||
|
{
|
||||||
echoOffice
|
echoOffice
|
||||||
GetID $wslp $o14App | foreach -EA 1 {
|
GetID $wslp $o14App | foreach -EA 1 {
|
||||||
GetResult $wslp $wsls $_
|
GetResult $wslp $wsls $_
|
||||||
Write-Host "$line3"
|
CONOUT "$line3"
|
||||||
if (!$All.IsPresent) {Write-Host}
|
& $noAll
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($null -NE $ospp15) {
|
if ($ospp15)
|
||||||
|
{
|
||||||
echoOffice
|
echoOffice
|
||||||
GetID $oslp $o15App | foreach -EA 1 {
|
GetID $oslp $o15App | foreach -EA 1 {
|
||||||
GetResult $oslp $osls $_
|
GetResult $oslp $osls $_
|
||||||
Write-Host "$line3"
|
CONOUT "$line3"
|
||||||
if (!$All.IsPresent) {Write-Host}
|
& $noAll
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($null -NE $ospp14) {
|
if ($ospp14)
|
||||||
|
{
|
||||||
echoOffice
|
echoOffice
|
||||||
GetID $oslp $o14App | foreach -EA 1 {
|
GetID $oslp $o14App | foreach -EA 1 {
|
||||||
GetResult $oslp $osls $_
|
GetResult $oslp $osls $_
|
||||||
Write-Host "$line3"
|
CONOUT "$line3"
|
||||||
if (!$All.IsPresent) {Write-Host}
|
& $noAll
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
@set masver=2.9
|
@set masver=3.0
|
||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
|
|
||||||
@ -69,7 +69,7 @@ echo:
|
|||||||
echo Null service is not running, script may crash...
|
echo Null service is not running, script may crash...
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
echo Help - %mas%fix_service
|
echo Check this webpage for help - %mas%fix_service
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
ping 127.0.0.1 -n 20
|
ping 127.0.0.1 -n 20
|
||||||
@ -84,7 +84,7 @@ echo:
|
|||||||
echo Error - Script either has LF line ending issue or an empty line at the end of the script is missing.
|
echo Error - Script either has LF line ending issue or an empty line at the end of the script is missing.
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
echo Help - %mas%troubleshoot
|
echo Check this webpage for help - %mas%troubleshoot
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
ping 127.0.0.1 -n 20 >nul
|
ping 127.0.0.1 -n 20 >nul
|
||||||
@ -122,6 +122,16 @@ call :dk_setvar
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
if %winbuild% EQU 1 (
|
||||||
|
%eline%
|
||||||
|
echo Failed to detect Windows build number.
|
||||||
|
echo:
|
||||||
|
setlocal EnableDelayedExpansion
|
||||||
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
if %winbuild% LSS 7600 (
|
if %winbuild% LSS 7600 (
|
||||||
%nceline%
|
%nceline%
|
||||||
echo Unsupported OS version detected [%winbuild%].
|
echo Unsupported OS version detected [%winbuild%].
|
||||||
@ -161,33 +171,6 @@ goto done2
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:: Check PowerShell
|
|
||||||
|
|
||||||
REM :PStest: $ExecutionContext.SessionState.LanguageMode :PStest:
|
|
||||||
|
|
||||||
cmd /c "%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':PStest:\s*';iex ($f[1])"" | find /i "FullLanguage" %nul1% || (
|
|
||||||
%eline%
|
|
||||||
cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode""
|
|
||||||
echo:
|
|
||||||
cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode"" | find /i "FullLanguage" %nul1% && (
|
|
||||||
echo Failed to run Powershell command but Powershell is working.
|
|
||||||
echo:
|
|
||||||
cmd /c "%psc% ""$av = Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct; $n = @(); foreach ($i in $av) { if ($i.displayName -notlike '*windows*') { $n += $i.displayName } }; if ($n) { Write-Host ('Installed 3rd party Antivirus might be blocking the script - ' + ($n -join ', ')) -ForegroundColor White -BackgroundColor Blue }"""
|
|
||||||
echo:
|
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
|
||||||
) || (
|
|
||||||
echo PowerShell is not working. Aborting...
|
|
||||||
echo If you have applied restrictions on Powershell then undo those changes.
|
|
||||||
echo:
|
|
||||||
set fixes=%fixes% %mas%fix_powershell
|
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%fix_powershell"
|
|
||||||
)
|
|
||||||
goto done2
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Elevate script as admin and pass arguments and preventing loop
|
:: Elevate script as admin and pass arguments and preventing loop
|
||||||
|
|
||||||
%nul1% fltmc || (
|
%nul1% fltmc || (
|
||||||
@ -200,6 +183,58 @@ goto done2
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
:: Check PowerShell
|
||||||
|
|
||||||
|
::pstst $ExecutionContext.SessionState.LanguageMode :pstst
|
||||||
|
|
||||||
|
for /f "delims=" %%a in ('cmd /c "%psc% ""if ($PSVersionTable.PSEdition -ne 'Core') {$f=[io.file]::ReadAllText('!_batp!') -split ':pstst';iex ($f[1])}""" %nul6%') do (set tstresult=%%a)
|
||||||
|
|
||||||
|
if /i not "%tstresult%"=="FullLanguage" (
|
||||||
|
%eline%
|
||||||
|
echo: %tstresult%
|
||||||
|
cmd /c "%psc% $ExecutionContext.SessionState.LanguageMode"
|
||||||
|
|
||||||
|
REM check LanguageMode
|
||||||
|
|
||||||
|
cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode"" | findstr /i "ConstrainedLanguage RestrictedLanguage NoLanguage" %nul1% && (
|
||||||
|
echo FullLanguage mode not found in PowerShell. Aborting...
|
||||||
|
echo If you have applied restrictions on Powershell then undo those changes.
|
||||||
|
echo:
|
||||||
|
set fixes=%fixes% %mas%fix_powershell
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%fix_powershell"
|
||||||
|
goto done2
|
||||||
|
)
|
||||||
|
|
||||||
|
REM check Powershell core version
|
||||||
|
|
||||||
|
cmd /c "%psc% "$PSVersionTable.PSEdition"" | find /i "Core" %nul1% && (
|
||||||
|
echo Windows Powershell is needed for MAS but it seems to be replaced with Powershell core. Aborting...
|
||||||
|
goto done2
|
||||||
|
)
|
||||||
|
|
||||||
|
REM check for Mal-ware that may cause issues with Powershell
|
||||||
|
|
||||||
|
for /r "%ProgramFiles%\" %%f in (secureboot.exe) do if exist "%%f" (
|
||||||
|
echo "%%f"
|
||||||
|
echo Mal%blank%ware found, PowerShell is not working properly.
|
||||||
|
echo:
|
||||||
|
set fixes=%fixes% %mas%remove_mal%w%ware
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%remove_mal%w%ware"
|
||||||
|
goto done2
|
||||||
|
)
|
||||||
|
|
||||||
|
REM check antivirus and other errors
|
||||||
|
|
||||||
|
echo PowerShell is not working properly. Aborting...
|
||||||
|
cmd /c "%psc% ""$av = Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct; $n = @(); foreach ($i in $av) { if ($i.displayName -notlike '*windows*') { $n += $i.displayName } }; if ($n) { Write-Host ('Installed 3rd party Antivirus might be blocking the script - ' + ($n -join ', ')) -ForegroundColor White -BackgroundColor Blue }"""
|
||||||
|
echo:
|
||||||
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
|
goto done2
|
||||||
|
)
|
||||||
|
|
||||||
|
::========================================================================================================================================
|
||||||
|
|
||||||
:: Disable QuickEdit and launch from conhost.exe to avoid Terminal app
|
:: Disable QuickEdit and launch from conhost.exe to avoid Terminal app
|
||||||
|
|
||||||
if %winbuild% GEQ 17763 (
|
if %winbuild% GEQ 17763 (
|
||||||
@ -210,34 +245,33 @@ set terminal=
|
|||||||
|
|
||||||
:: Check if script is running in Terminal app
|
:: Check if script is running in Terminal app
|
||||||
|
|
||||||
set r1=$TB = [AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2, $False).DefineType(0);
|
|
||||||
set r2=%r1% [void]$TB.DefinePInvokeMethod('GetConsoleWindow', 'kernel32.dll', 22, 1, [IntPtr], @(), 1, 3).SetImplementationFlags(128);
|
|
||||||
set r3=%r2% [void]$TB.DefinePInvokeMethod('SendMessageW', 'user32.dll', 22, 1, [IntPtr], @([IntPtr], [UInt32], [IntPtr], [IntPtr]), 1, 3).SetImplementationFlags(128);
|
|
||||||
set d1=%r3% $hIcon = $TB.CreateType(); $hWnd = $hIcon::GetConsoleWindow();
|
|
||||||
set d2=%d1% echo $($hIcon::SendMessageW($hWnd, 127, 0, 0) -ne [IntPtr]::Zero);
|
|
||||||
|
|
||||||
if defined terminal (
|
if defined terminal (
|
||||||
%psc% "%d2%" %nul2% | find /i "True" %nul1% && set terminal=
|
set lines=0
|
||||||
|
for /f "skip=2 tokens=2 delims=: " %%A in ('mode con') do if "!lines!"=="0" set lines=%%A
|
||||||
|
if !lines! GEQ 100 set terminal=
|
||||||
)
|
)
|
||||||
|
|
||||||
if defined ps32onArm goto :skipQE
|
|
||||||
if %_unattended%==1 goto :skipQE
|
if %_unattended%==1 goto :skipQE
|
||||||
for %%# in (%_args%) do (if /i "%%#"=="-qedit" goto :skipQE)
|
for %%# in (%_args%) do (if /i "%%#"=="-qedit" goto :skipQE)
|
||||||
|
|
||||||
|
:: Relaunch to disable QuickEdit in the current session and use conhost.exe instead of the Terminal app
|
||||||
|
:: This code disables QuickEdit for the current cmd.exe session without making permanent registry changes
|
||||||
|
:: It is included because clicking on the script window can pause execution, causing confusion that the script has stopped due to an error
|
||||||
|
|
||||||
|
set resetQE=1
|
||||||
|
reg query HKCU\Console /v QuickEdit %nul2% | find /i "0x0" %nul1% && set resetQE=0
|
||||||
|
reg add HKCU\Console /v QuickEdit /t REG_DWORD /d 0 /f %nul1%
|
||||||
|
|
||||||
if defined terminal (
|
if defined terminal (
|
||||||
set "launchcmd=start conhost.exe %psc%"
|
start conhost.exe "!_batf!" %_args% -qedit
|
||||||
) else (
|
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
|
||||||
set "launchcmd=%psc%"
|
exit /b
|
||||||
|
) else if %resetQE% EQU 1 (
|
||||||
|
start cmd.exe /c ""!_batf!" %_args% -qedit"
|
||||||
|
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
|
||||||
|
exit /b
|
||||||
)
|
)
|
||||||
|
|
||||||
:: Disable QuickEdit in current session
|
|
||||||
|
|
||||||
set "d1=$t=[AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2, $False).DefineType(0);"
|
|
||||||
set "d2=$t.DefinePInvokeMethod('GetStdHandle', 'kernel32.dll', 22, 1, [IntPtr], @([Int32]), 1, 3).SetImplementationFlags(128);"
|
|
||||||
set "d3=$t.DefinePInvokeMethod('SetConsoleMode', 'kernel32.dll', 22, 1, [Boolean], @([IntPtr], [Int32]), 1, 3).SetImplementationFlags(128);"
|
|
||||||
set "d4=$k=$t.CreateType(); $b=$k::SetConsoleMode($k::GetStdHandle(-10), 0x0080);"
|
|
||||||
|
|
||||||
%launchcmd% "%d1% %d2% %d3% %d4% & cmd.exe '/c' '!_PSarg! -qedit'" && (exit /b) || (set terminal=1)
|
|
||||||
:skipQE
|
:skipQE
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
@ -246,9 +280,19 @@ set "d4=$k=$t.CreateType(); $b=$k::SetConsoleMode($k::GetStdHandle(-10), 0x0080)
|
|||||||
|
|
||||||
set -=
|
set -=
|
||||||
set old=
|
set old=
|
||||||
|
set pingp=
|
||||||
|
set upver=%masver:.=%
|
||||||
|
|
||||||
for /f "delims=[] tokens=2" %%# in ('ping -4 -n 1 updatecheck.mass%-%grave.dev') do (
|
for %%A in (
|
||||||
if not "%%#"=="" (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.69.%masver%" %nul1% || set old=1))
|
activ%-%ated.win
|
||||||
|
mass%-%grave.dev
|
||||||
|
) do if not defined pingp (
|
||||||
|
for /f "delims=[] tokens=2" %%B in ('ping -n 1 %%A') do (
|
||||||
|
if not "%%B"=="" (set old=1& set pingp=1)
|
||||||
|
for /f "delims=[] tokens=2" %%C in ('ping -n 1 updatecheck%upver%.%%A') do (
|
||||||
|
if not "%%C"=="" set old=
|
||||||
|
)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
if defined old (
|
if defined old (
|
||||||
@ -264,7 +308,7 @@ echo:
|
|||||||
call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :"
|
call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :"
|
||||||
choice /C:10 /N
|
choice /C:10 /N
|
||||||
if !errorlevel!==2 rem
|
if !errorlevel!==2 rem
|
||||||
if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b)
|
if !errorlevel!==1 (start %mas% & exit /b)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -305,6 +349,7 @@ set HWID_Activation.cmd=Activators\HWID_Activation.cmd
|
|||||||
set KMS38_Activation.cmd=Activators\KMS38_Activation.cmd
|
set KMS38_Activation.cmd=Activators\KMS38_Activation.cmd
|
||||||
set Online_KMS_Activation.cmd=Activators\Online_KMS_Activation.cmd
|
set Online_KMS_Activation.cmd=Activators\Online_KMS_Activation.cmd
|
||||||
set Ohook_Activation_AIO.cmd=Activators\Ohook_Activation_AIO.cmd
|
set Ohook_Activation_AIO.cmd=Activators\Ohook_Activation_AIO.cmd
|
||||||
|
set TSforge_Activation.cmd=Activators\TSforge_Activation.cmd
|
||||||
pushd "!_work!"
|
pushd "!_work!"
|
||||||
|
|
||||||
set _nofile=
|
set _nofile=
|
||||||
@ -313,6 +358,7 @@ for %%# in (
|
|||||||
%KMS38_Activation.cmd%
|
%KMS38_Activation.cmd%
|
||||||
%Online_KMS_Activation.cmd%
|
%Online_KMS_Activation.cmd%
|
||||||
%Ohook_Activation_AIO.cmd%
|
%Ohook_Activation_AIO.cmd%
|
||||||
|
%TSforge_Activation.cmd%
|
||||||
) do (
|
) do (
|
||||||
if not exist "%%#" set _nofile=1
|
if not exist "%%#" set _nofile=1
|
||||||
)
|
)
|
||||||
@ -338,36 +384,34 @@ echo:
|
|||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
echo: Extract $OEM$ folder on the desktop
|
echo: Extract $OEM$ folder on the desktop
|
||||||
echo: ________________________________________________________
|
echo: ____________________________________________________________
|
||||||
echo:
|
echo:
|
||||||
echo: [1] HWID
|
echo: [1] HWID [Windows]
|
||||||
echo: [2] Ohook
|
echo: [2] Ohook [Office]
|
||||||
echo: [3] KMS38
|
echo: [3] TSforge [Windows / ESU / Office]
|
||||||
echo: [4] Online KMS
|
echo: [4] KMS38 [Windows]
|
||||||
|
echo: [5] Online KMS [Windows / Office]
|
||||||
echo:
|
echo:
|
||||||
echo: [5] HWID ^(Windows^) ^+ Ohook ^(Office^)
|
echo: [6] HWID [Windows] ^+ Ohook [Office]
|
||||||
echo: [6] HWID ^(Windows^) ^+ Online KMS ^(Office^)
|
echo: [7] HWID [Windows] ^+ Ohook [Office] ^+ TSforge [ESU]
|
||||||
echo: [7] KMS38 ^(Windows^) ^+ Ohook ^(Office^)
|
echo: [8] TSforge [Windows] ^+ Online KMS [Office]
|
||||||
echo: [8] KMS38 ^(Windows^) ^+ Online KMS ^(Office^)
|
|
||||||
echo: [9] Online KMS ^(Windows^) ^+ Ohook ^(Office^)
|
|
||||||
echo:
|
echo:
|
||||||
call :dk_color2 %_White% " [R] " %_Green% "ReadMe"
|
call :dk_color2 %_White% " [R] " %_Green% "ReadMe"
|
||||||
echo: [0] Exit
|
echo: [0] Exit
|
||||||
echo: ________________________________________________________
|
echo: ____________________________________________________________
|
||||||
echo:
|
echo:
|
||||||
call :dk_color2 %_White% " " %_Green% "Choose a menu option using your keyboard :"
|
call :dk_color2 %_White% " " %_Green% "Choose a menu option using your keyboard :"
|
||||||
choice /C:123456789R0 /N
|
choice /C:12345678R0 /N
|
||||||
set _erl=%errorlevel%
|
set _erl=%errorlevel%
|
||||||
|
|
||||||
if %_erl%==11 exit /b
|
if %_erl%==10 exit /b
|
||||||
if %_erl%==10 start %mas%oem-folder &goto :Menu
|
if %_erl%==9 start %mas%oem-folder &goto :Menu
|
||||||
if %_erl%==9 goto:kms_ohook
|
if %_erl%==8 goto:tsforge_kms
|
||||||
if %_erl%==8 goto:kms38_kms
|
if %_erl%==7 goto:hwid_ohook_tsforge
|
||||||
if %_erl%==7 goto:kms38_ohook
|
if %_erl%==6 goto:hwid_ohook
|
||||||
if %_erl%==6 goto:hwid_kms
|
if %_erl%==5 goto:kms
|
||||||
if %_erl%==5 goto:hwid_ohook
|
if %_erl%==4 goto:kms38
|
||||||
if %_erl%==4 goto:kms
|
if %_erl%==3 goto:tsforge
|
||||||
if %_erl%==3 goto:kms38
|
|
||||||
if %_erl%==2 goto:ohook
|
if %_erl%==2 goto:ohook
|
||||||
if %_erl%==1 goto:hwid
|
if %_erl%==1 goto:hwid
|
||||||
goto :Menu
|
goto :Menu
|
||||||
@ -434,6 +478,36 @@ cd \
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
:tsforge
|
||||||
|
|
||||||
|
cls
|
||||||
|
md "!desktop!\$OEM$\$$\Setup\Scripts"
|
||||||
|
pushd "!_work!"
|
||||||
|
copy /y /b "%TSforge_Activation.cmd%" "!_dir!\TSforge_Activation.cmd" %nul%
|
||||||
|
popd
|
||||||
|
call :export tsforge_setup
|
||||||
|
|
||||||
|
set _error=
|
||||||
|
if not exist "!_dir!\TSforge_Activation.cmd" set _error=1
|
||||||
|
if not exist "!_dir!\SetupComplete.cmd" set _error=1
|
||||||
|
if defined _error goto errorfound
|
||||||
|
|
||||||
|
set oem=TSforge
|
||||||
|
goto done
|
||||||
|
|
||||||
|
:tsforge_setup:
|
||||||
|
@echo off
|
||||||
|
|
||||||
|
fltmc >nul || exit /b
|
||||||
|
|
||||||
|
call "%~dp0TSforge_Activation.cmd" /Z-WindowsESUOffice
|
||||||
|
|
||||||
|
cd \
|
||||||
|
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
||||||
|
:tsforge_setup:
|
||||||
|
|
||||||
|
::========================================================================================================================================
|
||||||
|
|
||||||
:kms38
|
:kms38
|
||||||
|
|
||||||
cls
|
cls
|
||||||
@ -532,26 +606,28 @@ cd \
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:hwid_kms
|
:hwid_ohook_tsforge
|
||||||
|
|
||||||
cls
|
cls
|
||||||
md "!desktop!\$OEM$\$$\Setup\Scripts"
|
md "!desktop!\$OEM$\$$\Setup\Scripts"
|
||||||
pushd "!_work!"
|
pushd "!_work!"
|
||||||
copy /y /b "%HWID_Activation.cmd%" "!_dir!\HWID_Activation.cmd" %nul%
|
copy /y /b "%HWID_Activation.cmd%" "!_dir!\HWID_Activation.cmd" %nul%
|
||||||
copy /y /b "%Online_KMS_Activation.cmd%" "!_dir!\Online_KMS_Activation.cmd" %nul%
|
copy /y /b "%Ohook_Activation_AIO.cmd%" "!_dir!\Ohook_Activation_AIO.cmd" %nul%
|
||||||
|
copy /y /b "%TSforge_Activation.cmd%" "!_dir!\TSforge_Activation.cmd" %nul%
|
||||||
popd
|
popd
|
||||||
call :export hwid_kms_setup
|
call :export hwid_ohook_tsforge_setup
|
||||||
|
|
||||||
set _error=
|
set _error=
|
||||||
if not exist "!_dir!\HWID_Activation.cmd" set _error=1
|
if not exist "!_dir!\HWID_Activation.cmd" set _error=1
|
||||||
if not exist "!_dir!\Online_KMS_Activation.cmd" set _error=1
|
if not exist "!_dir!\Ohook_Activation_AIO.cmd" set _error=1
|
||||||
|
if not exist "!_dir!\TSforge_Activation.cmd" set _error=1
|
||||||
if not exist "!_dir!\SetupComplete.cmd" set _error=1
|
if not exist "!_dir!\SetupComplete.cmd" set _error=1
|
||||||
if defined _error goto errorfound
|
if defined _error goto errorfound
|
||||||
|
|
||||||
set oem=HWID [Windows] + Online KMS [Office]
|
set oem=HWID [Windows] + Ohook [Office] + TSforge [ESU]
|
||||||
goto done
|
goto done
|
||||||
|
|
||||||
:hwid_kms_setup:
|
:hwid_ohook_tsforge_setup:
|
||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
fltmc >nul || exit /b
|
fltmc >nul || exit /b
|
||||||
@ -560,80 +636,46 @@ setlocal
|
|||||||
call "%~dp0HWID_Activation.cmd" /HWID
|
call "%~dp0HWID_Activation.cmd" /HWID
|
||||||
endlocal
|
endlocal
|
||||||
|
|
||||||
setlocal
|
|
||||||
call "%~dp0Online_KMS_Activation.cmd" /K-Office
|
|
||||||
endlocal
|
|
||||||
|
|
||||||
cd \
|
|
||||||
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
|
||||||
:hwid_kms_setup:
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:kms38_ohook
|
|
||||||
|
|
||||||
cls
|
|
||||||
md "!desktop!\$OEM$\$$\Setup\Scripts"
|
|
||||||
pushd "!_work!"
|
|
||||||
copy /y /b "%KMS38_Activation.cmd%" "!_dir!\KMS38_Activation.cmd" %nul%
|
|
||||||
copy /y /b "%Ohook_Activation_AIO.cmd%" "!_dir!\Ohook_Activation_AIO.cmd" %nul%
|
|
||||||
popd
|
|
||||||
call :export kms38_ohook_setup
|
|
||||||
|
|
||||||
set _error=
|
|
||||||
if not exist "!_dir!\KMS38_Activation.cmd" set _error=1
|
|
||||||
if not exist "!_dir!\Ohook_Activation_AIO.cmd" set _error=1
|
|
||||||
if not exist "!_dir!\SetupComplete.cmd" set _error=1
|
|
||||||
if defined _error goto errorfound
|
|
||||||
|
|
||||||
set oem=KMS38 [Windows] + Ohook [Office]
|
|
||||||
goto done
|
|
||||||
|
|
||||||
:kms38_ohook_setup:
|
|
||||||
@echo off
|
|
||||||
|
|
||||||
fltmc >nul || exit /b
|
|
||||||
|
|
||||||
setlocal
|
|
||||||
call "%~dp0KMS38_Activation.cmd" /KMS38
|
|
||||||
endlocal
|
|
||||||
|
|
||||||
setlocal
|
setlocal
|
||||||
call "%~dp0Ohook_Activation_AIO.cmd" /Ohook
|
call "%~dp0Ohook_Activation_AIO.cmd" /Ohook
|
||||||
endlocal
|
endlocal
|
||||||
|
|
||||||
|
setlocal
|
||||||
|
call "%~dp0TSforge_Activation.cmd" /Z-ESU
|
||||||
|
endlocal
|
||||||
|
|
||||||
cd \
|
cd \
|
||||||
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
||||||
:kms38_ohook_setup:
|
:hwid_ohook_tsforge_setup:
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:kms38_kms
|
:tsforge_kms
|
||||||
|
|
||||||
cls
|
cls
|
||||||
md "!desktop!\$OEM$\$$\Setup\Scripts"
|
md "!desktop!\$OEM$\$$\Setup\Scripts"
|
||||||
pushd "!_work!"
|
pushd "!_work!"
|
||||||
copy /y /b "%KMS38_Activation.cmd%" "!_dir!\KMS38_Activation.cmd" %nul%
|
copy /y /b "%TSforge_Activation.cmd%" "!_dir!\TSforge_Activation.cmd" %nul%
|
||||||
copy /y /b "%Online_KMS_Activation.cmd%" "!_dir!\Online_KMS_Activation.cmd" %nul%
|
copy /y /b "%Online_KMS_Activation.cmd%" "!_dir!\Online_KMS_Activation.cmd" %nul%
|
||||||
popd
|
popd
|
||||||
call :export kms38_kms_setup
|
call :export tsforge_kms_setup
|
||||||
|
|
||||||
set _error=
|
set _error=
|
||||||
if not exist "!_dir!\KMS38_Activation.cmd" set _error=1
|
if not exist "!_dir!\TSforge_Activation.cmd" set _error=1
|
||||||
if not exist "!_dir!\Online_KMS_Activation.cmd" set _error=1
|
if not exist "!_dir!\Online_KMS_Activation.cmd" set _error=1
|
||||||
if not exist "!_dir!\SetupComplete.cmd" set _error=1
|
if not exist "!_dir!\SetupComplete.cmd" set _error=1
|
||||||
if defined _error goto errorfound
|
if defined _error goto errorfound
|
||||||
|
|
||||||
set oem=KMS38 [Windows] + Online KMS [Office]
|
set oem=TSforge [Windows] + Online KMS [Office]
|
||||||
goto done
|
goto done
|
||||||
|
|
||||||
:kms38_kms_setup:
|
:tsforge_kms_setup:
|
||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
fltmc >nul || exit /b
|
fltmc >nul || exit /b
|
||||||
|
|
||||||
setlocal
|
setlocal
|
||||||
call "%~dp0KMS38_Activation.cmd" /KMS38
|
call "%~dp0TSforge_Activation.cmd" /Z-Windows
|
||||||
endlocal
|
endlocal
|
||||||
|
|
||||||
setlocal
|
setlocal
|
||||||
@ -642,45 +684,7 @@ endlocal
|
|||||||
|
|
||||||
cd \
|
cd \
|
||||||
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
||||||
:kms38_kms_setup:
|
:tsforge_kms_setup:
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:kms_ohook
|
|
||||||
|
|
||||||
cls
|
|
||||||
md "!desktop!\$OEM$\$$\Setup\Scripts"
|
|
||||||
pushd "!_work!"
|
|
||||||
copy /y /b "%Online_KMS_Activation.cmd%" "!_dir!\Online_KMS_Activation.cmd" %nul%
|
|
||||||
copy /y /b "%Ohook_Activation_AIO.cmd%" "!_dir!\Ohook_Activation_AIO.cmd" %nul%
|
|
||||||
popd
|
|
||||||
call :export kms_ohook_setup
|
|
||||||
|
|
||||||
set _error=
|
|
||||||
if not exist "!_dir!\Online_KMS_Activation.cmd" set _error=1
|
|
||||||
if not exist "!_dir!\Ohook_Activation_AIO.cmd" set _error=1
|
|
||||||
if not exist "!_dir!\SetupComplete.cmd" set _error=1
|
|
||||||
if defined _error goto errorfound
|
|
||||||
|
|
||||||
set oem=Online KMS [Windows] + Ohook [Office]
|
|
||||||
goto done
|
|
||||||
|
|
||||||
:kms_ohook_setup:
|
|
||||||
@echo off
|
|
||||||
|
|
||||||
fltmc >nul || exit /b
|
|
||||||
|
|
||||||
setlocal
|
|
||||||
call "%~dp0Online_KMS_Activation.cmd" /K-Windows
|
|
||||||
endlocal
|
|
||||||
|
|
||||||
setlocal
|
|
||||||
call "%~dp0Ohook_Activation_AIO.cmd" /Ohook
|
|
||||||
endlocal
|
|
||||||
|
|
||||||
cd \
|
|
||||||
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
|
||||||
:kms_ohook_setup:
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
@ -698,7 +702,7 @@ call :dk_color %Blue% "%oem%"
|
|||||||
call :dk_color %Green% "$OEM$ folder was successfully created on your Desktop."
|
call :dk_color %Green% "$OEM$ folder was successfully created on your Desktop."
|
||||||
echo "%oem%" | find /i "38" %nul% && (
|
echo "%oem%" | find /i "38" %nul% && (
|
||||||
echo:
|
echo:
|
||||||
echo To KMS38 activate Server Cor/Acor editions ^(No GUI Versions^),
|
echo To KMS38 activate Server Cor/Acor editions [No GUI Versions],
|
||||||
echo Check this page %mas%oem-folder
|
echo Check this page %mas%oem-folder
|
||||||
)
|
)
|
||||||
echo ______________________________________________________________
|
echo ______________________________________________________________
|
||||||
@ -728,7 +732,7 @@ exit /b
|
|||||||
|
|
||||||
:dk_setvar
|
:dk_setvar
|
||||||
|
|
||||||
set psc=powershell.exe
|
set psc=powershell.exe -nop -c
|
||||||
set winbuild=1
|
set winbuild=1
|
||||||
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
|
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
@set masver=2.9
|
@set masver=3.0
|
||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
|
|
||||||
@ -69,7 +69,7 @@ echo:
|
|||||||
echo Null service is not running, script may crash...
|
echo Null service is not running, script may crash...
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
echo Help - %mas%fix_service
|
echo Check this webpage for help - %mas%fix_service
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
ping 127.0.0.1 -n 20
|
ping 127.0.0.1 -n 20
|
||||||
@ -84,7 +84,7 @@ echo:
|
|||||||
echo Error - Script either has LF line ending issue or an empty line at the end of the script is missing.
|
echo Error - Script either has LF line ending issue or an empty line at the end of the script is missing.
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
echo Help - %mas%troubleshoot
|
echo Check this webpage for help - %mas%troubleshoot
|
||||||
echo:
|
echo:
|
||||||
echo:
|
echo:
|
||||||
ping 127.0.0.1 -n 20 >nul
|
ping 127.0.0.1 -n 20 >nul
|
||||||
@ -123,6 +123,16 @@ set "line=______________________________________________________________________
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
if %winbuild% EQU 1 (
|
||||||
|
%eline%
|
||||||
|
echo Failed to detect Windows build number.
|
||||||
|
echo:
|
||||||
|
setlocal EnableDelayedExpansion
|
||||||
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
if %winbuild% LSS 7600 (
|
if %winbuild% LSS 7600 (
|
||||||
%nceline%
|
%nceline%
|
||||||
echo Unsupported OS version detected [%winbuild%].
|
echo Unsupported OS version detected [%winbuild%].
|
||||||
@ -162,33 +172,6 @@ goto dk_done
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
:: Check PowerShell
|
|
||||||
|
|
||||||
REM :PStest: $ExecutionContext.SessionState.LanguageMode :PStest:
|
|
||||||
|
|
||||||
cmd /c "%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':PStest:\s*';iex ($f[1])"" | find /i "FullLanguage" %nul1% || (
|
|
||||||
%eline%
|
|
||||||
cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode""
|
|
||||||
echo:
|
|
||||||
cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode"" | find /i "FullLanguage" %nul1% && (
|
|
||||||
echo Failed to run Powershell command but Powershell is working.
|
|
||||||
echo:
|
|
||||||
cmd /c "%psc% ""$av = Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct; $n = @(); foreach ($i in $av) { if ($i.displayName -notlike '*windows*') { $n += $i.displayName } }; if ($n) { Write-Host ('Installed 3rd party Antivirus might be blocking the script - ' + ($n -join ', ')) -ForegroundColor White -BackgroundColor Blue }"""
|
|
||||||
echo:
|
|
||||||
set fixes=%fixes% %mas%troubleshoot
|
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot"
|
|
||||||
) || (
|
|
||||||
echo PowerShell is not working. Aborting...
|
|
||||||
echo If you have applied restrictions on Powershell then undo those changes.
|
|
||||||
echo:
|
|
||||||
set fixes=%fixes% %mas%fix_powershell
|
|
||||||
call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%fix_powershell"
|
|
||||||
)
|
|
||||||
goto dk_done
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Elevate script as admin and pass arguments and preventing loop
|
:: Elevate script as admin and pass arguments and preventing loop
|
||||||
|
|
||||||
%nul1% fltmc || (
|
%nul1% fltmc || (
|
||||||
@ -201,6 +184,58 @@ goto dk_done
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
:: Check PowerShell
|
||||||
|
|
||||||
|
::pstst $ExecutionContext.SessionState.LanguageMode :pstst
|
||||||
|
|
||||||
|
for /f "delims=" %%a in ('cmd /c "%psc% ""if ($PSVersionTable.PSEdition -ne 'Core') {$f=[io.file]::ReadAllText('!_batp!') -split ':pstst';iex ($f[1])}""" %nul6%') do (set tstresult=%%a)
|
||||||
|
|
||||||
|
if /i not "%tstresult%"=="FullLanguage" (
|
||||||
|
%eline%
|
||||||
|
echo: %tstresult%
|
||||||
|
cmd /c "%psc% $ExecutionContext.SessionState.LanguageMode"
|
||||||
|
|
||||||
|
REM check LanguageMode
|
||||||
|
|
||||||
|
cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode"" | findstr /i "ConstrainedLanguage RestrictedLanguage NoLanguage" %nul1% && (
|
||||||
|
echo FullLanguage mode not found in PowerShell. Aborting...
|
||||||
|
echo If you have applied restrictions on Powershell then undo those changes.
|
||||||
|
echo:
|
||||||
|
set fixes=%fixes% %mas%fix_powershell
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%fix_powershell"
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
|
REM check Powershell core version
|
||||||
|
|
||||||
|
cmd /c "%psc% "$PSVersionTable.PSEdition"" | find /i "Core" %nul1% && (
|
||||||
|
echo Windows Powershell is needed for MAS but it seems to be replaced with Powershell core. Aborting...
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
|
REM check for Mal-ware that may cause issues with Powershell
|
||||||
|
|
||||||
|
for /r "%ProgramFiles%\" %%f in (secureboot.exe) do if exist "%%f" (
|
||||||
|
echo "%%f"
|
||||||
|
echo Mal%blank%ware found, PowerShell is not working properly.
|
||||||
|
echo:
|
||||||
|
set fixes=%fixes% %mas%remove_mal%w%ware
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%remove_mal%w%ware"
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
|
REM check antivirus and other errors
|
||||||
|
|
||||||
|
echo PowerShell is not working properly. Aborting...
|
||||||
|
cmd /c "%psc% ""$av = Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct; $n = @(); foreach ($i in $av) { if ($i.displayName -notlike '*windows*') { $n += $i.displayName } }; if ($n) { Write-Host ('Installed 3rd party Antivirus might be blocking the script - ' + ($n -join ', ')) -ForegroundColor White -BackgroundColor Blue }"""
|
||||||
|
echo:
|
||||||
|
set fixes=%fixes% %mas%troubleshoot
|
||||||
|
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%troubleshoot"
|
||||||
|
goto dk_done
|
||||||
|
)
|
||||||
|
|
||||||
|
::========================================================================================================================================
|
||||||
|
|
||||||
:: Disable QuickEdit and launch from conhost.exe to avoid Terminal app
|
:: Disable QuickEdit and launch from conhost.exe to avoid Terminal app
|
||||||
|
|
||||||
if %winbuild% GEQ 17763 (
|
if %winbuild% GEQ 17763 (
|
||||||
@ -211,34 +246,33 @@ set terminal=
|
|||||||
|
|
||||||
:: Check if script is running in Terminal app
|
:: Check if script is running in Terminal app
|
||||||
|
|
||||||
set r1=$TB = [AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2, $False).DefineType(0);
|
|
||||||
set r2=%r1% [void]$TB.DefinePInvokeMethod('GetConsoleWindow', 'kernel32.dll', 22, 1, [IntPtr], @(), 1, 3).SetImplementationFlags(128);
|
|
||||||
set r3=%r2% [void]$TB.DefinePInvokeMethod('SendMessageW', 'user32.dll', 22, 1, [IntPtr], @([IntPtr], [UInt32], [IntPtr], [IntPtr]), 1, 3).SetImplementationFlags(128);
|
|
||||||
set d1=%r3% $hIcon = $TB.CreateType(); $hWnd = $hIcon::GetConsoleWindow();
|
|
||||||
set d2=%d1% echo $($hIcon::SendMessageW($hWnd, 127, 0, 0) -ne [IntPtr]::Zero);
|
|
||||||
|
|
||||||
if defined terminal (
|
if defined terminal (
|
||||||
%psc% "%d2%" %nul2% | find /i "True" %nul1% && set terminal=
|
set lines=0
|
||||||
|
for /f "skip=2 tokens=2 delims=: " %%A in ('mode con') do if "!lines!"=="0" set lines=%%A
|
||||||
|
if !lines! GEQ 100 set terminal=
|
||||||
)
|
)
|
||||||
|
|
||||||
if defined ps32onArm goto :skipQE
|
|
||||||
if %_unattended%==1 goto :skipQE
|
if %_unattended%==1 goto :skipQE
|
||||||
for %%# in (%_args%) do (if /i "%%#"=="-qedit" goto :skipQE)
|
for %%# in (%_args%) do (if /i "%%#"=="-qedit" goto :skipQE)
|
||||||
|
|
||||||
|
:: Relaunch to disable QuickEdit in the current session and use conhost.exe instead of the Terminal app
|
||||||
|
:: This code disables QuickEdit for the current cmd.exe session without making permanent registry changes
|
||||||
|
:: It is included because clicking on the script window can pause execution, causing confusion that the script has stopped due to an error
|
||||||
|
|
||||||
|
set resetQE=1
|
||||||
|
reg query HKCU\Console /v QuickEdit %nul2% | find /i "0x0" %nul1% && set resetQE=0
|
||||||
|
reg add HKCU\Console /v QuickEdit /t REG_DWORD /d 0 /f %nul1%
|
||||||
|
|
||||||
if defined terminal (
|
if defined terminal (
|
||||||
set "launchcmd=start conhost.exe %psc%"
|
start conhost.exe "!_batf!" %_args% -qedit
|
||||||
) else (
|
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
|
||||||
set "launchcmd=%psc%"
|
exit /b
|
||||||
|
) else if %resetQE% EQU 1 (
|
||||||
|
start cmd.exe /c ""!_batf!" %_args% -qedit"
|
||||||
|
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
|
||||||
|
exit /b
|
||||||
)
|
)
|
||||||
|
|
||||||
:: Disable QuickEdit in current session
|
|
||||||
|
|
||||||
set "d1=$t=[AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2, $False).DefineType(0);"
|
|
||||||
set "d2=$t.DefinePInvokeMethod('GetStdHandle', 'kernel32.dll', 22, 1, [IntPtr], @([Int32]), 1, 3).SetImplementationFlags(128);"
|
|
||||||
set "d3=$t.DefinePInvokeMethod('SetConsoleMode', 'kernel32.dll', 22, 1, [Boolean], @([IntPtr], [Int32]), 1, 3).SetImplementationFlags(128);"
|
|
||||||
set "d4=$k=$t.CreateType(); $b=$k::SetConsoleMode($k::GetStdHandle(-10), 0x0080);"
|
|
||||||
|
|
||||||
%launchcmd% "%d1% %d2% %d3% %d4% & cmd.exe '/c' '!_PSarg! -qedit'" && (exit /b) || (set terminal=1)
|
|
||||||
:skipQE
|
:skipQE
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
@ -247,9 +281,19 @@ set "d4=$k=$t.CreateType(); $b=$k::SetConsoleMode($k::GetStdHandle(-10), 0x0080)
|
|||||||
|
|
||||||
set -=
|
set -=
|
||||||
set old=
|
set old=
|
||||||
|
set pingp=
|
||||||
|
set upver=%masver:.=%
|
||||||
|
|
||||||
for /f "delims=[] tokens=2" %%# in ('ping -4 -n 1 updatecheck.mass%-%grave.dev') do (
|
for %%A in (
|
||||||
if not "%%#"=="" (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.69.%masver%" %nul1% || set old=1))
|
activ%-%ated.win
|
||||||
|
mass%-%grave.dev
|
||||||
|
) do if not defined pingp (
|
||||||
|
for /f "delims=[] tokens=2" %%B in ('ping -n 1 %%A') do (
|
||||||
|
if not "%%B"=="" (set old=1& set pingp=1)
|
||||||
|
for /f "delims=[] tokens=2" %%C in ('ping -n 1 updatecheck%upver%.%%A') do (
|
||||||
|
if not "%%C"=="" set old=
|
||||||
|
)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
if defined old (
|
if defined old (
|
||||||
@ -265,7 +309,7 @@ echo:
|
|||||||
call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :"
|
call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :"
|
||||||
choice /C:10 /N
|
choice /C:10 /N
|
||||||
if !errorlevel!==2 rem
|
if !errorlevel!==2 rem
|
||||||
if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b)
|
if !errorlevel!==1 (start %mas% & exit /b)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1425,7 +1469,7 @@ exit /b
|
|||||||
|
|
||||||
:dk_setvar
|
:dk_setvar
|
||||||
|
|
||||||
set psc=powershell.exe
|
set psc=powershell.exe -nop -c
|
||||||
set winbuild=1
|
set winbuild=1
|
||||||
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
|
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
|
||||||
|
|
||||||
|
27
README.md
27
README.md
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
<h1 align="center">Microsoft Activation Scripts (MAS)</h1>
|
<h1 align="center">Microsoft Activation Scripts (MAS)</h1>
|
||||||
|
|
||||||
<p align="center">Open-source Windows and Office activator featuring HWID, Ohook, KMS38, and Online KMS activation methods, along with advanced troubleshooting.</p>
|
<p align="center">Open-source Windows and Office activator featuring HWID, Ohook, TSforge, KMS38, and Online KMS activation methods, along with advanced troubleshooting.</p>
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
@ -15,19 +15,12 @@
|
|||||||
```
|
```
|
||||||
irm https://get.activated.win | iex
|
irm https://get.activated.win | iex
|
||||||
```
|
```
|
||||||
3. You will see the activation options. Choose (1) HWID for Windows activation. Choose (2) Ohook for Office activation.
|
Alternatively, you can use the following (It will be deprecated in the future.)
|
||||||
4. That's all.
|
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary>More options</summary>
|
|
||||||
|
|
||||||
- Alternatively, you can use the following (It will be deprecated in the future.)
|
|
||||||
```
|
```
|
||||||
irm https://massgrave.dev/get | iex
|
irm https://massgrave.dev/get | iex
|
||||||
```
|
```
|
||||||
- The URL `get.activated.win` might be blocked by some DNS services because it is a new domain.
|
3. You will see the activation options. Choose (1) HWID for Windows activation. Choose (2) Ohook for Office activation.
|
||||||
|
4. That's all.
|
||||||
</details>
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -50,6 +43,14 @@ or
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
### Not working ❓
|
||||||
|
|
||||||
|
- If you are **unable to launch MAS** using the PowerShell method, please refer to **Method 2** listed above.
|
||||||
|
- If MAS is launched and the script shows any errors, check for any troubleshooting steps mentioned in blue color and try to follow those.
|
||||||
|
- If you have any issues, please feel free to reach out to us [here](https://massgrave.dev/troubleshoot).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
>
|
>
|
||||||
> - The IRM command in PowerShell downloads a script from a specified URL, and the IEX command executes it.
|
> - The IRM command in PowerShell downloads a script from a specified URL, and the IEX command executes it.
|
||||||
@ -61,8 +62,8 @@ or
|
|||||||
To run the scripts in unattended mode, check [here](https://massgrave.dev/command_line_switches).
|
To run the scripts in unattended mode, check [here](https://massgrave.dev/command_line_switches).
|
||||||
|
|
||||||
```
|
```
|
||||||
Latest Version: 2.9
|
Latest Version: 3.0
|
||||||
Release date: 20-Dec-2024
|
Release date: 14-Feb-2025
|
||||||
```
|
```
|
||||||
|
|
||||||
### [Troubleshooting / Help](https://massgrave.dev/troubleshoot)
|
### [Troubleshooting / Help](https://massgrave.dev/troubleshoot)
|
||||||
|
Reference in New Issue
Block a user