mirror of
https://github.com/massgravel/Microsoft-Activation-Scripts.git
synced 2024-12-29 11:06:14 +00:00
no message
This commit is contained in:
parent
0a0db38cea
commit
c76fe2fbd6
3
.gitattributes
vendored
3
.gitattributes
vendored
|
@ -1,3 +0,0 @@
|
||||||
* text=auto
|
|
||||||
*.cmd text eol=crlf
|
|
||||||
*.html text eol=crlf
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,3 +0,0 @@
|
||||||
<html>
|
|
||||||
<meta http-equiv="refresh" content="0; url=https://windowsaddict.ml/readme-mas-root-folder.html">
|
|
||||||
</html>
|
|
|
@ -1,3 +0,0 @@
|
||||||
<html>
|
|
||||||
<meta http-equiv="refresh" content="0; url=https://windowsaddict.ml/readme-activations-summary.html">
|
|
||||||
</html>
|
|
|
@ -1,209 +0,0 @@
|
||||||
@setlocal DisableDelayedExpansion
|
|
||||||
@echo off
|
|
||||||
@cls
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
:: Check-Activation-Status-vbs.cmd
|
|
||||||
:: Written by @abbodi1406
|
|
||||||
:: forums.mydigitallife.net/posts/838808
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
set "_cmdf=%~f0"
|
|
||||||
if exist "%SystemRoot%\Sysnative\cmd.exe" (
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
start %SystemRoot%\Sysnative\cmd.exe /c ""!_cmdf!" "
|
|
||||||
exit /b
|
|
||||||
)
|
|
||||||
if exist "%SystemRoot%\SysArm32\cmd.exe" if /i %PROCESSOR_ARCHITECTURE%==AMD64 (
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
start %SystemRoot%\SysArm32\cmd.exe /c ""!_cmdf!" "
|
|
||||||
exit /b
|
|
||||||
)
|
|
||||||
color 07
|
|
||||||
title Check Activation Status [vbs]
|
|
||||||
set "SysPath=%SystemRoot%\System32"
|
|
||||||
if exist "%SystemRoot%\Sysnative\reg.exe" (set "SysPath=%SystemRoot%\Sysnative")
|
|
||||||
set "Path=%SysPath%;%SystemRoot%;%SysPath%\Wbem;%SysPath%\WindowsPowerShell\v1.0\"
|
|
||||||
set "_bit=64"
|
|
||||||
set "_wow=1"
|
|
||||||
if /i "%PROCESSOR_ARCHITECTURE%"=="x86" if "%PROCESSOR_ARCHITEW6432%"=="" set "_wow=0"&set "_bit=32"
|
|
||||||
set "_utemp=%TEMP%"
|
|
||||||
set "line2=************************************************************"
|
|
||||||
set "line3=____________________________________________________________"
|
|
||||||
set _sO16vbs=0
|
|
||||||
set _sO15vbs=0
|
|
||||||
if exist "%ProgramFiles%\Microsoft Office\Office15\ospp.vbs" (
|
|
||||||
set _sO15vbs=1
|
|
||||||
) else if exist "%ProgramW6432%\Microsoft Office\Office15\ospp.vbs" (
|
|
||||||
set _sO15vbs=1
|
|
||||||
) else if exist "%ProgramFiles(x86)%\Microsoft Office\Office15\ospp.vbs" (
|
|
||||||
set _sO15vbs=1
|
|
||||||
)
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
echo %line2%
|
|
||||||
echo *** Windows Status ***
|
|
||||||
echo %line2%
|
|
||||||
pushd "!_utemp!"
|
|
||||||
copy /y %SystemRoot%\System32\slmgr.vbs . >nul 2>&1
|
|
||||||
net start sppsvc /y >nul 2>&1
|
|
||||||
cscript //nologo slmgr.vbs /dli || (echo Error executing slmgr.vbs&del /f /q slmgr.vbs&popd&goto :casVend)
|
|
||||||
cscript //nologo slmgr.vbs /xpr
|
|
||||||
del /f /q slmgr.vbs >nul 2>&1
|
|
||||||
popd
|
|
||||||
echo %line3%
|
|
||||||
|
|
||||||
:casVo16
|
|
||||||
set office=
|
|
||||||
for /f "skip=2 tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\Microsoft\Office\16.0\Common\InstallRoot /v Path" 2^>nul') do (set "office=%%b")
|
|
||||||
if exist "!office!\ospp.vbs" (
|
|
||||||
set _sO16vbs=1
|
|
||||||
echo.
|
|
||||||
echo %line2%
|
|
||||||
if %_sO15vbs% EQU 0 (
|
|
||||||
echo *** Office 2016 %_bit%-bit Status ***
|
|
||||||
) else (
|
|
||||||
echo *** Office 2013/2016 Status ***
|
|
||||||
)
|
|
||||||
echo %line2%
|
|
||||||
cscript //nologo "!office!\ospp.vbs" /dstatus
|
|
||||||
)
|
|
||||||
if %_wow%==0 goto :casVo13
|
|
||||||
set office=
|
|
||||||
for /f "skip=2 tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\16.0\Common\InstallRoot /v Path" 2^>nul') do (set "office=%%b")
|
|
||||||
if exist "!office!\ospp.vbs" (
|
|
||||||
set _sO16vbs=1
|
|
||||||
echo.
|
|
||||||
echo %line2%
|
|
||||||
if %_sO15vbs% EQU 0 (
|
|
||||||
echo *** Office 2016 32-bit Status ***
|
|
||||||
) else (
|
|
||||||
echo *** Office 2013/2016 Status ***
|
|
||||||
)
|
|
||||||
echo %line2%
|
|
||||||
cscript //nologo "!office!\ospp.vbs" /dstatus
|
|
||||||
)
|
|
||||||
|
|
||||||
:casVo13
|
|
||||||
if %_sO16vbs% EQU 1 goto :casVo10
|
|
||||||
set office=
|
|
||||||
for /f "skip=2 tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\Microsoft\Office\15.0\Common\InstallRoot /v Path" 2^>nul') do (set "office=%%b")
|
|
||||||
if exist "!office!\ospp.vbs" (
|
|
||||||
echo.
|
|
||||||
echo %line2%
|
|
||||||
echo *** Office 2013 %_bit%-bit Status ***
|
|
||||||
echo %line2%
|
|
||||||
cscript //nologo "!office!\ospp.vbs" /dstatus
|
|
||||||
)
|
|
||||||
if %_wow%==0 goto :casVo10
|
|
||||||
set office=
|
|
||||||
for /f "skip=2 tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\15.0\Common\InstallRoot /v Path" 2^>nul') do (set "office=%%b")
|
|
||||||
if exist "!office!\ospp.vbs" (
|
|
||||||
echo.
|
|
||||||
echo %line2%
|
|
||||||
echo *** Office 2013 32-bit Status ***
|
|
||||||
echo %line2%
|
|
||||||
cscript //nologo "!office!\ospp.vbs" /dstatus
|
|
||||||
)
|
|
||||||
|
|
||||||
:casVo10
|
|
||||||
set office=
|
|
||||||
for /f "skip=2 tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\Microsoft\Office\14.0\Common\InstallRoot /v Path" 2^>nul') do (set "office=%%b")
|
|
||||||
if exist "!office!\ospp.vbs" (
|
|
||||||
echo.
|
|
||||||
echo %line2%
|
|
||||||
echo *** Office 2010 %_bit%-bit Status ***
|
|
||||||
echo %line2%
|
|
||||||
cscript //nologo "!office!\ospp.vbs" /dstatus
|
|
||||||
)
|
|
||||||
if %_wow%==0 goto :casVc16
|
|
||||||
set office=
|
|
||||||
for /f "skip=2 tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Common\InstallRoot /v Path" 2^>nul') do (set "office=%%b")
|
|
||||||
if exist "!office!\ospp.vbs" (
|
|
||||||
echo.
|
|
||||||
echo %line2%
|
|
||||||
echo *** Office 2010 32-bit Status ***
|
|
||||||
echo %line2%
|
|
||||||
cscript //nologo "!office!\ospp.vbs" /dstatus
|
|
||||||
)
|
|
||||||
|
|
||||||
:casVc16
|
|
||||||
reg query HKLM\SOFTWARE\Microsoft\Office\ClickToRun /v InstallPath >nul 2>&1 || (
|
|
||||||
reg query HKLM\SOFTWARE\WOW6432Node\Microsoft\Office\ClickToRun /v InstallPath >nul 2>&1 || goto :casVc13
|
|
||||||
)
|
|
||||||
set office=
|
|
||||||
for /f "skip=2 tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\Microsoft\Office\ClickToRun /v InstallPath" 2^>nul') do (set "office=%%b\Office16")
|
|
||||||
if exist "!office!\ospp.vbs" (
|
|
||||||
set _sO16vbs=1
|
|
||||||
echo.
|
|
||||||
echo %line2%
|
|
||||||
if %_sO15vbs% EQU 0 (
|
|
||||||
echo *** Office 2016-2021 C2R Status ***
|
|
||||||
) else (
|
|
||||||
echo *** Office 2013-2021 Status ***
|
|
||||||
)
|
|
||||||
echo %line2%
|
|
||||||
cscript //nologo "!office!\ospp.vbs" /dstatus
|
|
||||||
)
|
|
||||||
if %_wow%==0 goto :casVc13
|
|
||||||
set office=
|
|
||||||
for /f "skip=2 tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\WOW6432Node\Microsoft\Office\ClickToRun /v InstallPath" 2^>nul') do (set "office=%%b\Office16")
|
|
||||||
if exist "!office!\ospp.vbs" (
|
|
||||||
set _sO16vbs=1
|
|
||||||
echo.
|
|
||||||
echo %line2%
|
|
||||||
if %_sO15vbs% EQU 0 (
|
|
||||||
echo *** Office 2016-2021 C2R Status ***
|
|
||||||
) else (
|
|
||||||
echo *** Office 2013-2021 Status ***
|
|
||||||
)
|
|
||||||
echo %line2%
|
|
||||||
cscript //nologo "!office!\ospp.vbs" /dstatus
|
|
||||||
)
|
|
||||||
|
|
||||||
:casVc13
|
|
||||||
if %_sO16vbs% EQU 1 goto :casVc10
|
|
||||||
reg query HKLM\SOFTWARE\Microsoft\Office\15.0\ClickToRun /v InstallPath >nul 2>&1 || (
|
|
||||||
reg query HKLM\SOFTWARE\WOW6432Node\Microsoft\Office\15.0\ClickToRun /v InstallPath >nul 2>&1 || goto :casVc10
|
|
||||||
)
|
|
||||||
set office=
|
|
||||||
if exist "%ProgramFiles%\Microsoft Office\Office15\ospp.vbs" (
|
|
||||||
set "office=%ProgramFiles%\Microsoft Office\Office15"
|
|
||||||
) else if exist "%ProgramW6432%\Microsoft Office\Office15\ospp.vbs" (
|
|
||||||
set "office=%ProgramW6432%\Microsoft Office\Office15"
|
|
||||||
) else if exist "%ProgramFiles(x86)%\Microsoft Office\Office15\ospp.vbs" (
|
|
||||||
set "office=%ProgramFiles(x86)%\Microsoft Office\Office15"
|
|
||||||
)
|
|
||||||
if exist "!office!\ospp.vbs" (
|
|
||||||
echo.
|
|
||||||
echo %line2%
|
|
||||||
echo *** Office 2013 C2R Status ***
|
|
||||||
echo %line2%
|
|
||||||
cscript //nologo "!office!\ospp.vbs" /dstatus
|
|
||||||
)
|
|
||||||
|
|
||||||
:casVc10
|
|
||||||
if %_wow%==0 reg query HKLM\SOFTWARE\Microsoft\Office\14.0\CVH /f Click2run /k >nul 2>&1 || goto :casVend
|
|
||||||
if %_wow%==1 reg query HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\CVH /f Click2run /k >nul 2>&1 || goto :casVend
|
|
||||||
set office=
|
|
||||||
if exist "%ProgramFiles%\Microsoft Office\Office14\ospp.vbs" (
|
|
||||||
set "office=%ProgramFiles%\Microsoft Office\Office14"
|
|
||||||
) else if exist "%ProgramW6432%\Microsoft Office\Office14\ospp.vbs" (
|
|
||||||
set "office=%ProgramW6432%\Microsoft Office\Office14"
|
|
||||||
) else if exist "%ProgramFiles(x86)%\Microsoft Office\Office14\ospp.vbs" (
|
|
||||||
set "office=%ProgramFiles(x86)%\Microsoft Office\Office14"
|
|
||||||
)
|
|
||||||
if exist "!office!\ospp.vbs" (
|
|
||||||
echo.
|
|
||||||
echo %line2%
|
|
||||||
echo *** Office 2010 C2R Status ***
|
|
||||||
echo %line2%
|
|
||||||
cscript //nologo "!office!\ospp.vbs" /dstatus
|
|
||||||
)
|
|
||||||
|
|
||||||
:casVend
|
|
||||||
echo.
|
|
||||||
echo Press any key to exit.
|
|
||||||
pause >nul
|
|
||||||
exit /b
|
|
|
@ -1,553 +0,0 @@
|
||||||
<!-- : Begin batch script
|
|
||||||
@setlocal DisableDelayedExpansion
|
|
||||||
@echo off
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
:: Check-Activation-Status-wmi.cmd
|
|
||||||
:: Written by @abbodi1406
|
|
||||||
:: forums.mydigitallife.net/posts/838808
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
:: change to 1 to use VBScript instead wmic.exe to access WMI
|
|
||||||
:: this option is automatically enabled for Windows 11 build 22483 and later
|
|
||||||
set WMI_VBS=0
|
|
||||||
|
|
||||||
@cls
|
|
||||||
set "_cmdf=%~f0"
|
|
||||||
if exist "%SystemRoot%\Sysnative\cmd.exe" (
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
start %SystemRoot%\Sysnative\cmd.exe /c ""!_cmdf!" "
|
|
||||||
exit /b
|
|
||||||
)
|
|
||||||
if exist "%SystemRoot%\SysArm32\cmd.exe" if /i %PROCESSOR_ARCHITECTURE%==AMD64 (
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
start %SystemRoot%\SysArm32\cmd.exe /c ""!_cmdf!" "
|
|
||||||
exit /b
|
|
||||||
)
|
|
||||||
color 07
|
|
||||||
title Check Activation Status [wmi]
|
|
||||||
set wspp=SoftwareLicensingProduct
|
|
||||||
set wsps=SoftwareLicensingService
|
|
||||||
set ospp=OfficeSoftwareProtectionProduct
|
|
||||||
set osps=OfficeSoftwareProtectionService
|
|
||||||
set winApp=55c92734-d682-4d71-983e-d6ec3f16059f
|
|
||||||
set o14App=59a52881-a989-479d-af46-f275c6370663
|
|
||||||
set o15App=0ff1ce15-a989-479d-af46-f275c6370663
|
|
||||||
for %%# in (spp_get,ospp_get,cW1nd0ws,sppw,c0ff1ce15,sppo,osppsvc,ospp14,ospp15) do set "%%#="
|
|
||||||
for /f "tokens=6 delims=[]. " %%# in ('ver') do set winbuild=%%#
|
|
||||||
set "spp_get=Description, DiscoveredKeyManagementServiceMachineName, DiscoveredKeyManagementServiceMachinePort, EvaluationEndDate, GracePeriodRemaining, ID, KeyManagementServiceMachine, KeyManagementServicePort, KeyManagementServiceProductKeyID, LicenseStatus, LicenseStatusReason, Name, PartialProductKey, ProductKeyID, VLActivationInterval, VLRenewalInterval"
|
|
||||||
set "ospp_get=%spp_get%"
|
|
||||||
if %winbuild% GEQ 9200 set "spp_get=%spp_get%, KeyManagementServiceLookupDomain, VLActivationTypeEnabled"
|
|
||||||
if %winbuild% GEQ 9600 set "spp_get=%spp_get%, DiscoveredKeyManagementServiceMachineIpAddress, ProductKeyChannel"
|
|
||||||
set "_work=%~dp0"
|
|
||||||
set "_batf=%~f0"
|
|
||||||
set "_batp=%_batf:'=''%"
|
|
||||||
set "_Local=%LocalAppData%"
|
|
||||||
set _Identity=0
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
dir /b /s /a:-d "!_Local!\Microsoft\Office\Licenses\*1*" 1>nul 2>nul && set _Identity=1
|
|
||||||
dir /b /s /a:-d "!ProgramData!\Microsoft\Office\Licenses\*1*" 1>nul 2>nul && set _Identity=1
|
|
||||||
pushd "!_work!"
|
|
||||||
setlocal DisableDelayedExpansion
|
|
||||||
if %winbuild% LSS 9200 if not exist "%SystemRoot%\servicing\Packages\Microsoft-Windows-PowerShell-WTR-Package~*.mum" set _Identity=0
|
|
||||||
set _pwrsh=1
|
|
||||||
if not exist "%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" set _pwrsh=0
|
|
||||||
set "_csg=cscript.exe //NoLogo //Job:WmiMulti "%~nx0?.wsf""
|
|
||||||
set "_csq=cscript.exe //NoLogo //Job:WmiQuery "%~nx0?.wsf""
|
|
||||||
set "_csx=cscript.exe //NoLogo //Job:XPDT "%~nx0?.wsf""
|
|
||||||
if %winbuild% GEQ 22483 set WMI_VBS=1
|
|
||||||
if %WMI_VBS% EQU 0 (
|
|
||||||
set "_zz1=wmic path"
|
|
||||||
set "_zz2=where"
|
|
||||||
set "_zz3=get"
|
|
||||||
set "_zz4=/value"
|
|
||||||
set "_zz5=("
|
|
||||||
set "_zz6=)"
|
|
||||||
set "_zz7="wmic path"
|
|
||||||
set "_zz8=/value""
|
|
||||||
) else (
|
|
||||||
set "_zz1=%_csq%"
|
|
||||||
set "_zz2="
|
|
||||||
set "_zz3="
|
|
||||||
set "_zz4="
|
|
||||||
set "_zz5=""
|
|
||||||
set "_zz6=""
|
|
||||||
set "_zz7=%_csq%"
|
|
||||||
set "_zz8="
|
|
||||||
)
|
|
||||||
|
|
||||||
set "SysPath=%SystemRoot%\System32"
|
|
||||||
if exist "%SystemRoot%\Sysnative\reg.exe" (set "SysPath=%SystemRoot%\Sysnative")
|
|
||||||
set "Path=%SysPath%;%SystemRoot%;%SysPath%\Wbem;%SysPath%\WindowsPowerShell\v1.0\"
|
|
||||||
set "line2=************************************************************"
|
|
||||||
set "line3=____________________________________________________________"
|
|
||||||
|
|
||||||
set _WSH=1
|
|
||||||
reg query "HKCU\SOFTWARE\Microsoft\Windows Script Host\Settings" /v Enabled 2>nul | find /i "0x0" 1>nul && (set _WSH=0)
|
|
||||||
reg query HKU\S-1-5-19 1>nul 2>nul && (
|
|
||||||
reg query "HKLM\SOFTWARE\Microsoft\Windows Script Host\Settings" /v Enabled 2>nul | find /i "0x0" 1>nul && (set _WSH=0)
|
|
||||||
)
|
|
||||||
if %_WSH% EQU 0 if %WMI_VBS% NEQ 0 goto :E_VBS
|
|
||||||
|
|
||||||
set OsppHook=1
|
|
||||||
sc query osppsvc >nul 2>&1
|
|
||||||
if %errorlevel% EQU 1060 set OsppHook=0
|
|
||||||
|
|
||||||
net start sppsvc /y >nul 2>&1
|
|
||||||
call :casWpkey %wspp% %winApp% cW1nd0ws sppw
|
|
||||||
if %winbuild% GEQ 9200 call :casWpkey %wspp% %o15App% c0ff1ce15 sppo
|
|
||||||
if %OsppHook% NEQ 0 (
|
|
||||||
net start osppsvc /y >nul 2>&1
|
|
||||||
call :casWpkey %ospp% %o14App% osppsvc ospp14
|
|
||||||
if %winbuild% LSS 9200 call :casWpkey %ospp% %o15App% osppsvc ospp15
|
|
||||||
)
|
|
||||||
|
|
||||||
echo %line2%
|
|
||||||
echo *** Windows Status ***
|
|
||||||
echo %line2%
|
|
||||||
if not defined cW1nd0ws (
|
|
||||||
echo.
|
|
||||||
echo Error: product key not found.
|
|
||||||
goto :casWcon
|
|
||||||
)
|
|
||||||
set winID=1
|
|
||||||
set "_qr=%_zz7% %wspp% %_zz2% %_zz5%ApplicationID='%winApp%' and PartialProductKey is not null%_zz6% %_zz3% ID %_zz8%"
|
|
||||||
for /f "tokens=2 delims==" %%# in ('%_qr%') do (
|
|
||||||
set "chkID=%%#"
|
|
||||||
call :casWdet "%wspp%" "%wsps%" "%spp_get%"
|
|
||||||
call :casWout
|
|
||||||
echo %line3%
|
|
||||||
echo.
|
|
||||||
)
|
|
||||||
|
|
||||||
:casWcon
|
|
||||||
set winID=0
|
|
||||||
set verbose=1
|
|
||||||
if not defined c0ff1ce15 (
|
|
||||||
if defined osppsvc goto :casWospp
|
|
||||||
goto :casWend
|
|
||||||
)
|
|
||||||
echo %line2%
|
|
||||||
echo *** Office Status ***
|
|
||||||
echo %line2%
|
|
||||||
set "_qr=%_zz7% %wspp% %_zz2% %_zz5%ApplicationID='%o15App%' and PartialProductKey is not null%_zz6% %_zz3% ID %_zz8%"
|
|
||||||
for /f "tokens=2 delims==" %%# in ('%_qr%') do (
|
|
||||||
set "chkID=%%#"
|
|
||||||
call :casWdet "%wspp%" "%wsps%" "%spp_get%"
|
|
||||||
call :casWout
|
|
||||||
echo %line3%
|
|
||||||
echo.
|
|
||||||
)
|
|
||||||
set verbose=0
|
|
||||||
if defined osppsvc goto :casWospp
|
|
||||||
goto :casWend
|
|
||||||
|
|
||||||
:casWospp
|
|
||||||
if %verbose% EQU 1 (
|
|
||||||
echo %line2%
|
|
||||||
echo *** Office Status ***
|
|
||||||
echo %line2%
|
|
||||||
)
|
|
||||||
set "_qr=%_zz7% %ospp% %_zz2% %_zz5%ApplicationID='%o15App%' and PartialProductKey is not null%_zz6% %_zz3% ID %_zz8%"
|
|
||||||
if defined ospp15 for /f "tokens=2 delims==" %%# in ('%_qr%') do (
|
|
||||||
set "chkID=%%#"
|
|
||||||
call :casWdet "%ospp%" "%osps%" "%ospp_get%"
|
|
||||||
call :casWout
|
|
||||||
echo %line3%
|
|
||||||
echo.
|
|
||||||
)
|
|
||||||
set "_qr=%_zz7% %ospp% %_zz2% %_zz5%ApplicationID='%o14App%' and PartialProductKey is not null%_zz6% %_zz3% ID %_zz8%"
|
|
||||||
if defined ospp14 for /f "tokens=2 delims==" %%# in ('%_qr%') do (
|
|
||||||
set "chkID=%%#"
|
|
||||||
call :casWdet "%ospp%" "%osps%" "%ospp_get%"
|
|
||||||
call :casWout
|
|
||||||
echo %line3%
|
|
||||||
echo.
|
|
||||||
)
|
|
||||||
goto :casWend
|
|
||||||
|
|
||||||
:casWpkey
|
|
||||||
set "_qr=%_zz1% %1 %_zz2% %_zz5%ApplicationID='%2' and PartialProductKey is not null%_zz6% %_zz3% ID %_zz4%"
|
|
||||||
%_qr% 2>nul | findstr /i ID 1>nul && (set %3=1&set %4=1)
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
:casWdet
|
|
||||||
for %%# in (%~3) do set "%%#="
|
|
||||||
if /i %~1==%ospp% for %%# in (DiscoveredKeyManagementServiceMachineIpAddress, KeyManagementServiceLookupDomain, ProductKeyChannel, VLActivationTypeEnabled) do set "%%#="
|
|
||||||
set "cKmsClient="
|
|
||||||
set "cTblClient="
|
|
||||||
set "cAvmClient="
|
|
||||||
set "ExpireMsg="
|
|
||||||
set "_xpr="
|
|
||||||
set "_qr="wmic path %~1 where ID='%chkID%' get %~3 /value" ^| findstr ^="
|
|
||||||
if %WMI_VBS% NEQ 0 set "_qr=%_csg% %~1 "ID='%chkID%'" "%~3""
|
|
||||||
for /f "tokens=* delims=" %%# in ('%_qr%') do set "%%#"
|
|
||||||
|
|
||||||
set /a _gpr=(GracePeriodRemaining+1440-1)/1440
|
|
||||||
echo %Description%| findstr /i VOLUME_KMSCLIENT 1>nul && (set cKmsClient=1&set _mTag=Volume)
|
|
||||||
echo %Description%| findstr /i TIMEBASED_ 1>nul && (set cTblClient=1&set _mTag=Timebased)
|
|
||||||
echo %Description%| findstr /i VIRTUAL_MACHINE_ACTIVATION 1>nul && (set cAvmClient=1&set _mTag=Automatic VM)
|
|
||||||
cmd /c exit /b %LicenseStatusReason%
|
|
||||||
set "LicenseReason=%=ExitCode%"
|
|
||||||
set "LicenseMsg=Time remaining: %GracePeriodRemaining% minute(s) (%_gpr% day(s))"
|
|
||||||
if %_gpr% GEQ 1 if %_WSH% EQU 1 (
|
|
||||||
for /f "tokens=* delims=" %%# in ('%_csx% %GracePeriodRemaining%') do set "_xpr=%%#"
|
|
||||||
)
|
|
||||||
if %_gpr% GEQ 1 if %_pwrsh% EQU 1 if not defined _xpr (
|
|
||||||
for /f "tokens=* delims=" %%# in ('powershell "$([DateTime]::Now.addMinutes(%GracePeriodRemaining%)).ToString('yyyy-MM-dd HH:mm:ss')" 2^>nul') do set "_xpr=%%#"
|
|
||||||
title Check Activation Status [wmi]
|
|
||||||
)
|
|
||||||
|
|
||||||
if %LicenseStatus% EQU 0 (
|
|
||||||
set "License=Unlicensed"
|
|
||||||
set "LicenseMsg="
|
|
||||||
)
|
|
||||||
if %LicenseStatus% EQU 1 (
|
|
||||||
set "License=Licensed"
|
|
||||||
set "LicenseMsg="
|
|
||||||
if %GracePeriodRemaining% EQU 0 (
|
|
||||||
if %winID% EQU 1 (set "ExpireMsg=The machine is permanently activated.") else (set "ExpireMsg=The product is permanently activated.")
|
|
||||||
) else (
|
|
||||||
set "LicenseMsg=%_mTag% activation expiration: %GracePeriodRemaining% minute(s) (%_gpr% day(s))"
|
|
||||||
if defined _xpr set "ExpireMsg=%_mTag% activation will expire %_xpr%"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
if %LicenseStatus% EQU 2 (
|
|
||||||
set "License=Initial grace period"
|
|
||||||
if defined _xpr set "ExpireMsg=Initial grace period ends %_xpr%"
|
|
||||||
)
|
|
||||||
if %LicenseStatus% EQU 3 (
|
|
||||||
set "License=Additional grace period (KMS license expired or hardware out of tolerance)"
|
|
||||||
if defined _xpr set "ExpireMsg=Additional grace period ends %_xpr%"
|
|
||||||
)
|
|
||||||
if %LicenseStatus% EQU 4 (
|
|
||||||
set "License=Non-genuine grace period."
|
|
||||||
if defined _xpr set "ExpireMsg=Non-genuine grace period ends %_xpr%"
|
|
||||||
)
|
|
||||||
if %LicenseStatus% EQU 6 (
|
|
||||||
set "License=Extended grace period"
|
|
||||||
if defined _xpr set "ExpireMsg=Extended grace period ends %_xpr%"
|
|
||||||
)
|
|
||||||
if %LicenseStatus% EQU 5 (
|
|
||||||
set "License=Notification"
|
|
||||||
if "%LicenseReason%"=="C004F200" (set "LicenseMsg=Notification Reason: 0xC004F200 (non-genuine)."
|
|
||||||
) else if "%LicenseReason%"=="C004F009" (set "LicenseMsg=Notification Reason: 0xC004F009 (grace time expired)."
|
|
||||||
) else (set "LicenseMsg=Notification Reason: 0x%LicenseReason%"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
if %LicenseStatus% GTR 6 (
|
|
||||||
set "License=Unknown"
|
|
||||||
set "LicenseMsg="
|
|
||||||
)
|
|
||||||
if not defined cKmsClient exit /b
|
|
||||||
|
|
||||||
if %KeyManagementServicePort%==0 set KeyManagementServicePort=1688
|
|
||||||
set "KmsReg=Registered KMS machine name: %KeyManagementServiceMachine%:%KeyManagementServicePort%"
|
|
||||||
if "%KeyManagementServiceMachine%"=="" set "KmsReg=Registered KMS machine name: KMS name not available"
|
|
||||||
|
|
||||||
if %DiscoveredKeyManagementServiceMachinePort%==0 set DiscoveredKeyManagementServiceMachinePort=1688
|
|
||||||
set "KmsDns=KMS machine name from DNS: %DiscoveredKeyManagementServiceMachineName%:%DiscoveredKeyManagementServiceMachinePort%"
|
|
||||||
if "%DiscoveredKeyManagementServiceMachineName%"=="" set "KmsDns=DNS auto-discovery: KMS name not available"
|
|
||||||
|
|
||||||
set "_qr="wmic path %~2 get ClientMachineID, KeyManagementServiceHostCaching /value" ^| findstr ^="
|
|
||||||
if %WMI_VBS% NEQ 0 set "_qr=%_csg% %~2 "ClientMachineID, KeyManagementServiceHostCaching""
|
|
||||||
for /f "tokens=* delims=" %%# in ('%_qr%') do set "%%#"
|
|
||||||
if /i %KeyManagementServiceHostCaching%==True (set KeyManagementServiceHostCaching=Enabled) else (set KeyManagementServiceHostCaching=Disabled)
|
|
||||||
|
|
||||||
if %winbuild% LSS 9200 exit /b
|
|
||||||
if /i %~1==%ospp% exit /b
|
|
||||||
|
|
||||||
if "%KeyManagementServiceLookupDomain%"=="" set "KeyManagementServiceLookupDomain="
|
|
||||||
|
|
||||||
if %VLActivationTypeEnabled% EQU 3 (
|
|
||||||
set VLActivationType=Token
|
|
||||||
) else if %VLActivationTypeEnabled% EQU 2 (
|
|
||||||
set VLActivationType=KMS
|
|
||||||
) else if %VLActivationTypeEnabled% EQU 1 (
|
|
||||||
set VLActivationType=AD
|
|
||||||
) else (
|
|
||||||
set VLActivationType=All
|
|
||||||
)
|
|
||||||
|
|
||||||
if %winbuild% LSS 9600 exit /b
|
|
||||||
if "%DiscoveredKeyManagementServiceMachineIpAddress%"=="" set "DiscoveredKeyManagementServiceMachineIpAddress=not available"
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
:casWout
|
|
||||||
echo.
|
|
||||||
echo Name: %Name%
|
|
||||||
echo Description: %Description%
|
|
||||||
echo Activation ID: %ID%
|
|
||||||
echo Extended PID: %ProductKeyID%
|
|
||||||
if defined ProductKeyChannel echo Product Key Channel: %ProductKeyChannel%
|
|
||||||
echo Partial Product Key: %PartialProductKey%
|
|
||||||
echo License Status: %License%
|
|
||||||
if defined LicenseMsg echo %LicenseMsg%
|
|
||||||
if not %LicenseStatus%==0 if not %EvaluationEndDate:~0,8%==16010101 echo Evaluation End Date: %EvaluationEndDate:~0,4%-%EvaluationEndDate:~4,2%-%EvaluationEndDate:~6,2% %EvaluationEndDate:~8,2%:%EvaluationEndDate:~10,2% UTC
|
|
||||||
if not defined cKmsClient (
|
|
||||||
if defined ExpireMsg echo.&echo. %ExpireMsg%
|
|
||||||
exit /b
|
|
||||||
)
|
|
||||||
if defined VLActivationTypeEnabled echo Configured Activation Type: %VLActivationType%
|
|
||||||
echo.
|
|
||||||
if not %LicenseStatus%==1 (
|
|
||||||
echo Please activate the product in order to update KMS client information values.
|
|
||||||
exit /b
|
|
||||||
)
|
|
||||||
echo Most recent activation information:
|
|
||||||
echo Key Management Service client information
|
|
||||||
echo. Client Machine ID (CMID): %ClientMachineID%
|
|
||||||
echo. %KmsDns%
|
|
||||||
echo. %KmsReg%
|
|
||||||
if defined DiscoveredKeyManagementServiceMachineIpAddress echo. KMS machine IP address: %DiscoveredKeyManagementServiceMachineIpAddress%
|
|
||||||
echo. KMS machine extended PID: %KeyManagementServiceProductKeyID%
|
|
||||||
echo. Activation interval: %VLActivationInterval% minutes
|
|
||||||
echo. Renewal interval: %VLRenewalInterval% minutes
|
|
||||||
echo. KMS host caching: %KeyManagementServiceHostCaching%
|
|
||||||
if defined KeyManagementServiceLookupDomain echo. KMS SRV record lookup domain: %KeyManagementServiceLookupDomain%
|
|
||||||
if defined ExpireMsg echo.&echo. %ExpireMsg%
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
:casWend
|
|
||||||
if %_Identity% EQU 1 if %_pwrsh% EQU 1 (
|
|
||||||
echo %line2%
|
|
||||||
echo *** Office vNext Status ***
|
|
||||||
echo %line2%
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
powershell "$f=[IO.File]::ReadAllText('!_batp!') -split ':vNextDiag\:.*';iex ($f[1])"
|
|
||||||
title Check Activation Status [wmi]
|
|
||||||
echo %line3%
|
|
||||||
echo.
|
|
||||||
)
|
|
||||||
echo.
|
|
||||||
echo Press any key to exit.
|
|
||||||
pause >nul
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
:E_VBS
|
|
||||||
echo ==== ERROR ====
|
|
||||||
echo Windows Script Host is disabled.
|
|
||||||
echo It is required for this script to work.
|
|
||||||
echo.
|
|
||||||
echo Press any key to exit.
|
|
||||||
pause >nul
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
:vNextDiag:
|
|
||||||
function PrintModePerPridFromRegistry
|
|
||||||
{
|
|
||||||
$vNextRegkey = "HKCU:\SOFTWARE\Microsoft\Office\16.0\Common\Licensing\LicensingNext"
|
|
||||||
$vNextPrids = Get-Item -Path $vNextRegkey -ErrorAction Ignore | Select-Object -ExpandProperty 'property' | Where-Object -FilterScript {$_ -Ne 'InstalledGraceKey' -And $_ -Ne 'MigrationToV5Done' -And $_ -Ne 'test' -And $_ -Ne 'unknown'}
|
|
||||||
If ($vNextPrids -Eq $null)
|
|
||||||
{
|
|
||||||
Write-Host "No registry keys found."
|
|
||||||
Return
|
|
||||||
}
|
|
||||||
$vNextPrids | ForEach `
|
|
||||||
{
|
|
||||||
$mode = (Get-ItemProperty -Path $vNextRegkey -Name $_).$_
|
|
||||||
Switch ($mode)
|
|
||||||
{
|
|
||||||
2 { $mode = "vNext"; Break }
|
|
||||||
3 { $mode = "Device"; Break }
|
|
||||||
Default { $mode = "Legacy"; Break }
|
|
||||||
}
|
|
||||||
Write-Host $_ = $mode
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function PrintSharedComputerLicensing
|
|
||||||
{
|
|
||||||
$scaRegKey = "HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration"
|
|
||||||
$scaValue = Get-ItemProperty -Path $scaRegKey -ErrorAction Ignore | Select-Object -ExpandProperty "SharedComputerLicensing" -ErrorAction Ignore
|
|
||||||
$scaRegKey2 = "HKLM:\SOFTWARE\Microsoft\Office\16.0\Common\Licensing"
|
|
||||||
$scaValue2 = Get-ItemProperty -Path $scaRegKey2 -ErrorAction Ignore | Select-Object -ExpandProperty "SharedComputerLicensing" -ErrorAction Ignore
|
|
||||||
$scaPolicyKey = "HKLM:\SOFTWARE\Policies\Microsoft\Office\16.0\Common\Licensing"
|
|
||||||
$scaPolicyValue = Get-ItemProperty -Path $scaPolicyKey -ErrorAction Ignore | Select-Object -ExpandProperty "SharedComputerLicensing" -ErrorAction Ignore
|
|
||||||
If ($scaValue -Eq $null -And $scaValue2 -Eq $null -And $scaPolicyValue -Eq $null)
|
|
||||||
{
|
|
||||||
Write-Host "No registry keys found."
|
|
||||||
Return
|
|
||||||
}
|
|
||||||
$scaModeValue = $scaValue -Or $scaValue2 -Or $scaPolicyValue
|
|
||||||
If ($scaModeValue -Eq 0)
|
|
||||||
{
|
|
||||||
$scaMode = "Disabled"
|
|
||||||
}
|
|
||||||
If ($scaModeValue -Eq 1)
|
|
||||||
{
|
|
||||||
$scaMode = "Enabled"
|
|
||||||
}
|
|
||||||
Write-Host "SharedComputerLicensing" = $scaMode
|
|
||||||
Write-Host
|
|
||||||
$tokenFiles = $null
|
|
||||||
$tokenPath = "${env:LOCALAPPDATA}\Microsoft\Office\16.0\Licensing"
|
|
||||||
If (Test-Path $tokenPath)
|
|
||||||
{
|
|
||||||
$tokenFiles = Get-ChildItem -Path $tokenPath -Recurse -File -Filter "*authString*"
|
|
||||||
}
|
|
||||||
If ($tokenFiles.length -Eq 0)
|
|
||||||
{
|
|
||||||
Write-Host "No tokens found."
|
|
||||||
Return
|
|
||||||
}
|
|
||||||
$tokenFiles | ForEach `
|
|
||||||
{
|
|
||||||
$tokenParts = (Get-Content -Encoding Unicode -Path $_.FullName).Split('_')
|
|
||||||
$output = [PSCustomObject] `
|
|
||||||
@{
|
|
||||||
ACID = $tokenParts[0];
|
|
||||||
User = $tokenParts[3]
|
|
||||||
NotBefore = $tokenParts[4];
|
|
||||||
NotAfter = $tokenParts[5];
|
|
||||||
} | ConvertTo-Json
|
|
||||||
Write-Host $output
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function PrintLicensesInformation
|
|
||||||
{
|
|
||||||
Param(
|
|
||||||
[ValidateSet("NUL", "Device")]
|
|
||||||
[String]$mode
|
|
||||||
)
|
|
||||||
If ($mode -Eq "NUL")
|
|
||||||
{
|
|
||||||
$licensePath = "${env:LOCALAPPDATA}\Microsoft\Office\Licenses"
|
|
||||||
}
|
|
||||||
ElseIf ($mode -Eq "Device")
|
|
||||||
{
|
|
||||||
$licensePath = "${env:PROGRAMDATA}\Microsoft\Office\Licenses"
|
|
||||||
}
|
|
||||||
$licenseFiles = $null
|
|
||||||
If (Test-Path $licensePath)
|
|
||||||
{
|
|
||||||
$licenseFiles = Get-ChildItem -Path $licensePath -Recurse -File
|
|
||||||
}
|
|
||||||
If ($licenseFiles.length -Eq 0)
|
|
||||||
{
|
|
||||||
Write-Host "No licenses found."
|
|
||||||
Return
|
|
||||||
}
|
|
||||||
$licenseFiles | ForEach `
|
|
||||||
{
|
|
||||||
$license = (Get-Content -Encoding Unicode $_.FullName | ConvertFrom-Json).License
|
|
||||||
$decodedLicense = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($license)) | ConvertFrom-Json
|
|
||||||
$licenseType = $decodedLicense.LicenseType
|
|
||||||
$userId = $decodedLicense.Metadata.UserId
|
|
||||||
$identitiesRegkey = Get-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Office\16.0\Common\Identity\Identities\${userId}*" -ErrorAction Ignore
|
|
||||||
$licenseState = $null
|
|
||||||
If ((Get-Date) -Gt (Get-Date $decodedLicense.MetaData.NotAfter))
|
|
||||||
{
|
|
||||||
$licenseState = "RFM"
|
|
||||||
}
|
|
||||||
ElseIf (($decodedLicense.ExpiresOn -Eq $null) -Or
|
|
||||||
((Get-Date) -Lt (Get-Date $decodedLicense.ExpiresOn)))
|
|
||||||
{
|
|
||||||
$licenseState = "Licensed"
|
|
||||||
}
|
|
||||||
Else
|
|
||||||
{
|
|
||||||
$licenseState = "Grace"
|
|
||||||
}
|
|
||||||
if ($mode -Eq "NUL")
|
|
||||||
{
|
|
||||||
$output = [PSCustomObject] `
|
|
||||||
@{
|
|
||||||
Version = $_.Directory.Name
|
|
||||||
Type = "User|${licenseType}";
|
|
||||||
Product = $decodedLicense.ProductReleaseId;
|
|
||||||
Acid = $decodedLicense.Acid;
|
|
||||||
LicenseState = $licenseState;
|
|
||||||
EntitlementStatus = $decodedLicense.Status;
|
|
||||||
ReasonCode = $decodedLicense.ReasonCode;
|
|
||||||
NotBefore = $decodedLicense.Metadata.NotBefore;
|
|
||||||
NotAfter = $decodedLicense.Metadata.NotAfter;
|
|
||||||
NextRenewal = $decodedLicense.Metadata.RenewAfter;
|
|
||||||
Expiration = $decodedLicense.ExpiresOn;
|
|
||||||
TenantId = $decodedLicense.Metadata.TenantId;
|
|
||||||
} | ConvertTo-Json
|
|
||||||
}
|
|
||||||
ElseIf ($mode -Eq "Device")
|
|
||||||
{
|
|
||||||
$output = [PSCustomObject] `
|
|
||||||
@{
|
|
||||||
Version = $_.Directory.Name
|
|
||||||
Type = "Device|${licenseType}";
|
|
||||||
Product = $decodedLicense.ProductReleaseId;
|
|
||||||
Acid = $decodedLicense.Acid;
|
|
||||||
DeviceId = $decodedLicense.Metadata.DeviceId;
|
|
||||||
LicenseState = $licenseState;
|
|
||||||
EntitlementStatus = $decodedLicense.Status;
|
|
||||||
ReasonCode = $decodedLicense.ReasonCode;
|
|
||||||
NotBefore = $decodedLicense.Metadata.NotBefore;
|
|
||||||
NotAfter = $decodedLicense.Metadata.NotAfter;
|
|
||||||
NextRenewal = $decodedLicense.Metadata.RenewAfter;
|
|
||||||
Expiration = $decodedLicense.ExpiresOn;
|
|
||||||
TenantId = $decodedLicense.Metadata.TenantId;
|
|
||||||
} | ConvertTo-Json
|
|
||||||
}
|
|
||||||
Write-Output $output
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Write-Host
|
|
||||||
Write-Host "========== Mode per ProductReleaseId =========="
|
|
||||||
Write-Host
|
|
||||||
PrintModePerPridFromRegistry
|
|
||||||
Write-Host
|
|
||||||
Write-Host "========== Shared Computer Licensing =========="
|
|
||||||
Write-Host
|
|
||||||
PrintSharedComputerLicensing
|
|
||||||
Write-Host
|
|
||||||
Write-Host "========== vNext licenses =========="
|
|
||||||
Write-Host
|
|
||||||
PrintLicensesInformation -Mode "NUL"
|
|
||||||
Write-Host
|
|
||||||
Write-Host "========== Device licenses =========="
|
|
||||||
Write-Host
|
|
||||||
PrintLicensesInformation -Mode "Device"
|
|
||||||
:vNextDiag:
|
|
||||||
|
|
||||||
----- Begin wsf script --->
|
|
||||||
<package>
|
|
||||||
<job id="WmiQuery">
|
|
||||||
<script language="VBScript">
|
|
||||||
If WScript.Arguments.Count = 3 Then
|
|
||||||
wExc = "Select " & WScript.Arguments.Item(2) & " from " & WScript.Arguments.Item(0) & " where " & WScript.Arguments.Item(1)
|
|
||||||
wGet = WScript.Arguments.Item(2)
|
|
||||||
Else
|
|
||||||
wExc = "Select " & WScript.Arguments.Item(1) & " from " & WScript.Arguments.Item(0)
|
|
||||||
wGet = WScript.Arguments.Item(1)
|
|
||||||
End If
|
|
||||||
Set objCol = GetObject("winmgmts:\\.\root\CIMV2").ExecQuery(wExc,,48)
|
|
||||||
For Each objItm in objCol
|
|
||||||
For each Prop in objItm.Properties_
|
|
||||||
If LCase(Prop.Name) = LCase(wGet) Then
|
|
||||||
WScript.Echo Prop.Name & "=" & Prop.Value
|
|
||||||
Exit For
|
|
||||||
End If
|
|
||||||
Next
|
|
||||||
Next
|
|
||||||
</script>
|
|
||||||
</job>
|
|
||||||
<job id="WmiMulti">
|
|
||||||
<script language="VBScript">
|
|
||||||
If WScript.Arguments.Count = 3 Then
|
|
||||||
wExc = "Select " & WScript.Arguments.Item(2) & " from " & WScript.Arguments.Item(0) & " where " & WScript.Arguments.Item(1)
|
|
||||||
Else
|
|
||||||
wExc = "Select " & WScript.Arguments.Item(1) & " from " & WScript.Arguments.Item(0)
|
|
||||||
End If
|
|
||||||
Set objCol = GetObject("winmgmts:\\.\root\CIMV2").ExecQuery(wExc,,48)
|
|
||||||
For Each objItm in objCol
|
|
||||||
For each Prop in objItm.Properties_
|
|
||||||
WScript.Echo Prop.Name & "=" & Prop.Value
|
|
||||||
Next
|
|
||||||
Next
|
|
||||||
</script>
|
|
||||||
</job>
|
|
||||||
<job id="XPDT">
|
|
||||||
<script language="VBScript">
|
|
||||||
WScript.Echo DateAdd("n", WScript.Arguments.Item(0), Now)
|
|
||||||
</script>
|
|
||||||
</job>
|
|
||||||
</package>
|
|
Binary file not shown.
|
@ -1,3 +0,0 @@
|
||||||
<html>
|
|
||||||
<meta http-equiv="refresh" content="0; url=https://windowsaddict.ml/readme-hwid-kms38-files.html">
|
|
||||||
</html>
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,3 +0,0 @@
|
||||||
<html>
|
|
||||||
<meta http-equiv="refresh" content="0; url=https://windowsaddict.ml/readme-hwid.html">
|
|
||||||
</html>
|
|
|
@ -1,3 +0,0 @@
|
||||||
<html>
|
|
||||||
<meta http-equiv="refresh" content="0; url=https://windowsaddict.ml/readme-kms38.html">
|
|
||||||
</html>
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,3 +0,0 @@
|
||||||
<html>
|
|
||||||
<meta http-equiv="refresh" content="0; url=https://windowsaddict.ml/readme-online-kms-files.html">
|
|
||||||
</html>
|
|
Binary file not shown.
Binary file not shown.
|
@ -1,3 +0,0 @@
|
||||||
<html>
|
|
||||||
<meta http-equiv="refresh" content="0; url=https://windowsaddict.ml/readme-online-kms.html">
|
|
||||||
</html>
|
|
|
@ -1,830 +0,0 @@
|
||||||
@setlocal DisableDelayedExpansion
|
|
||||||
@echo off
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
::============================================================================
|
|
||||||
::
|
|
||||||
:: This script is a part of 'Microsoft Activation Scripts' (MAS) project.
|
|
||||||
::
|
|
||||||
:: Homepage: windowsaddict.ml
|
|
||||||
:: Email: windowsaddict@protonmail.com
|
|
||||||
::
|
|
||||||
::============================================================================
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Re-launch the script with x64 process if it was initiated by x86 process on x64 bit Windows
|
|
||||||
:: or with ARM64 process if it was initiated by x86/ARM32 process on ARM64 Windows
|
|
||||||
|
|
||||||
if exist %SystemRoot%\Sysnative\cmd.exe (
|
|
||||||
set "_cmdf=%~f0"
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
start %SystemRoot%\Sysnative\cmd.exe /c ""!_cmdf!" %*"
|
|
||||||
exit /b
|
|
||||||
)
|
|
||||||
|
|
||||||
:: Re-launch the script with ARM32 process if it was initiated by x64 process on ARM64 Windows
|
|
||||||
|
|
||||||
if exist %SystemRoot%\SysArm32\cmd.exe if %PROCESSOR_ARCHITECTURE%==AMD64 (
|
|
||||||
set "_cmdf=%~f0"
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
start %SystemRoot%\SysArm32\cmd.exe /c ""!_cmdf!" %*"
|
|
||||||
exit /b
|
|
||||||
)
|
|
||||||
|
|
||||||
:: Set Path variable, it helps if it is misconfigured in the system
|
|
||||||
|
|
||||||
set "SysPath=%SystemRoot%\System32"
|
|
||||||
if exist "%SystemRoot%\Sysnative\reg.exe" (set "SysPath=%SystemRoot%\Sysnative")
|
|
||||||
set "Path=%SysPath%;%SystemRoot%;%SysPath%\Wbem;%SysPath%\WindowsPowerShell\v1.0\"
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
cls
|
|
||||||
color 07
|
|
||||||
title Activation Troubleshoot
|
|
||||||
|
|
||||||
set _elev=
|
|
||||||
if /i "%~1"=="-el" set _elev=1
|
|
||||||
|
|
||||||
set winbuild=1
|
|
||||||
set "nul=>nul 2>&1"
|
|
||||||
set "_psc=%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe"
|
|
||||||
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
|
|
||||||
|
|
||||||
set _NCS=1
|
|
||||||
if %winbuild% LSS 10586 set _NCS=0
|
|
||||||
if %winbuild% GEQ 10586 reg query "HKCU\Console" /v ForceV2 2>nul | find /i "0x0" 1>nul && (set _NCS=0)
|
|
||||||
|
|
||||||
call :_colorprep
|
|
||||||
|
|
||||||
set slp=SoftwareLicensingProduct
|
|
||||||
set sls=SoftwareLicensingService
|
|
||||||
set ospp=OfficeSoftwareProtectionProduct
|
|
||||||
set wApp=55c92734-d682-4d71-983e-d6ec3f16059f
|
|
||||||
set cbs_log=%SystemRoot%\logs\cbs\cbs.log
|
|
||||||
set "nceline=echo: &echo ==== ERROR ==== &echo:"
|
|
||||||
set "eline=echo: &call :_color %Red% "==== ERROR ====" &echo:"
|
|
||||||
set "line=_________________________________________________________________________________________________"
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
if %winbuild% LSS 7600 (
|
|
||||||
%nceline%
|
|
||||||
echo Unsupported OS version detected.
|
|
||||||
echo Project is supported only for Windows 7/8/8.1/10/11 and their Server equivalent.
|
|
||||||
goto at_done
|
|
||||||
)
|
|
||||||
|
|
||||||
if not exist %_psc% (
|
|
||||||
%nceline%
|
|
||||||
echo Powershell is not installed in the system.
|
|
||||||
echo Aborting...
|
|
||||||
goto at_done
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Fix for the special characters limitation in path name
|
|
||||||
|
|
||||||
set "_batf=%~f0"
|
|
||||||
set "_batp=%_batf:'=''%"
|
|
||||||
|
|
||||||
set "_PSarg="""%~f0""" -el %_args%"
|
|
||||||
|
|
||||||
set "_ttemp=%temp%"
|
|
||||||
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
echo "!_batf!" | find /i "!_ttemp!" 1>nul && (
|
|
||||||
%nceline%
|
|
||||||
echo Script is launched from the temp folder,
|
|
||||||
echo Most likely you are running the script directly from the archive file.
|
|
||||||
echo:
|
|
||||||
echo Extract the archive file and launch the script from the extracted folder.
|
|
||||||
goto at_done
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Elevate script as admin and pass arguments and preventing loop
|
|
||||||
|
|
||||||
%nul% reg query HKU\S-1-5-19 || (
|
|
||||||
if not defined _elev %nul% %_psc% "start cmd.exe -arg '/c \"!_PSarg:'=''!\"' -verb runas" && exit /b
|
|
||||||
%nceline%
|
|
||||||
echo This script require administrator privileges.
|
|
||||||
echo To do so, right click on this script and select 'Run as administrator'.
|
|
||||||
goto at_done
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
setlocal DisableDelayedExpansion
|
|
||||||
|
|
||||||
:: Check desktop location
|
|
||||||
|
|
||||||
set desktop=
|
|
||||||
for /f "skip=2 tokens=2*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop') do call set "desktop=%%b"
|
|
||||||
if not defined desktop for /f "delims=" %%a in ('%_psc% "& {write-host $([Environment]::GetFolderPath('Desktop'))}"') do call set "desktop=%%a"
|
|
||||||
|
|
||||||
if not defined desktop (
|
|
||||||
%eline%
|
|
||||||
echo Desktop location was not detected, aborting...
|
|
||||||
goto at_done
|
|
||||||
)
|
|
||||||
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:at_menu
|
|
||||||
|
|
||||||
cls
|
|
||||||
color 07
|
|
||||||
title Activation Troubleshoot
|
|
||||||
mode con cols=77 lines=30
|
|
||||||
|
|
||||||
echo:
|
|
||||||
echo:
|
|
||||||
echo:
|
|
||||||
echo: _______________________________________________________________
|
|
||||||
echo:
|
|
||||||
echo: [1] Troubleshoot ReadMe - HWID
|
|
||||||
echo: [2] Troubleshoot ReadMe - KMS38
|
|
||||||
echo: [3] Troubleshoot ReadMe - Online KMS
|
|
||||||
echo: ___________________________________________________
|
|
||||||
echo:
|
|
||||||
echo: [4] Dism RestoreHealth
|
|
||||||
echo: [5] SFC Scannow
|
|
||||||
echo:
|
|
||||||
echo: [6] Windows Rearm - Specific SKU ID
|
|
||||||
echo: [7] Office Rearm - Specific KMS SKU ID
|
|
||||||
echo:
|
|
||||||
echo: [8] Clean ClipSVC Licences
|
|
||||||
echo: [9] Rebuild Licensing Tokens
|
|
||||||
echo:
|
|
||||||
echo: [F] Office License Is Not Genuine - Notification
|
|
||||||
echo:
|
|
||||||
echo: [0] Exit
|
|
||||||
echo: _______________________________________________________________
|
|
||||||
echo:
|
|
||||||
call :_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard :"
|
|
||||||
choice /C:123456789F0 /N
|
|
||||||
set _erl=%errorlevel%
|
|
||||||
|
|
||||||
if %_erl%==11 exit /b
|
|
||||||
if %_erl%==10 start https://windowsaddict.ml/office-license-is-not-genuine &goto at_menu
|
|
||||||
if %_erl%==9 goto:retokens
|
|
||||||
if %_erl%==8 goto:cleanclipsvc
|
|
||||||
if %_erl%==7 goto:officerearm
|
|
||||||
if %_erl%==6 goto:rearmwin
|
|
||||||
if %_erl%==5 goto:sfcscan
|
|
||||||
if %_erl%==4 goto:dism_rest
|
|
||||||
if %_erl%==3 start https://windowsaddict.ml/readme-troubleshoot-onlinekms.html &goto at_menu
|
|
||||||
if %_erl%==2 start https://windowsaddict.ml/readme-troubleshoot-kms38.html &goto at_menu
|
|
||||||
if %_erl%==1 start https://windowsaddict.ml/readme-troubleshoot-hwid.html &goto at_menu
|
|
||||||
goto :at_menu
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:dism_rest
|
|
||||||
|
|
||||||
cls
|
|
||||||
mode 98, 30
|
|
||||||
title Dism /Online /Cleanup-Image /RestoreHealth
|
|
||||||
|
|
||||||
if %winbuild% LSS 9200 (
|
|
||||||
%eline%
|
|
||||||
echo Unsupported OS version Detected.
|
|
||||||
echo This command is supported only for Windows 8/8.1/10/11 and their Server equivalent.
|
|
||||||
goto :at_back
|
|
||||||
)
|
|
||||||
|
|
||||||
set _int=
|
|
||||||
for %%a in (dns.msftncsi.com,www.microsoft.com,one.one.one.one,resolver1.opendns.com) do (
|
|
||||||
if not defined _int (for /f "delims=[] tokens=2" %%# in ('ping -n 1 %%a') do if not [%%#]==[] set _int=1))
|
|
||||||
|
|
||||||
echo:
|
|
||||||
if defined _int (
|
|
||||||
echo Checking Internet Connection [Connected]
|
|
||||||
) else (
|
|
||||||
call :_color2 %_White% " " %Red% "Checking Internet Connection [Not connected]"
|
|
||||||
)
|
|
||||||
|
|
||||||
echo %line%
|
|
||||||
echo:
|
|
||||||
echo Dism uses Windows Update to provide the files required to fix corruption.
|
|
||||||
echo This will take 5-15 minutes or more..
|
|
||||||
echo %line%
|
|
||||||
echo:
|
|
||||||
echo Notes:
|
|
||||||
echo:
|
|
||||||
call :_color2 %_White% " - " %Gray% "Make sure the Internet is connected."
|
|
||||||
call :_color2 %_White% " - " %Gray% "Make sure the Windows update is properly working."
|
|
||||||
echo:
|
|
||||||
echo %line%
|
|
||||||
echo:
|
|
||||||
choice /C:29 /N /M "> [9] Continue [2] Go back : "
|
|
||||||
if %errorlevel%==1 goto at_menu
|
|
||||||
|
|
||||||
cls
|
|
||||||
mode 110, 30
|
|
||||||
echo:
|
|
||||||
|
|
||||||
call :_stopservice TrustedInstaller
|
|
||||||
del /s /f /q "%SystemRoot%\logs\cbs\*.*"
|
|
||||||
|
|
||||||
set _time=
|
|
||||||
for /f %%a in ('%_psc% "Get-Date -format HH_mm_ss"') do set _time=%%a
|
|
||||||
echo:
|
|
||||||
echo Applying the command,
|
|
||||||
echo dism /online /cleanup-image /restorehealth /Logpath:"%SystemRoot%\Temp\RHealth_DISM_%_time%.txt" /loglevel:4
|
|
||||||
echo:
|
|
||||||
dism /online /cleanup-image /restorehealth /Logpath:"%SystemRoot%\Temp\RHealth_DISM_%_time%.txt" /loglevel:4
|
|
||||||
|
|
||||||
if not exist "!desktop!\AT_Logs\" md "!desktop!\AT_Logs\" %nul%
|
|
||||||
copy /y /b "%SystemRoot%\Temp\RHealth_DISM_%_time%.txt" "!desktop!\AT_Logs\RHealth_DISM_%_time%.txt" %nul%
|
|
||||||
copy /y /b "%cbs_log%" "!desktop!\AT_Logs\RHealth_CBS_%_time%.txt" %nul%
|
|
||||||
del /f /q "%SystemRoot%\Temp\RHealth_DISM_%_time%.txt" %nul%
|
|
||||||
|
|
||||||
echo:
|
|
||||||
call :_color %Gray% "CBS and DISM logs are copied to the AT_Logs folder on the dekstop."
|
|
||||||
goto :at_back
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:sfcscan
|
|
||||||
|
|
||||||
cls
|
|
||||||
mode 98, 30
|
|
||||||
title sfc /scannow
|
|
||||||
|
|
||||||
echo:
|
|
||||||
echo %line%
|
|
||||||
echo:
|
|
||||||
echo System File Checker will repair missing or corrupted system files.
|
|
||||||
echo This will take 10-15 minutes or more..
|
|
||||||
echo:
|
|
||||||
echo If SFC could not fix something, then run the command again to see if it may be able
|
|
||||||
echo to the next time. Sometimes it may take running the sfc /scannow command 3 times
|
|
||||||
echo restarting the PC after each time to completely fix everything that it's able to.
|
|
||||||
echo:
|
|
||||||
echo %line%
|
|
||||||
echo:
|
|
||||||
choice /C:29 /N /M "> [9] Continue [2] Go back : "
|
|
||||||
if %errorlevel%==1 goto at_menu
|
|
||||||
|
|
||||||
cls
|
|
||||||
echo:
|
|
||||||
|
|
||||||
call :_stopservice TrustedInstaller
|
|
||||||
del /s /f /q "%SystemRoot%\logs\cbs\*.*"
|
|
||||||
|
|
||||||
set _time=
|
|
||||||
for /f %%a in ('%_psc% "Get-Date -format HH_mm_ss"') do set _time=%%a
|
|
||||||
echo:
|
|
||||||
echo Applying the command,
|
|
||||||
echo sfc /scannow
|
|
||||||
echo:
|
|
||||||
sfc /scannow
|
|
||||||
|
|
||||||
if not exist "!desktop!\AT_Logs\" md "!desktop!\AT_Logs\" %nul%
|
|
||||||
|
|
||||||
copy /y /b "%cbs_log%" "!desktop!\AT_Logs\SFC_CBS_%_time%.txt" %nul%
|
|
||||||
findstr /i /c:"[SR]" %cbs_log% | findstr /i /v /c:verify >"!desktop!\AT_Logs\SFC_Main_%_time%.txt"
|
|
||||||
|
|
||||||
echo:
|
|
||||||
call :_color %Gray% "CBS and main extracted logs are copied to the AT_Logs folder on the dekstop."
|
|
||||||
goto :at_back
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:rearmwin
|
|
||||||
|
|
||||||
cls
|
|
||||||
mode 98, 30
|
|
||||||
title Windows Rearm - Specific SKU ID
|
|
||||||
|
|
||||||
if %winbuild% LSS 9600 (
|
|
||||||
%eline%
|
|
||||||
echo Unsupported OS version Detected.
|
|
||||||
echo This command is supported only for Windows 8/8.1/10/11 and their Server equivalent.
|
|
||||||
goto :at_back
|
|
||||||
)
|
|
||||||
|
|
||||||
echo:
|
|
||||||
echo %line%
|
|
||||||
echo:
|
|
||||||
echo Notes:
|
|
||||||
echo:
|
|
||||||
echo - Rearm helps in troubleshooting activation issues.
|
|
||||||
echo:
|
|
||||||
echo - Windows KMS activation will reset.
|
|
||||||
echo:
|
|
||||||
echo %line%
|
|
||||||
echo:
|
|
||||||
choice /C:29 /N /M "> [9] Continue [2] Go back : "
|
|
||||||
if %errorlevel%==1 goto at_menu
|
|
||||||
|
|
||||||
cls
|
|
||||||
mode 105, 30
|
|
||||||
echo:
|
|
||||||
echo:
|
|
||||||
set app=
|
|
||||||
net start sppsvc /y %nul%
|
|
||||||
if %winbuild% LSS 22483 for /f "tokens=2 delims==" %%a in ('"wmic path %slp% where (ApplicationID='%wApp%' and PartialProductKey is not NULL) get ID /VALUE" 2^>nul') do call set "app=%%a"
|
|
||||||
if %winbuild% GEQ 22483 for /f "tokens=2 delims==" %%a in ('%_psc% "(([WMISEARCHER]'SELECT ID FROM %slp% WHERE ApplicationID=''%wApp%'' AND PartialProductKey IS NOT NULL').Get()).ID | %% {echo ('ID='+$_)}" 2^>nul') do call set "app=%%a"
|
|
||||||
|
|
||||||
if defined app (
|
|
||||||
if %winbuild% LSS 22483 for /f "tokens=2 delims==" %%x in ('"wmic path %slp% where ID='%app%' get Name /VALUE" 2^>nul') do echo Rearming: %%x
|
|
||||||
if %winbuild% GEQ 22483 for /f "tokens=2 delims==" %%x in ('%_psc% "(([WMISEARCHER]'SELECT Name FROM %slp% WHERE ID=''%app%''').Get()).Name | %% {echo ('Name='+$_)}" 2^>nul') do echo Rearming: %%x
|
|
||||||
echo:
|
|
||||||
echo Applying the command,
|
|
||||||
if %winbuild% LSS 22483 (
|
|
||||||
echo wmic path %slp% where ID='%app%' call ReArmsku
|
|
||||||
wmic path %slp% where ID='%app%' call ReArmsku %nul%
|
|
||||||
)
|
|
||||||
if %winbuild% GEQ 22483 (
|
|
||||||
echo Powershell "$null=([WMI]'%slp%=''%app%''').ReArmsku()"
|
|
||||||
%_psc% "$null=([WMI]'%slp%=''%app%''').ReArmsku()" %nul%
|
|
||||||
)
|
|
||||||
if !errorlevel!==0 (
|
|
||||||
call :_color %Green% "[Successful]"
|
|
||||||
) else (
|
|
||||||
call :_color %Red% "[Failed]"
|
|
||||||
)
|
|
||||||
) else (
|
|
||||||
call :_color %Red% "Error- Activation ID not found"
|
|
||||||
)
|
|
||||||
|
|
||||||
goto :at_back
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:officerearm
|
|
||||||
|
|
||||||
cls
|
|
||||||
mode 98, 30
|
|
||||||
title Office Rearm - Specific KMS SKU ID
|
|
||||||
|
|
||||||
if %winbuild% LSS 9600 (
|
|
||||||
%eline%
|
|
||||||
echo Unsupported OS version Detected.
|
|
||||||
echo This command is supported only for Windows 8/8.1/10/11 and their Server equivalent.
|
|
||||||
goto :at_back
|
|
||||||
)
|
|
||||||
|
|
||||||
echo:
|
|
||||||
echo %line%
|
|
||||||
echo:
|
|
||||||
echo Notes:
|
|
||||||
echo:
|
|
||||||
echo - Rearm helps in troubleshooting activation issues.
|
|
||||||
echo:
|
|
||||||
echo - Office KMS activation will reset.
|
|
||||||
echo:
|
|
||||||
call :_color2 %_White% " - " %Gray% "Office rearm can be applied only a certain number of times."
|
|
||||||
echo:
|
|
||||||
echo %line%
|
|
||||||
echo:
|
|
||||||
choice /C:29 /N /M "> [9] Continue [2] Go back : "
|
|
||||||
if %errorlevel%==1 goto at_menu
|
|
||||||
|
|
||||||
cls
|
|
||||||
mode 105, 30
|
|
||||||
echo:
|
|
||||||
|
|
||||||
net start sppsvc /y %nul%
|
|
||||||
call :getapplist %slp%
|
|
||||||
|
|
||||||
if defined applist (
|
|
||||||
for %%# in (%applist%) do (
|
|
||||||
echo:
|
|
||||||
if %winbuild% LSS 22483 for /f "tokens=2 delims==" %%x in ('"wmic path %slp% where ID='%%#' get Name /VALUE" 2^>nul') do echo Rearming: %%x
|
|
||||||
if %winbuild% GEQ 22483 for /f "tokens=2 delims==" %%x in ('%_psc% "(([WMISEARCHER]'SELECT Name FROM %slp% WHERE ID=''%%#''').Get()).Name | %% {echo ('Name='+$_)}" 2^>nul') do echo Rearming: %%x
|
|
||||||
echo:
|
|
||||||
echo Applying the command,
|
|
||||||
if %winbuild% LSS 22483 (
|
|
||||||
echo wmic path %slp% where ID='%%#' call ReArmsku
|
|
||||||
wmic path %slp% where ID='%%#' call ReArmsku %nul%
|
|
||||||
)
|
|
||||||
if %winbuild% GEQ 22483 (
|
|
||||||
echo Powershell "$null=([WMI]'%slp%=''%%#''').ReArmsku()"
|
|
||||||
%_psc% "$null=([WMI]'%slp%=''%%#''').ReArmsku()" %nul%
|
|
||||||
)
|
|
||||||
if !errorlevel!==0 (
|
|
||||||
call :_color %Green% "[Successful]"
|
|
||||||
) else (
|
|
||||||
call :_color %Red% "[Failed]"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
) else (
|
|
||||||
echo:
|
|
||||||
echo Checking: Volume version of Office 2013-2021 is not found.
|
|
||||||
)
|
|
||||||
|
|
||||||
call :getapplist %ospp%
|
|
||||||
|
|
||||||
if defined applist (
|
|
||||||
if %winbuild% LSS 9200 (set _off=Office) else (set _off=Office 2010)
|
|
||||||
echo:
|
|
||||||
echo Skipping the Rearm of OSPP based '!_off!'
|
|
||||||
)
|
|
||||||
|
|
||||||
goto :at_back
|
|
||||||
|
|
||||||
:getapplist
|
|
||||||
|
|
||||||
set applist=
|
|
||||||
if %winbuild% LSS 22483 set "chkapp=for /f "tokens=2 delims==" %%a in ('"wmic path %1 where (Name like '%%office%%' and Description like '%%KMSCLIENT%%' and PartialProductKey is not NULL) get ID /VALUE" 2^>nul')"
|
|
||||||
if %winbuild% GEQ 22483 set "chkapp=for /f "tokens=2 delims==" %%a in ('%_psc% "(([WMISEARCHER]'SELECT ID FROM %1 WHERE Name like ''%%office%%'' and Description like ''%%KMSCLIENT%%'' and PartialProductKey is not NULL').Get()).ID ^| %% {echo ('ID='+$_)}" 2^>nul')"
|
|
||||||
%chkapp% do (if defined applist (call set "applist=!applist! %%a") else (call set "applist=%%a"))
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:retokens
|
|
||||||
|
|
||||||
cls
|
|
||||||
mode 98, 30
|
|
||||||
title Rebuild Licensing Tokens ^& Re-install System License Files
|
|
||||||
|
|
||||||
echo:
|
|
||||||
echo %line%
|
|
||||||
echo:
|
|
||||||
echo Notes:
|
|
||||||
echo:
|
|
||||||
echo - Rebuild Licensing Tokens ^& Re-install System License Files
|
|
||||||
echo It helps in troubleshooting activation issues.
|
|
||||||
echo:
|
|
||||||
call :_color2 %_White% " - " %Gray% "Windows and Office activation may reset, you may need to activate them again."
|
|
||||||
echo:
|
|
||||||
call :_color2 %_White% " - " %Magenta% "This option will uninstall Office licenses and keys."
|
|
||||||
call :_color2 %_White% " " %Magenta% "Installed Office will need to repair itself ones upon opening an office app,"
|
|
||||||
call :_color2 %_White% " " %Magenta% "you may also need to repair Office from Apps and Features in Windows Settings."
|
|
||||||
echo:
|
|
||||||
call :_color2 %_White% " - " %Gray% "Script is designed to skip rebuilding tokens where products may not be able to"
|
|
||||||
call :_color2 %_White% " " %Gray% "restore their license."
|
|
||||||
echo:
|
|
||||||
call :_color2 %_White% " - " %Red% "Apply it only when it is necessary."
|
|
||||||
echo:
|
|
||||||
echo %line%
|
|
||||||
echo:
|
|
||||||
choice /C:24 /N /M "> [4] Continue [2] Go back : "
|
|
||||||
if %errorlevel%==1 goto at_menu
|
|
||||||
|
|
||||||
cls
|
|
||||||
mode 98, 30
|
|
||||||
|
|
||||||
set nosup=
|
|
||||||
set 68=HKLM\SOFTWARE\Microsoft\Office
|
|
||||||
set 86=HKLM\SOFTWARE\Wow6432Node\Microsoft\Office
|
|
||||||
|
|
||||||
%nul% reg query %68%\16.0\Common\InstallRoot /v Path && set nosup=1 REM Office 2016 MSI x86-x64
|
|
||||||
%nul% reg query %86%\16.0\Common\InstallRoot /v Path && set nosup=1 REM Office 2016 MSI x86
|
|
||||||
%nul% reg query %68%\15.0\Common\InstallRoot /v Path && set nosup=1 REM Office 2013 MSI x86-x64
|
|
||||||
%nul% reg query %86%\15.0\Common\InstallRoot /v Path && set nosup=1 REM Office 2013 MSI x86
|
|
||||||
%nul% reg query %68%\14.0\Common\InstallRoot /v Path && set nosup=1 REM Office 2010 MSI x86-x64
|
|
||||||
%nul% reg query %86%\14.0\Common\InstallRoot /v Path && set nosup=1 REM Office 2010 MSI x86
|
|
||||||
%nul% reg query %68%\14.0\CVH /f Click2run /k && set nosup=1 REM Office 2010 C2R x86-x64
|
|
||||||
%nul% reg query %86%\14.0\CVH /f Click2run /k && set nosup=1 REM Office 2010 C2R x86
|
|
||||||
|
|
||||||
if %winbuild% GEQ 10240 reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\msoxmled.exe" %nul% && (
|
|
||||||
dir /b "%ProgramFiles%\WindowsApps\Microsoft.Office.Desktop*" %nul% && set nosup=1 REM Office UWP x86-x64
|
|
||||||
dir /b "%ProgramW6432%\WindowsApps\Microsoft.Office.Desktop*" %nul% && set nosup=1 REM Office UWP x86
|
|
||||||
)
|
|
||||||
|
|
||||||
sc qc osppsvc %nul% && (
|
|
||||||
if %winbuild% LSS 9200 (set _off=Office) else (set _off=Office 2010)
|
|
||||||
echo:
|
|
||||||
echo Skipping rebuilding OSPP tokens for detected '!_off!'
|
|
||||||
)
|
|
||||||
|
|
||||||
echo:
|
|
||||||
if defined nosup (
|
|
||||||
echo Detected Office may not be able to repair itself, hence skipping SPP tokens rebuilding...
|
|
||||||
goto :at_back
|
|
||||||
)
|
|
||||||
|
|
||||||
net start sppsvc /y %nul%
|
|
||||||
|
|
||||||
call :at_permcheck Office
|
|
||||||
if defined _perm (
|
|
||||||
echo Office is permanently activated, token rebuilding may deactivate it, hence skipping...
|
|
||||||
goto :at_back
|
|
||||||
)
|
|
||||||
|
|
||||||
if %winbuild% LSS 10240 (
|
|
||||||
call :at_permcheck Windows
|
|
||||||
if defined _perm (
|
|
||||||
echo Windows is permanently activated, token rebuilding may deactivate it, hence skipping...
|
|
||||||
goto :at_back
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
set token=
|
|
||||||
for %%# in (
|
|
||||||
%Systemdrive%\Windows\System32\spp\store_test\2.0\tokens.dat
|
|
||||||
%Systemdrive%\Windows\System32\spp\store\tokens.dat
|
|
||||||
%Systemdrive%\Windows\System32\spp\store\2.0\tokens.dat
|
|
||||||
%Systemdrive%\Windows\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform\tokens.dat
|
|
||||||
) do if exist %%# set token=%%#
|
|
||||||
|
|
||||||
echo %line%
|
|
||||||
echo:
|
|
||||||
call :_color %Gray% "Rebuilding SoftwareProtectionPlatform tokens.dat"
|
|
||||||
echo %line%
|
|
||||||
echo:
|
|
||||||
|
|
||||||
if not exist "%token%" (
|
|
||||||
%eline%
|
|
||||||
echo tokens.dat file not found.
|
|
||||||
echo Restart the system and try again.
|
|
||||||
goto :at_back
|
|
||||||
) else (
|
|
||||||
echo Detected tokens.dat file [%token%]
|
|
||||||
)
|
|
||||||
|
|
||||||
echo Stopping sppsvc service...
|
|
||||||
call :_stopservice sppsvc
|
|
||||||
|
|
||||||
:: data.dat and cache files are not deleted since doing that may corrupt the office license in a way that only reinstallation can fix
|
|
||||||
|
|
||||||
del /f /q %token% %nul%
|
|
||||||
if exist %token% (
|
|
||||||
call :_stopservice sppsvc
|
|
||||||
del /f /q %token% %nul%
|
|
||||||
)
|
|
||||||
|
|
||||||
echo:
|
|
||||||
if exist %token% (
|
|
||||||
call :_color %Red% "Failed to delete the tokens.dat file."
|
|
||||||
) else (
|
|
||||||
echo tokens.dat file was successfully deleted.
|
|
||||||
)
|
|
||||||
|
|
||||||
echo:
|
|
||||||
echo Reinstalling System Licenses [slmgr /rilc]...
|
|
||||||
cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% && (
|
|
||||||
echo [Successful]
|
|
||||||
) || (
|
|
||||||
call :_color %Red% "[Failed]"
|
|
||||||
)
|
|
||||||
|
|
||||||
echo:
|
|
||||||
if exist %token% (
|
|
||||||
call :_color %Green% "tokens.dat file was rebuilt successfully."
|
|
||||||
) else (
|
|
||||||
call :_color %Red% "Failed to rebuilt tokens.dat file."
|
|
||||||
)
|
|
||||||
|
|
||||||
goto :at_back
|
|
||||||
|
|
||||||
:at_permcheck
|
|
||||||
|
|
||||||
set _perm=
|
|
||||||
if %winbuild% LSS 22483 wmic path %slp% where (LicenseStatus='1' and GracePeriodRemaining='0' and PartialProductKey is not NULL) get Name /value 2>nul | findstr /i "%1" 1>nul && set _perm=1||set _perm=
|
|
||||||
if %winbuild% GEQ 22483 %_psc% "(([WMISEARCHER]'SELECT Name FROM %slp% WHERE LicenseStatus=1 AND GracePeriodRemaining=0 AND PartialProductKey IS NOT NULL').Get()).Name | %% {echo ('Name='+$_)}" 2>nul | findstr /i "%1" 1>nul && set _perm=1||set _perm=
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:cleanclipsvc
|
|
||||||
|
|
||||||
cls
|
|
||||||
mode 98, 30
|
|
||||||
title Clean ClipSVC Licences
|
|
||||||
|
|
||||||
if %winbuild% LSS 10240 (
|
|
||||||
%eline%
|
|
||||||
echo Unsupported OS version Detected.
|
|
||||||
echo This command is supported only for Windows 10/11 and their Server equivalent..
|
|
||||||
goto :at_back
|
|
||||||
)
|
|
||||||
|
|
||||||
echo:
|
|
||||||
echo %line%
|
|
||||||
echo:
|
|
||||||
echo Notes:
|
|
||||||
echo:
|
|
||||||
echo - Cleaning ClipSVC Licences helps in troubleshooting HWID-KMS38 activation issues.
|
|
||||||
echo:
|
|
||||||
call :_color2 %_White% " - " %Gray% "All installed HWID-KMS38 licences will be cleaned from the system."
|
|
||||||
echo This will remove KMS38 license from the system but HWID license can't be removed.
|
|
||||||
echo:
|
|
||||||
echo - System restart is recommended after applying it.
|
|
||||||
echo:
|
|
||||||
echo %line%
|
|
||||||
echo:
|
|
||||||
choice /C:29 /N /M "> [9] Continue [2] Go back : "
|
|
||||||
if %errorlevel%==1 goto at_menu
|
|
||||||
|
|
||||||
cls
|
|
||||||
echo:
|
|
||||||
|
|
||||||
echo Stopping ClipSVC service...
|
|
||||||
call :_stopservice ClipSVC
|
|
||||||
timeout /t 2 %nul%
|
|
||||||
|
|
||||||
:: Thanks to @mspaintmsi for informing this command info
|
|
||||||
|
|
||||||
echo:
|
|
||||||
echo Applying the command to Clean ClipSVC Licences...
|
|
||||||
echo rundll32 clipc.dll,ClipCleanUpState
|
|
||||||
|
|
||||||
rundll32 clipc.dll,ClipCleanUpState
|
|
||||||
|
|
||||||
if exist "%ProgramData%\Microsoft\Windows\ClipSVC\*.dat" del /f /q "%ProgramData%\Microsoft\Windows\ClipSVC\*.dat" %nul%
|
|
||||||
|
|
||||||
if exist "%ProgramData%\Microsoft\Windows\ClipSVC\tokens.dat" (
|
|
||||||
call :_color %Red% "[Failed]"
|
|
||||||
) else (
|
|
||||||
call :_color %Green% "[Successful]"
|
|
||||||
)
|
|
||||||
|
|
||||||
:: Below registry key (Volatile & Protected) gets created after the ClipSVC License cleanup command, and gets automatically deleted after
|
|
||||||
:: system restart. It needs to be deleted to activate the system without restart.
|
|
||||||
|
|
||||||
set "RegKey=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ClipSVC\Volatile\PersistedSystemState"
|
|
||||||
|
|
||||||
call :regown "%RegKey%" %nul%
|
|
||||||
reg delete "%RegKey%" /f %nul%
|
|
||||||
|
|
||||||
echo:
|
|
||||||
echo Deleting a Volatile ^& Protected Registry Key...
|
|
||||||
echo [%RegKey%]
|
|
||||||
reg query "%RegKey%" %nul% && (
|
|
||||||
call :_color %Red% "[Failed]"
|
|
||||||
echo Restart the system, that will delete this registry key automatically.
|
|
||||||
) || (
|
|
||||||
call :_color %Green% "[Successful]"
|
|
||||||
)
|
|
||||||
|
|
||||||
echo:
|
|
||||||
echo Restarting [ClipSVC wlidsvc LicenseManager sppsvc] services...
|
|
||||||
for %%# in (ClipSVC wlidsvc LicenseManager sppsvc) do (net stop %%# /y %nul% & net start %%# /y %nul%)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:at_back
|
|
||||||
|
|
||||||
echo:
|
|
||||||
echo %line%
|
|
||||||
echo:
|
|
||||||
call :_color %_Yellow% "Press any key to go back..."
|
|
||||||
pause >nul
|
|
||||||
goto :at_menu
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:at_done
|
|
||||||
|
|
||||||
echo:
|
|
||||||
echo Press any key to exit...
|
|
||||||
pause >nul
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:_stopservice
|
|
||||||
|
|
||||||
for %%# in (%1) do (
|
|
||||||
sc query %%# | find /i "STOPPED" %nul% || net stop %%# /y %nul%
|
|
||||||
sc query %%# | find /i "STOPPED" %nul% || sc stop %%# %nul%
|
|
||||||
)
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
::========================================================================================================================================\
|
|
||||||
|
|
||||||
:: A lean and mean snippet to set registry ownership and permission recursively
|
|
||||||
:: Written by @AveYo aka @BAU
|
|
||||||
:: pastebin.com/XTPt0JSC
|
|
||||||
|
|
||||||
:: Modified by @abbodi1406 to make it work in ARM64 Windows 10 (builds older than 21277) where only x86 version of PowerShell is installed.
|
|
||||||
|
|
||||||
:regown
|
|
||||||
|
|
||||||
%_psc% $A='%~1','%~2','%~3','%~4','%~5','%~6';iex(([io.file]::ReadAllText('!_batp!')-split':Own1\:.*')[1])&exit/b:Own1:
|
|
||||||
$D1=[uri].module.gettype('System.Diagnostics.Process')."GetM`ethods"(42) |where {$_.Name -eq 'SetPrivilege'} #`:no-ev-warn
|
|
||||||
'SeSecurityPrivilege','SeTakeOwnershipPrivilege','SeBackupPrivilege','SeRestorePrivilege'|foreach {$D1.Invoke($null, @("$_",2))}
|
|
||||||
$path=$A[0]; $rk=$path-split'\\',2; switch -regex ($rk[0]){'[mM]'{$hv=2147483650};'[uU]'{$hv=2147483649};default{$hv=2147483648};}
|
|
||||||
$HK=[Microsoft.Win32.RegistryKey]::OpenBaseKey($hv, 256); $s=$A[1]; $sps=[Security.Principal.SecurityIdentifier]
|
|
||||||
$u=($A[2],'S-1-5-32-544')[!$A[2]];$o=($A[3],$u)[!$A[3]];$w=$u,$o |% {new-object $sps($_)}; $old=!$A[3];$own=!$old; $y=$s-eq'all'
|
|
||||||
$rar=new-object Security.AccessControl.RegistryAccessRule( $w[0], ($A[5],'FullControl')[!$A[5]], 1, 0, ($A[4],'Allow')[!$A[4]] )
|
|
||||||
$x=$s-eq'none';function Own1($k){$t=$HK.OpenSubKey($k,2,'TakeOwnership');if($t){0,4|%{try{$o=$t.GetAccessControl($_)}catch{$old=0}
|
|
||||||
};if($old){$own=1;$w[1]=$o.GetOwner($sps)};$o.SetOwner($w[0]);$t.SetAccessControl($o); $c=$HK.OpenSubKey($k,2,'ChangePermissions')
|
|
||||||
$p=$c.GetAccessControl(2);if($y){$p.SetAccessRuleProtection(1,1)};$p.ResetAccessRule($rar);if($x){$p.RemoveAccessRuleAll($rar)}
|
|
||||||
$c.SetAccessControl($p);if($own){$o.SetOwner($w[1]);$t.SetAccessControl($o)};if($s){$($subkeys=$HK.OpenSubKey($k).GetSubKeyNames()) 2>$null;
|
|
||||||
foreach($n in $subkeys){Own1 "$k\$n"}}}};Own1 $rk[1];if($env:VO){get-acl Registry::$path|fl} #:Own1: lean & mean snippet by AveYo
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:_color
|
|
||||||
|
|
||||||
if %_NCS% EQU 1 (
|
|
||||||
echo %esc%[%~1%~2%esc%[0m
|
|
||||||
) else (
|
|
||||||
call :batcol %~1 "%~2"
|
|
||||||
)
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
:_color2
|
|
||||||
|
|
||||||
if %_NCS% EQU 1 (
|
|
||||||
echo %esc%[%~1%~2%esc%[%~3%~4%esc%[0m
|
|
||||||
) else (
|
|
||||||
call :batcol %~1 "%~2" %~3 "%~4"
|
|
||||||
)
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
::=======================================
|
|
||||||
|
|
||||||
:: Colored text with pure batch method
|
|
||||||
:: Thanks to @dbenham and @jeb
|
|
||||||
:: stackoverflow.com/a/10407642
|
|
||||||
|
|
||||||
:batcol
|
|
||||||
|
|
||||||
pushd %_coltemp%
|
|
||||||
if not exist "'" (<nul >"'" set /p "=.")
|
|
||||||
setlocal
|
|
||||||
set "s=%~2"
|
|
||||||
set "t=%~4"
|
|
||||||
call :_batcol %1 s %3 t
|
|
||||||
del /f /q "'"
|
|
||||||
del /f /q "`.txt"
|
|
||||||
popd
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
:_batcol
|
|
||||||
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
set "s=!%~2!"
|
|
||||||
set "t=!%~4!"
|
|
||||||
for /f delims^=^ eol^= %%i in ("!s!") do (
|
|
||||||
if "!" equ "" setlocal DisableDelayedExpansion
|
|
||||||
>`.txt (echo %%i\..\')
|
|
||||||
findstr /a:%~1 /f:`.txt "."
|
|
||||||
<nul set /p "=%_BS%%_BS%%_BS%%_BS%%_BS%%_BS%%_BS%"
|
|
||||||
)
|
|
||||||
if "%~4"=="" echo(&exit /b
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
for /f delims^=^ eol^= %%i in ("!t!") do (
|
|
||||||
if "!" equ "" setlocal DisableDelayedExpansion
|
|
||||||
>`.txt (echo %%i\..\')
|
|
||||||
findstr /a:%~3 /f:`.txt "."
|
|
||||||
<nul set /p "=%_BS%%_BS%%_BS%%_BS%%_BS%%_BS%%_BS%"
|
|
||||||
)
|
|
||||||
echo(
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
::=======================================
|
|
||||||
|
|
||||||
:_colorprep
|
|
||||||
|
|
||||||
if %_NCS% EQU 1 (
|
|
||||||
for /F %%a in ('echo prompt $E ^| cmd') do set "esc=%%a"
|
|
||||||
|
|
||||||
set "Red="41;97m""
|
|
||||||
set "Gray="100;97m""
|
|
||||||
set "Black="30m""
|
|
||||||
set "Green="42;97m""
|
|
||||||
set "Blue="44;97m""
|
|
||||||
set "Yellow="43;97m""
|
|
||||||
set "Magenta="45;97m""
|
|
||||||
|
|
||||||
set "_Red="40;91m""
|
|
||||||
set "_Green="40;92m""
|
|
||||||
set "_Blue="40;94m""
|
|
||||||
set "_White="40;37m""
|
|
||||||
set "_Yellow="40;93m""
|
|
||||||
|
|
||||||
exit /b
|
|
||||||
)
|
|
||||||
|
|
||||||
for /f %%A in ('"prompt $H&for %%B in (1) do rem"') do set "_BS=%%A %%A"
|
|
||||||
set "_coltemp=%SystemRoot%\Temp"
|
|
||||||
|
|
||||||
set "Red="CF""
|
|
||||||
set "Gray="8F""
|
|
||||||
set "Black="00""
|
|
||||||
set "Green="2F""
|
|
||||||
set "Blue="1F""
|
|
||||||
set "Yellow="6F""
|
|
||||||
set "Magenta="5F""
|
|
||||||
|
|
||||||
set "_Red="0C""
|
|
||||||
set "_Green="0A""
|
|
||||||
set "_Blue="09""
|
|
||||||
set "_White="07""
|
|
||||||
set "_Yellow="0E""
|
|
||||||
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
|
@ -1,434 +0,0 @@
|
||||||
@setlocal DisableDelayedExpansion
|
|
||||||
@echo off
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
::============================================================================
|
|
||||||
::
|
|
||||||
:: This script is a part of 'Microsoft Activation Scripts' (MAS) project.
|
|
||||||
::
|
|
||||||
:: Homepage: windowsaddict.ml
|
|
||||||
:: Email: windowsaddict@protonmail.com
|
|
||||||
::
|
|
||||||
::============================================================================
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Re-launch the script with x64 process if it was initiated by x86 process on x64 bit Windows
|
|
||||||
:: or with ARM64 process if it was initiated by x86/ARM32 process on ARM64 Windows
|
|
||||||
|
|
||||||
if exist %SystemRoot%\Sysnative\cmd.exe (
|
|
||||||
set "_cmdf=%~f0"
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
start %SystemRoot%\Sysnative\cmd.exe /c ""!_cmdf!" %*"
|
|
||||||
exit /b
|
|
||||||
)
|
|
||||||
|
|
||||||
:: Re-launch the script with ARM32 process if it was initiated by x64 process on ARM64 Windows
|
|
||||||
|
|
||||||
if exist %SystemRoot%\SysArm32\cmd.exe if %PROCESSOR_ARCHITECTURE%==AMD64 (
|
|
||||||
set "_cmdf=%~f0"
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
start %SystemRoot%\SysArm32\cmd.exe /c ""!_cmdf!" %*"
|
|
||||||
exit /b
|
|
||||||
)
|
|
||||||
|
|
||||||
:: Set Path variable, it helps if it is misconfigured in the system
|
|
||||||
|
|
||||||
set "SysPath=%SystemRoot%\System32"
|
|
||||||
if exist "%SystemRoot%\Sysnative\reg.exe" (set "SysPath=%SystemRoot%\Sysnative")
|
|
||||||
set "Path=%SysPath%;%SystemRoot%;%SysPath%\Wbem;%SysPath%\WindowsPowerShell\v1.0\"
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
cls
|
|
||||||
color 07
|
|
||||||
title Change Windows 10-11 Edition
|
|
||||||
|
|
||||||
set _elev=
|
|
||||||
if /i "%~1"=="-el" set _elev=1
|
|
||||||
|
|
||||||
set winbuild=1
|
|
||||||
set "nul=>nul 2>&1"
|
|
||||||
set "_psc=%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe"
|
|
||||||
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
|
|
||||||
|
|
||||||
set _NCS=1
|
|
||||||
if %winbuild% LSS 10586 set _NCS=0
|
|
||||||
if %winbuild% GEQ 10586 reg query "HKCU\Console" /v ForceV2 2>nul | find /i "0x0" 1>nul && (set _NCS=0)
|
|
||||||
|
|
||||||
if %_NCS% EQU 1 (
|
|
||||||
for /F %%a in ('echo prompt $E ^| cmd') do set "esc=%%a"
|
|
||||||
set "Red="41;97m""
|
|
||||||
set "Gray="100;97m""
|
|
||||||
set "Green="42;97m""
|
|
||||||
set "Magenta="45;97m""
|
|
||||||
set "_White="40;37m""
|
|
||||||
set "_Green="40;92m""
|
|
||||||
set "_Yellow="40;93m""
|
|
||||||
) else (
|
|
||||||
set "Red="Red" "white""
|
|
||||||
set "Gray="Darkgray" "white""
|
|
||||||
set "Green="DarkGreen" "white""
|
|
||||||
set "Magenta="Darkmagenta" "white""
|
|
||||||
set "_White="Black" "Gray""
|
|
||||||
set "_Green="Black" "Green""
|
|
||||||
set "_Yellow="Black" "Yellow""
|
|
||||||
)
|
|
||||||
|
|
||||||
set "nceline=echo: &echo ==== ERROR ==== &echo:"
|
|
||||||
set "eline=echo: &call :dk_color %Red% "==== ERROR ====" &echo:"
|
|
||||||
set slp=SoftwareLicensingProduct
|
|
||||||
set sls=SoftwareLicensingService
|
|
||||||
set wApp=55c92734-d682-4d71-983e-d6ec3f16059f
|
|
||||||
set "line=echo ___________________________________________________________________________________________"
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
if %winbuild% LSS 10240 (
|
|
||||||
%eline%
|
|
||||||
echo Unsupported OS version detected.
|
|
||||||
echo Project is supported for Windows 10/11.
|
|
||||||
goto ced_done
|
|
||||||
)
|
|
||||||
|
|
||||||
if %winbuild% GEQ 22483 if not exist %_psc% (
|
|
||||||
%nceline%
|
|
||||||
echo Powershell is not installed in the system.
|
|
||||||
goto ced_done
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Fix for the special characters limitation in path name
|
|
||||||
|
|
||||||
set "_batf=%~f0"
|
|
||||||
set "_batp=%_batf:'=''%"
|
|
||||||
|
|
||||||
set "_PSarg="""%~f0""" -el %_args%"
|
|
||||||
|
|
||||||
set "_ttemp=%temp%"
|
|
||||||
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
echo "!_batf!" | find /i "!_ttemp!" 1>nul && (
|
|
||||||
%eline%
|
|
||||||
echo Script is launched from the temp folder,
|
|
||||||
echo Most likely you are running the script directly from the archive file.
|
|
||||||
echo:
|
|
||||||
echo Extract the archive file and launch the script from the extracted folder.
|
|
||||||
goto ced_done
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Elevate script as admin and pass arguments and preventing loop
|
|
||||||
|
|
||||||
%nul% reg query HKU\S-1-5-19 || (
|
|
||||||
if not defined _elev %nul% %_psc% "start cmd.exe -arg '/c \"!_PSarg:'=''!\"' -verb runas" && exit /b
|
|
||||||
%eline%
|
|
||||||
echo This script require administrator privileges.
|
|
||||||
echo To do so, right click on this script and select 'Run as administrator'.
|
|
||||||
goto ced_done
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
mode 98, 30
|
|
||||||
echo:
|
|
||||||
echo Initializing...
|
|
||||||
|
|
||||||
:: Check WMI and sppsvc Errors
|
|
||||||
|
|
||||||
set applist=
|
|
||||||
net start sppsvc /y %nul%
|
|
||||||
if %winbuild% LSS 22483 set "chkapp=for /f "tokens=2 delims==" %%a in ('"wmic path %slp% where (ApplicationID='%wApp%') get ID /VALUE" 2^>nul')"
|
|
||||||
if %winbuild% GEQ 22483 set "chkapp=for /f "tokens=2 delims==" %%a in ('%_psc% "(([WMISEARCHER]'SELECT ID FROM %slp% WHERE ApplicationID=''%wApp%''').Get()).ID ^| %% {echo ('ID='+$_)}" 2^>nul')"
|
|
||||||
%chkapp% do (if defined applist (call set "applist=!applist! %%a") else (call set "applist=%%a"))
|
|
||||||
|
|
||||||
if not defined applist (
|
|
||||||
%eline%
|
|
||||||
echo Failed running WMI query check, verify that these services are working correctly
|
|
||||||
echo Windows Management Instrumentation [WinMgmt], Software Protection [sppsvc]
|
|
||||||
echo:
|
|
||||||
echo Script will try to enable these services.
|
|
||||||
echo:
|
|
||||||
call :dk_color %_Yellow% "Press any key to continue..."
|
|
||||||
pause >nul
|
|
||||||
for /f "skip=2 tokens=2*" %%a in ('reg query HKLM\SYSTEM\CurrentControlSet\Services\WinMgmt /v Start 2^>nul') do if /i %%b equ 0x4 (sc config WinMgmt start= auto %nul%)
|
|
||||||
net start WinMgmt /y %nul%
|
|
||||||
net stop sppsvc /y %nul%
|
|
||||||
net start sppsvc /y %nul%
|
|
||||||
cls
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Check Windows Server version
|
|
||||||
|
|
||||||
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" (
|
|
||||||
%eline%
|
|
||||||
echo Windows Server version is not supported.
|
|
||||||
goto ced_done
|
|
||||||
)
|
|
||||||
|
|
||||||
:: Refresh license status, it helps to get correct product name in Windows 17134 and later builds
|
|
||||||
|
|
||||||
call :dk_refresh
|
|
||||||
|
|
||||||
:: Check Windows Edition
|
|
||||||
|
|
||||||
set osedition=
|
|
||||||
for /f "tokens=3 delims=: " %%a in ('DISM /English /Online /Get-CurrentEdition 2^>nul ^| find /i "Current Edition :"') do set "osedition=%%a"
|
|
||||||
|
|
||||||
cls
|
|
||||||
if "%osedition%"=="" (
|
|
||||||
%eline%
|
|
||||||
echo OS Edition was not detected properly. Aborting...
|
|
||||||
goto ced_done
|
|
||||||
)
|
|
||||||
|
|
||||||
:: Check product name
|
|
||||||
|
|
||||||
set winos=
|
|
||||||
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName 2^>nul') do set "winos=%%b"
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
set _target=
|
|
||||||
for /f "tokens=4" %%a in ('dism /online /english /Get-TargetEditions ^| findstr /i /c:"Target Edition : "') do (if defined _target (set "_target=!_target! %%a") else (set "_target=%%a"))
|
|
||||||
|
|
||||||
if not defined _target (
|
|
||||||
%line%
|
|
||||||
echo:
|
|
||||||
call :dk_color %Gray% "Target Edition not found."
|
|
||||||
echo Current Edition [%osedition% ^| %winbuild%] can not be changed to any other Edition.
|
|
||||||
%line%
|
|
||||||
goto ced_done
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
%line%
|
|
||||||
echo:
|
|
||||||
call :dk_color %Gray% "You can change the Current Edition [%osedition%] to one of the following."
|
|
||||||
%line%
|
|
||||||
echo:
|
|
||||||
for %%# in (%_target%) do echo %%#
|
|
||||||
%line%
|
|
||||||
echo:
|
|
||||||
call :dk_color %_Green% "Press [1] to Continue or [2] to Exit"
|
|
||||||
choice /C:21 /N
|
|
||||||
|
|
||||||
if %errorlevel%==1 exit /b
|
|
||||||
cls
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
%line%
|
|
||||||
echo:
|
|
||||||
call :dk_color %Gray% "Current Edition - [%osedition%]"
|
|
||||||
echo:
|
|
||||||
for %%# in (%_target%) do (
|
|
||||||
choice /C:NY /N /M "Do you want to change to the [%%#] edition? [Y,N] : "
|
|
||||||
if [!errorlevel!]==[2] (
|
|
||||||
set targetedition=%%#
|
|
||||||
goto ced_change
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
%line%
|
|
||||||
goto ced_done
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:ced_change
|
|
||||||
|
|
||||||
cls
|
|
||||||
set key=
|
|
||||||
set _changepk=1
|
|
||||||
|
|
||||||
call :changeeditiondata
|
|
||||||
|
|
||||||
if not defined key (
|
|
||||||
%eline%
|
|
||||||
echo [%targetedition% ^| %winbuild%]
|
|
||||||
echo Unable to find this product key in the supported product list.
|
|
||||||
if %winbuild% GTR 19044 echo Make sure you are using updated version of the script
|
|
||||||
goto ced_done
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
%line%
|
|
||||||
|
|
||||||
:: Changing from Core to Non-Core & Changing editions in Windows build older than 17134 requires "changepk /productkey" method and restart
|
|
||||||
:: In other cases, editions can be changed instantly with "slmgr /ipk"
|
|
||||||
|
|
||||||
if %_changepk%==1 (
|
|
||||||
echo %_chan% | find /i "OEM" >NUL && (
|
|
||||||
%eline%
|
|
||||||
echo [%osedition%] can not be changed to [%targetedition%] Edition due to lack of non OEM keys.
|
|
||||||
echo Non-OEM keys are required to change from Core to Non-Core Editions.
|
|
||||||
goto ced_done
|
|
||||||
)
|
|
||||||
for %%a in (dns.msftncsi.com,www.microsoft.com,one.one.one.one,resolver1.opendns.com) do (
|
|
||||||
for /f "delims=[] tokens=2" %%# in ('ping -n 1 %%a') do (
|
|
||||||
if not [%%#]==[] (
|
|
||||||
%eline%
|
|
||||||
echo Disconnect the Internet and then try again.
|
|
||||||
goto ced_done
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
echo:
|
|
||||||
echo The system will automatically reboot to complete the process.
|
|
||||||
echo:
|
|
||||||
call :dk_color %Gray% "If the upgrade Window shows an error then you can safely ignore it."
|
|
||||||
call :dk_color %Gray% "However you will need to manually reboot the system in that case."
|
|
||||||
echo:
|
|
||||||
call :dk_color %Magenta% "Important - Save your work before continue."
|
|
||||||
echo:
|
|
||||||
choice /C:21 /N /M "[1] Continue [2] Exit : "
|
|
||||||
if !errorlevel!==1 exit /b
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
echo:
|
|
||||||
echo Changing the Current Edition [%osedition%] to [%targetedition%]
|
|
||||||
echo:
|
|
||||||
|
|
||||||
if %_changepk%==0 (
|
|
||||||
echo Installing %_chan% Key [%key%]
|
|
||||||
echo:
|
|
||||||
if %winbuild% LSS 22483 wmic path %sls% where __CLASS='%sls%' call InstallProductKey ProductKey="%key%" %nul%
|
|
||||||
if %winbuild% GEQ 22483 %_psc% "(([WMISEARCHER]'SELECT Version FROM %sls%').Get()).InstallProductKey('%key%')" %nul%
|
|
||||||
if not !errorlevel!==0 cscript //nologo %windir%\system32\slmgr.vbs /ipk %key% %nul%
|
|
||||||
|
|
||||||
if !errorlevel!==0 (
|
|
||||||
call :dk_refresh
|
|
||||||
call :dk_color %Green% "[Successful]"
|
|
||||||
echo:
|
|
||||||
call :dk_color %Gray% "Reboot is required to properly change the Edition."
|
|
||||||
) else (
|
|
||||||
%eline%
|
|
||||||
echo [Unsuccessful]
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
if %_changepk%==1 (
|
|
||||||
echo Applying the command with %_chan% Key
|
|
||||||
echo start changepk /productkey %key%
|
|
||||||
start changepk /productkey %key%
|
|
||||||
)
|
|
||||||
%line%
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:ced_done
|
|
||||||
|
|
||||||
echo:
|
|
||||||
call :dk_color %_Yellow% "Press any key to exit..."
|
|
||||||
pause >nul
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Refresh license status
|
|
||||||
|
|
||||||
:dk_refresh
|
|
||||||
|
|
||||||
if %winbuild% LSS 22483 wmic path %sls% where __CLASS='%sls%' call RefreshLicenseStatus %nul%
|
|
||||||
if %winbuild% GEQ 22483 %_psc% "$null=(([WMICLASS]'%sls%').GetInstances()).RefreshLicenseStatus()" %nul%
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:dk_color
|
|
||||||
|
|
||||||
if %_NCS% EQU 1 (
|
|
||||||
echo %esc%[%~1%~2%esc%[0m
|
|
||||||
) else (
|
|
||||||
if not exist %_psc% (echo %~3) else (%_psc% write-host -back '%1' -fore '%2' '%3')
|
|
||||||
)
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: 1st column = Activation ID
|
|
||||||
:: 2nd column = Generic Retail/OEM/MAK/GVLK Key
|
|
||||||
:: 3rd column = SKU ID
|
|
||||||
:: 4th column = 1 = activation is not working (at the time of writing this), 0 = activation is working
|
|
||||||
:: 5th column = Key Type
|
|
||||||
:: 6th column = WMI Edition ID
|
|
||||||
:: 7th column = Version name incase same Edition ID is used in different OS versions with different key
|
|
||||||
:: Separator = _
|
|
||||||
|
|
||||||
:: Key preference is in the following order. Retail > Volume:MAK > Volume:GVLK > OEM:NONSLP > OEM:DM
|
|
||||||
:: OEM keys are in last because they can't be used in edition change if "changepk /productkey" method is needed instead of "slmgr /ipk"
|
|
||||||
:: OEM keys are listed here because we don't have other keys for that edition
|
|
||||||
|
|
||||||
:changeeditiondata
|
|
||||||
|
|
||||||
for %%# in (
|
|
||||||
2ffd8952-423e-4903-b993-72a1aa44cf82_44NYX-TKR9D-CCM2D-V6B8F-HQWWR___4_0_Volume:MAK_Enterprise
|
|
||||||
23505d51-32d6-41f0-8ca7-e78ad0f16e71_D6RD9-D4N8T-RT9QX-YW6YT-FCWWJ__11_1_____Retail_Starter
|
|
||||||
c83cef07-6b72-4bbc-a28f-a00386872839_3V6Q6-NQXCX-V8YXR-9QCYV-QPFCT__27_0_Volume:MAK_EnterpriseN
|
|
||||||
211b80cc-7f64-482c-89e9-4ba21ff827ad_3NFXW-2T27M-2BDW6-4GHRV-68XRX__47_1_____Retail_StarterN
|
|
||||||
4de7cb65-cdf1-4de9-8ae8-e3cce27b9f2c_VK7JG-NPHTM-C97JM-9MPGT-3V66T__48_0_____Retail_Professional
|
|
||||||
9fbaf5d6-4d83-4422-870d-fdda6e5858aa_2B87N-8KFHP-DKV6R-Y2C8J-PKCKT__49_0_____Retail_ProfessionalN
|
|
||||||
f742e4ff-909d-4fe9-aacb-3231d24a0c58_4CPRK-NM3K3-X6XXQ-RXX86-WXCHW__98_0_____Retail_CoreN
|
|
||||||
1d1bac85-7365-4fea-949a-96978ec91ae0_N2434-X9D7W-8PF6X-8DV9T-8TYMD__99_0_____Retail_CoreCountrySpecific
|
|
||||||
3ae2cc14-ab2d-41f4-972f-5e20142771dc_BT79Q-G7N6G-PGBYW-4YWX6-6F4BT_100_0_____Retail_CoreSingleLanguage
|
|
||||||
2b1f36bb-c1cd-4306-bf5c-a0367c2d97d8_YTMG3-N6DKC-DKB77-7M9GH-8HVX7_101_0_____Retail_Core
|
|
||||||
2a6137f3-75c0-4f26-8e3e-d83d802865a4_XKCNC-J26Q9-KFHD2-FKTHY-KD72Y_119_0_OEM:NONSLP_PPIPro
|
|
||||||
e558417a-5123-4f6f-91e7-385c1c7ca9d4_YNMGQ-8RYV3-4PGQ3-C8XTP-7CFBY_121_0_____Retail_Education
|
|
||||||
c5198a66-e435-4432-89cf-ec777c9d0352_84NGF-MHBT6-FXBX8-QWJK7-DRR8H_122_0_____Retail_EducationN
|
|
||||||
cce9d2de-98ee-4ce2-8113-222620c64a27_KCNVH-YKWX8-GJJB9-H9FDT-6F7W2_125_1_Volume:MAK_EnterpriseS_2021
|
|
||||||
97348f2f-bebc-4653-a4bd-18a895d316d9_VBX36-N7DDY-M9H62-83BMJ-CPR42_125_0_Volume:MAK_EnterpriseS_2019
|
|
||||||
2782d615-3249-495b-8260-15a4c2295448_PN3KR-JXM7T-46HM4-MCQGK-7XPJQ_125_0_Volume:MAK_EnterpriseS_2016
|
|
||||||
6366a32b-72e4-4212-bf11-c22b0e98a435_DVWKN-3GCMV-Q2XF4-DDPGM-VQWWY_125_0_Volume:MAK_EnterpriseS_2015
|
|
||||||
2c060131-0e43-4e01-adc1-cf5ad1100da8_RQFNW-9TPM3-JQ73T-QV4VQ-DV9PT_126_1_Volume:MAK_EnterpriseSN_2021
|
|
||||||
e8f74caa-03fb-4839-8bcc-2e442b317e53_M33WV-NHY3C-R7FPM-BQGPT-239PG_126_1_Volume:MAK_EnterpriseSN_2019
|
|
||||||
3d1022d8-969f-4222-b54b-327f5a5af4c9_2DBW3-N2PJG-MVHW3-G7TDK-9HKR4_126_0_Volume:MAK_EnterpriseSN_2016
|
|
||||||
60c243e1-f90b-4a1b-ba89-387294948fb6_NTX6B-BRYC2-K6786-F6MVQ-M7V2X_126_0_Volume:MAK_EnterpriseSN_2015
|
|
||||||
a48938aa-62fa-4966-9d44-9f04da3f72f2_G3KNM-CHG6T-R36X3-9QDG6-8M8K9_138_1_____Retail_ProfessionalSingleLanguage
|
|
||||||
f7af7d09-40e4-419c-a49b-eae366689ebd_HNGCC-Y38KG-QVK8D-WMWRK-X86VK_139_1_____Retail_ProfessionalCountrySpecific
|
|
||||||
eb6d346f-1c60-4643-b960-40ec31596c45_DXG7C-N36C4-C4HTG-X4T3X-2YV77_161_0_____Retail_ProfessionalWorkstation
|
|
||||||
89e87510-ba92-45f6-8329-3afa905e3e83_WYPNQ-8C467-V2W6J-TX4WX-WT2RQ_162_0_____Retail_ProfessionalWorkstationN
|
|
||||||
62f0c100-9c53-4e02-b886-a3528ddfe7f6_8PTT6-RNW4C-6V7J2-C2D3X-MHBPB_164_0_____Retail_ProfessionalEducation
|
|
||||||
13a38698-4a49-4b9e-8e83-98fe51110953_GJTYN-HDMQY-FRR76-HVGC7-QPF8P_165_0_____Retail_ProfessionalEducationN
|
|
||||||
5f87a508-7e1c-4fab-9d45-2356c6002081_C4NTJ-CX6Q2-VXDMR-XVKGM-F9DJC_171_1_Volume:MAK_EnterpriseG
|
|
||||||
1681ae34-3080-4bfa-a1b5-6d792342e692_46PN6-R9BK9-CVHKB-HWQ9V-MBJY8_172_1_Volume:MAK_EnterpriseGN
|
|
||||||
df96023b-dcd9-4be2-afa0-c6c871159ebe_NJCF7-PW8QT-3324D-688JX-2YV66_175_0_____Retail_ServerRdsh
|
|
||||||
d4ef7282-3d2c-4cf0-9976-8854e64a8d1e_V3WVW-N2PV2-CGWC3-34QGF-VMJ2C_178_0_____Retail_Cloud
|
|
||||||
af5c9381-9240-417d-8d35-eb40cd03e484_NH9J3-68WK7-6FB93-4K3DF-DJ4F6_179_0_____Retail_CloudN
|
|
||||||
c7051f63-3a76-4992-bce5-731ec0b1e825_2HN6V-HGTM8-6C97C-RK67V-JQPFD_183_1_____Retail_CloudE
|
|
||||||
8ab9bdd1-1f67-4997-82d9-8878520837d9_XQQYW-NFFMW-XJPBH-K8732-CKFFD_188_0_____OEM:DM_IoTEnterprise
|
|
||||||
ed655016-a9e8-4434-95d9-4345352c2552_QPM6N-7J2WJ-P88HH-P3YRH-YY74H_191_0_OEM:NONSLP_IoTEnterpriseS
|
|
||||||
d4bdc678-0a4b-4a32-a5b3-aaa24c3b0f24_K9VKN-3BGWV-Y624W-MCRMQ-BHDCD_202_0_____Retail_CloudEditionN
|
|
||||||
92fb8726-92a8-4ffc-94ce-f82e07444653_KY7PN-VR6RX-83W6Y-6DDYQ-T6R4W_203_0_____Retail_CloudEdition
|
|
||||||
) do (
|
|
||||||
for /f "tokens=1-7 delims=_" %%A in ("%%#") do if /i %targetedition%==%%F (
|
|
||||||
|
|
||||||
if not defined key (
|
|
||||||
set 7th=%%G
|
|
||||||
if not defined 7th (
|
|
||||||
set "key=%%B" & set "_chan=%%E"
|
|
||||||
echo "!applist!" | find /i "%%A" 1>nul && set _changepk=0
|
|
||||||
) else (
|
|
||||||
echo "%winos%" | find "%%G" 1>nul && (set "key=%%B" & set "_chan=%%E" & echo "!applist!" | find /i "%%A" 1>nul && set _changepk=0)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
|
@ -1,698 +0,0 @@
|
||||||
@setlocal DisableDelayedExpansion
|
|
||||||
@echo off
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
::============================================================================
|
|
||||||
::
|
|
||||||
:: This script is a part of 'Microsoft Activation Scripts' (MAS) project.
|
|
||||||
::
|
|
||||||
:: Homepage: windowsaddict.ml
|
|
||||||
:: Email: windowsaddict@protonmail.com
|
|
||||||
::
|
|
||||||
::============================================================================
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Re-launch the script with x64 process if it was initiated by x86 process on x64 bit Windows
|
|
||||||
:: or with ARM64 process if it was initiated by x86/ARM32 process on ARM64 Windows
|
|
||||||
|
|
||||||
if exist %SystemRoot%\Sysnative\cmd.exe (
|
|
||||||
set "_cmdf=%~f0"
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
start %SystemRoot%\Sysnative\cmd.exe /c ""!_cmdf!" %*"
|
|
||||||
exit /b
|
|
||||||
)
|
|
||||||
|
|
||||||
:: Re-launch the script with ARM32 process if it was initiated by x64 process on ARM64 Windows
|
|
||||||
|
|
||||||
if exist %SystemRoot%\SysArm32\cmd.exe if %PROCESSOR_ARCHITECTURE%==AMD64 (
|
|
||||||
set "_cmdf=%~f0"
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
start %SystemRoot%\SysArm32\cmd.exe /c ""!_cmdf!" %*"
|
|
||||||
exit /b
|
|
||||||
)
|
|
||||||
|
|
||||||
:: Set Path variable, it helps if it is misconfigured in the system
|
|
||||||
|
|
||||||
set "SysPath=%SystemRoot%\System32"
|
|
||||||
if exist "%SystemRoot%\Sysnative\reg.exe" (set "SysPath=%SystemRoot%\Sysnative")
|
|
||||||
set "Path=%SysPath%;%SystemRoot%;%SysPath%\Wbem;%SysPath%\WindowsPowerShell\v1.0\"
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
cls
|
|
||||||
color 07
|
|
||||||
title Extract $OEM$ Folder
|
|
||||||
|
|
||||||
set winbuild=1
|
|
||||||
set "nul=>nul 2>&1"
|
|
||||||
set "_psc=%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe"
|
|
||||||
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
|
|
||||||
|
|
||||||
set _NCS=1
|
|
||||||
if %winbuild% LSS 10586 set _NCS=0
|
|
||||||
if %winbuild% GEQ 10586 reg query "HKCU\Console" /v ForceV2 2>nul | find /i "0x0" 1>nul && (set _NCS=0)
|
|
||||||
|
|
||||||
if %_NCS% EQU 1 (
|
|
||||||
for /F %%a in ('echo prompt $E ^| cmd') do set "esc=%%a"
|
|
||||||
set "Red="41;97m""
|
|
||||||
set "Green="42;97m""
|
|
||||||
set "Magenta="45;97m""
|
|
||||||
set "_White="40;37m""
|
|
||||||
set "_Green="40;92m""
|
|
||||||
set "_Yellow="40;93m""
|
|
||||||
) else (
|
|
||||||
set "Red="Red" "white""
|
|
||||||
set "Green="DarkGreen" "white""
|
|
||||||
set "Magenta="Darkmagenta" "white""
|
|
||||||
set "_White="Black" "Gray""
|
|
||||||
set "_Green="Black" "Green""
|
|
||||||
set "_Yellow="Black" "Yellow""
|
|
||||||
)
|
|
||||||
|
|
||||||
set "nceline=echo: &echo ==== ERROR ==== &echo:"
|
|
||||||
set "eline=echo: &call :ex_color %Red% "==== ERROR ====" &echo:"
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
if %winbuild% LSS 7600 (
|
|
||||||
%nceline%
|
|
||||||
echo Unsupported OS version Detected.
|
|
||||||
echo Project is supported only for Windows 7/8/8.1/10/11 and their Server equivalent.
|
|
||||||
goto done2
|
|
||||||
)
|
|
||||||
|
|
||||||
if not exist "%_psc%" (
|
|
||||||
%nceline%
|
|
||||||
echo Powershell is not installed in the system.
|
|
||||||
echo Aborting...
|
|
||||||
goto done2
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Check desktop location
|
|
||||||
|
|
||||||
set desktop=
|
|
||||||
for /f "skip=2 tokens=2*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop') do call set "desktop=%%b"
|
|
||||||
if not defined desktop for /f "delims=" %%a in ('%_psc% "& {write-host $([Environment]::GetFolderPath('Desktop'))}"') do call set "desktop=%%a"
|
|
||||||
|
|
||||||
if not defined desktop (
|
|
||||||
%eline%
|
|
||||||
echo Desktop location was not detected, aborting...
|
|
||||||
goto done2
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Fix for the special characters limitation in path name
|
|
||||||
|
|
||||||
set "_work=%~dp0"
|
|
||||||
if "%_work:~-1%"=="\" set "_work=%_work:~0,-1%"
|
|
||||||
|
|
||||||
set "_batf=%~f0"
|
|
||||||
set "_batp=%_batf:'=''%"
|
|
||||||
set "_pdesk=%desktop:'=''%"
|
|
||||||
|
|
||||||
set "_ttemp=%temp%"
|
|
||||||
|
|
||||||
set "_dir=%desktop%\$OEM$\$$\Setup\Scripts"
|
|
||||||
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
echo "!_batf!" | find /i "!_ttemp!" 1>nul && (
|
|
||||||
%eline%
|
|
||||||
echo Script is launched from the temp folder,
|
|
||||||
echo Most likely you are running the script directly from the archive file.
|
|
||||||
echo:
|
|
||||||
echo Extract the archive file and launch the script from the extracted folder.
|
|
||||||
goto done2
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
mode 66, 25
|
|
||||||
|
|
||||||
if exist "!desktop!\$OEM$\" (
|
|
||||||
echo _____________________________________________________
|
|
||||||
%eline%
|
|
||||||
echo $OEM$ folder already exists on the Desktop.
|
|
||||||
echo _____________________________________________________
|
|
||||||
goto done2
|
|
||||||
)
|
|
||||||
|
|
||||||
set HWID_Activation.cmd=Activators\HWID-KMS38_Activation\HWID_Activation.cmd
|
|
||||||
set KMS38_Activation.cmd=Activators\HWID-KMS38_Activation\KMS38_Activation.cmd
|
|
||||||
set ClipUp.exe=Activators\HWID-KMS38_Activation\BIN\ClipUp.exe
|
|
||||||
set gatherosstate.exe=Activators\HWID-KMS38_Activation\BIN\gatherosstate.exe
|
|
||||||
set slc.dll=Activators\HWID-KMS38_Activation\BIN\slc.dll
|
|
||||||
set arm64_gatherosstate.exe=Activators\HWID-KMS38_Activation\BIN\arm64_gatherosstate.exe
|
|
||||||
set arm64_slc.dll=Activators\HWID-KMS38_Activation\BIN\arm64_slc.dll
|
|
||||||
|
|
||||||
set Activate.cmd=Activators\Online_KMS_Activation\Activate.cmd
|
|
||||||
set cleanosppx64.exe=Activators\Online_KMS_Activation\BIN\cleanosppx64.exe
|
|
||||||
set cleanosppx86.exe=Activators\Online_KMS_Activation\BIN\cleanosppx86.exe
|
|
||||||
|
|
||||||
pushd "!_work!"
|
|
||||||
pushd ..
|
|
||||||
pushd ..
|
|
||||||
|
|
||||||
set _nofile=
|
|
||||||
for %%# in (
|
|
||||||
%HWID_Activation.cmd%
|
|
||||||
%KMS38_Activation.cmd%
|
|
||||||
%ClipUp.exe%
|
|
||||||
%gatherosstate.exe%
|
|
||||||
%slc.dll%
|
|
||||||
%arm64_gatherosstate.exe%
|
|
||||||
%arm64_slc.dll%
|
|
||||||
%Activate.cmd%
|
|
||||||
%cleanosppx64.exe%
|
|
||||||
%cleanosppx86.exe%
|
|
||||||
) do (
|
|
||||||
if not exist "%%#" set _nofile=1
|
|
||||||
)
|
|
||||||
|
|
||||||
popd
|
|
||||||
popd
|
|
||||||
popd
|
|
||||||
|
|
||||||
if defined _nofile (
|
|
||||||
echo _____________________________________________________
|
|
||||||
%eline%
|
|
||||||
echo Some files are missing in the 'Activators' folder.
|
|
||||||
echo _____________________________________________________
|
|
||||||
goto done2
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:Menu
|
|
||||||
|
|
||||||
cls
|
|
||||||
echo:
|
|
||||||
echo:
|
|
||||||
echo: Extract $OEM$ folder on the desktop
|
|
||||||
echo: For more details use Read me
|
|
||||||
echo: Here ^> means Fallback to
|
|
||||||
echo: ________________________________________________________
|
|
||||||
echo:
|
|
||||||
echo: [1] HWID
|
|
||||||
echo: [2] KMS38
|
|
||||||
echo: [3] Online KMS
|
|
||||||
echo:
|
|
||||||
echo: [4] HWID ^> KMS38
|
|
||||||
echo: [5] HWID ^> Online KMS
|
|
||||||
echo: [6] KMS38 ^> Online KMS
|
|
||||||
echo: [7] HWID ^> KMS38 ^> Online KMS
|
|
||||||
echo:
|
|
||||||
echo: [8] Exit
|
|
||||||
echo: ________________________________________________________
|
|
||||||
echo:
|
|
||||||
call :ex_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard [1,2,3,4,5,6,7,8]"
|
|
||||||
choice /C:12345678 /N
|
|
||||||
set _erl=%errorlevel%
|
|
||||||
|
|
||||||
if %_erl%==8 exit /b
|
|
||||||
if %_erl%==7 goto:hwid_kms38_kms
|
|
||||||
if %_erl%==6 goto:kms38_kms
|
|
||||||
if %_erl%==5 goto:hwid_kms
|
|
||||||
if %_erl%==4 goto:hwid_kms38
|
|
||||||
if %_erl%==3 goto:kms
|
|
||||||
if %_erl%==2 goto:kms38
|
|
||||||
if %_erl%==1 goto:hwid
|
|
||||||
goto :Menu
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:hwid
|
|
||||||
|
|
||||||
cls
|
|
||||||
call :prep
|
|
||||||
call :hwidprep
|
|
||||||
call :pop_d
|
|
||||||
call :export hwid_setup
|
|
||||||
call :hwidprep2
|
|
||||||
|
|
||||||
if defined _error goto errorfound
|
|
||||||
set "_oem=HWID"
|
|
||||||
goto done
|
|
||||||
|
|
||||||
:hwid_setup:
|
|
||||||
@echo off
|
|
||||||
|
|
||||||
reg query HKU\S-1-5-19 1>nul 2>nul || exit /b
|
|
||||||
|
|
||||||
start /b /wait cmd /c "%~dp0HWID_Activation.cmd" /a
|
|
||||||
|
|
||||||
cd \
|
|
||||||
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
|
||||||
:hwid_setup:
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:kms38
|
|
||||||
|
|
||||||
cls
|
|
||||||
call :prep
|
|
||||||
call :kms38prep
|
|
||||||
call :pop_d
|
|
||||||
call :export kms38_setup
|
|
||||||
call :kms38prep2
|
|
||||||
|
|
||||||
if defined _error goto errorfound
|
|
||||||
set "_oem=KMS38"
|
|
||||||
goto done
|
|
||||||
|
|
||||||
:kms38_setup:
|
|
||||||
@echo off
|
|
||||||
|
|
||||||
reg query HKU\S-1-5-19 1>nul 2>nul || exit /b
|
|
||||||
|
|
||||||
start /b /wait cmd /c "%~dp0KMS38_Activation.cmd" /a
|
|
||||||
|
|
||||||
cd \
|
|
||||||
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
|
||||||
:kms38_setup:
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:kms
|
|
||||||
|
|
||||||
cls
|
|
||||||
call :prep
|
|
||||||
call :kmsprep
|
|
||||||
call :pop_d
|
|
||||||
call :export kms_setup
|
|
||||||
call :kmsprep2
|
|
||||||
|
|
||||||
if defined _kerror goto errorfound
|
|
||||||
set "_oem=Online KMS"
|
|
||||||
goto done
|
|
||||||
|
|
||||||
:kms_setup:
|
|
||||||
@echo off
|
|
||||||
|
|
||||||
============================================================================
|
|
||||||
|
|
||||||
:: Change value from 1 to 0 to disable KMS Renewal And Activation Task
|
|
||||||
set Renewal_And_Activation_Task=1
|
|
||||||
|
|
||||||
:: Change value from 1 to 0 to disable KMS activation desktop context menu
|
|
||||||
set Desktop_context_menu=1
|
|
||||||
|
|
||||||
============================================================================
|
|
||||||
|
|
||||||
reg query HKU\S-1-5-19 1>nul 2>nul || exit /b
|
|
||||||
|
|
||||||
start /b /wait cmd /c "%~dp0Activate.cmd" /wo
|
|
||||||
if %Renewal_And_Activation_Task% EQU 1 start /b /wait cmd /c "%~dp0Activate.cmd" /rat
|
|
||||||
if %Desktop_context_menu% EQU 1 start /b /wait cmd /c "%~dp0Activate.cmd" /dcm
|
|
||||||
|
|
||||||
cd \
|
|
||||||
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
|
||||||
:kms_setup:
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:hwid_kms38
|
|
||||||
|
|
||||||
cls
|
|
||||||
call :prep
|
|
||||||
copy /y /b "%HWID_Activation.cmd%" "!_dir!\HWID_Activation.cmd" %nul%
|
|
||||||
call :kms38prep
|
|
||||||
call :pop_d
|
|
||||||
call :export hwid_kms38_setup
|
|
||||||
call :kms38prep2
|
|
||||||
If not exist "!_dir!\HWID_Activation.cmd" set _error=1
|
|
||||||
|
|
||||||
if defined _error goto errorfound
|
|
||||||
set "_oem=HWID [Fallback to] KMS38"
|
|
||||||
goto done
|
|
||||||
|
|
||||||
:hwid_kms38_setup:
|
|
||||||
@echo off
|
|
||||||
|
|
||||||
reg query HKU\S-1-5-19 1>nul 2>nul || exit /b
|
|
||||||
|
|
||||||
set KMS38=
|
|
||||||
set osSKU=0
|
|
||||||
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName 2^>nul') do set "winos=%%b"
|
|
||||||
for /f "tokens=3 delims=." %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions" /v OSProductPfn 2^>nul') do set "osSKU=%%a"
|
|
||||||
|
|
||||||
:: Check Windows Server version
|
|
||||||
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" set KMS38=1
|
|
||||||
|
|
||||||
:: 171=EnterpriseG, 172=EnterpriseGN, 183=CloudE
|
|
||||||
for %%# in (171 172 183) do (if %osSKU%==%%# set KMS38=1)
|
|
||||||
|
|
||||||
:: Check Enterprise LTSC 2019/2021 N
|
|
||||||
if %osSKU%==126 (echo %winos% | findstr /i "2019 2021" 1>nul && set KMS38=1)
|
|
||||||
|
|
||||||
if defined KMS38 (
|
|
||||||
start /b /wait cmd /c "%~dp0KMS38_Activation.cmd" /a
|
|
||||||
) else (
|
|
||||||
start /b /wait cmd /c "%~dp0HWID_Activation.cmd" /a
|
|
||||||
)
|
|
||||||
|
|
||||||
cd \
|
|
||||||
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
|
||||||
:hwid_kms38_setup:
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:hwid_kms
|
|
||||||
|
|
||||||
cls
|
|
||||||
call :prep
|
|
||||||
call :hwidprep
|
|
||||||
call :kmsprep
|
|
||||||
call :pop_d
|
|
||||||
call :export hwid_kms_setup
|
|
||||||
call :hwidprep2
|
|
||||||
call :kmsprep2
|
|
||||||
|
|
||||||
if defined _error goto errorfound
|
|
||||||
if defined _kerror goto errorfound
|
|
||||||
set "_oem=HWID [Fallback to] Online KMS"
|
|
||||||
goto done
|
|
||||||
|
|
||||||
:hwid_kms_setup:
|
|
||||||
@echo off
|
|
||||||
|
|
||||||
============================================================================
|
|
||||||
|
|
||||||
:: Change value from 1 to 0 to disable KMS Renewal And Activation Task
|
|
||||||
set Renewal_And_Activation_Task=1
|
|
||||||
|
|
||||||
:: Change value from 1 to 0 to disable KMS activation desktop context menu
|
|
||||||
set Desktop_context_menu=1
|
|
||||||
|
|
||||||
============================================================================
|
|
||||||
|
|
||||||
reg query HKU\S-1-5-19 1>nul 2>nul || exit /b
|
|
||||||
|
|
||||||
set KMS=
|
|
||||||
set osSKU=0
|
|
||||||
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
|
|
||||||
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName 2^>nul') do set "winos=%%b"
|
|
||||||
for /f "tokens=3 delims=." %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions" /v OSProductPfn 2^>nul') do set "osSKU=%%a"
|
|
||||||
|
|
||||||
:: Check Windows 10 install
|
|
||||||
if %winbuild% LSS 10240 set KMS=1
|
|
||||||
|
|
||||||
:: Check Windows Server version
|
|
||||||
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" set KMS=1
|
|
||||||
|
|
||||||
:: 171=EnterpriseG, 172=EnterpriseGN, 183=CloudE
|
|
||||||
for %%# in (171 172 183) do (if %osSKU%==%%# set KMS=1)
|
|
||||||
|
|
||||||
:: Check Enterprise LTSC 2019/2021 N
|
|
||||||
if %osSKU%==126 (echo %winos% | findstr /i "2019 2021" 1>nul && set KMS=1)
|
|
||||||
|
|
||||||
if defined KMS (
|
|
||||||
start /b /wait cmd /c "%~dp0Activate.cmd" /wo
|
|
||||||
) else (
|
|
||||||
start /b /wait cmd /c "%~dp0HWID_Activation.cmd" /a
|
|
||||||
start /b /wait cmd /c "%~dp0Activate.cmd" /o
|
|
||||||
)
|
|
||||||
|
|
||||||
if %Renewal_And_Activation_Task% EQU 1 start /b /wait cmd /c "%~dp0Activate.cmd" /rat
|
|
||||||
if %Desktop_context_menu% EQU 1 start /b /wait cmd /c "%~dp0Activate.cmd" /dcm
|
|
||||||
|
|
||||||
cd \
|
|
||||||
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
|
||||||
:hwid_kms_setup:
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:kms38_kms
|
|
||||||
|
|
||||||
cls
|
|
||||||
call :prep
|
|
||||||
call :kms38prep
|
|
||||||
call :kmsprep
|
|
||||||
call :pop_d
|
|
||||||
call :export kms38_kms_setup
|
|
||||||
call :kms38prep2
|
|
||||||
call :kmsprep2
|
|
||||||
|
|
||||||
if defined _error goto errorfound
|
|
||||||
if defined _kerror goto errorfound
|
|
||||||
set "_oem=KMS38 [Fallback to] Online KMS"
|
|
||||||
goto done
|
|
||||||
|
|
||||||
:kms38_kms_setup:
|
|
||||||
@echo off
|
|
||||||
|
|
||||||
============================================================================
|
|
||||||
|
|
||||||
:: Change value from 1 to 0 to disable KMS Renewal And Activation Task
|
|
||||||
set Renewal_And_Activation_Task=1
|
|
||||||
|
|
||||||
:: Change value from 1 to 0 to disable KMS activation desktop context menu
|
|
||||||
set Desktop_context_menu=1
|
|
||||||
|
|
||||||
============================================================================
|
|
||||||
|
|
||||||
reg query HKU\S-1-5-19 1>nul 2>nul || exit /b
|
|
||||||
|
|
||||||
start /b /wait cmd /c "%~dp0KMS38_Activation.cmd" /a
|
|
||||||
|
|
||||||
start /b /wait cmd /c "%~dp0Activate.cmd" /wo
|
|
||||||
if %Renewal_And_Activation_Task% EQU 1 start /b /wait cmd /c "%~dp0Activate.cmd" /rat
|
|
||||||
if %Desktop_context_menu% EQU 1 start /b /wait cmd /c "%~dp0Activate.cmd" /dcm
|
|
||||||
|
|
||||||
cd \
|
|
||||||
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
|
||||||
:kms38_kms_setup:
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:hwid_kms38_kms
|
|
||||||
|
|
||||||
cls
|
|
||||||
call :prep
|
|
||||||
copy /y /b "%HWID_Activation.cmd%" "!_dir!\HWID_Activation.cmd" %nul%
|
|
||||||
call :kms38prep
|
|
||||||
call :kmsprep
|
|
||||||
call :pop_d
|
|
||||||
call :export hwid_kms38_kms_setup
|
|
||||||
|
|
||||||
call :kms38prep2
|
|
||||||
call :kmsprep2
|
|
||||||
If not exist "!_dir!\HWID_Activation.cmd" set _error=1
|
|
||||||
|
|
||||||
if defined _error goto errorfound
|
|
||||||
if defined _kerror goto errorfound
|
|
||||||
set "_oem=HWID [Fallback to] KMS38 [Fallback to] Online KMS"
|
|
||||||
goto done
|
|
||||||
|
|
||||||
:hwid_kms38_kms_setup:
|
|
||||||
@echo off
|
|
||||||
|
|
||||||
============================================================================
|
|
||||||
|
|
||||||
:: Change value from 1 to 0 to disable KMS Renewal And Activation Task
|
|
||||||
set Renewal_And_Activation_Task=1
|
|
||||||
|
|
||||||
:: Change value from 1 to 0 to disable KMS activation desktop context menu
|
|
||||||
set Desktop_context_menu=1
|
|
||||||
|
|
||||||
============================================================================
|
|
||||||
|
|
||||||
reg query HKU\S-1-5-19 1>nul 2>nul || exit /b
|
|
||||||
|
|
||||||
set KMS=
|
|
||||||
set KMS38=
|
|
||||||
set osSKU=0
|
|
||||||
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
|
|
||||||
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName 2^>nul') do set "winos=%%b"
|
|
||||||
for /f "tokens=3 delims=." %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions" /v OSProductPfn 2^>nul') do set "osSKU=%%a"
|
|
||||||
|
|
||||||
:: Check Windows 10 install
|
|
||||||
if %winbuild% LSS 10240 set KMS=1
|
|
||||||
|
|
||||||
:: Check Windows Server version
|
|
||||||
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" set KMS38=1
|
|
||||||
|
|
||||||
:: 171=EnterpriseG, 172=EnterpriseGN, 183=CloudE
|
|
||||||
for %%# in (171 172 183) do (if %osSKU%==%%# set KMS38=1)
|
|
||||||
|
|
||||||
:: Check Enterprise LTSC 2019/2021 N
|
|
||||||
if %osSKU%==126 (echo %winos% | findstr /i "2019 2021" 1>nul && set KMS38=1)
|
|
||||||
|
|
||||||
if defined KMS38 set KMS=1
|
|
||||||
|
|
||||||
if defined KMS (
|
|
||||||
if defined KMS38 (start /b /wait cmd /c "%~dp0KMS38_Activation.cmd" /a)
|
|
||||||
start /b /wait cmd /c "%~dp0Activate.cmd" /wo
|
|
||||||
) else (
|
|
||||||
start /b /wait cmd /c "%~dp0HWID_Activation.cmd" /a
|
|
||||||
start /b /wait cmd /c "%~dp0Activate.cmd" /o
|
|
||||||
)
|
|
||||||
|
|
||||||
if %Renewal_And_Activation_Task% EQU 1 start /b /wait cmd /c "%~dp0Activate.cmd" /rat
|
|
||||||
if %Desktop_context_menu% EQU 1 start /b /wait cmd /c "%~dp0Activate.cmd" /dcm
|
|
||||||
|
|
||||||
cd \
|
|
||||||
(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
|
|
||||||
:hwid_kms38_kms_setup:
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:errorfound
|
|
||||||
|
|
||||||
%eline%
|
|
||||||
echo $OEM$ Folder was not created successfully...
|
|
||||||
goto :done2
|
|
||||||
|
|
||||||
:done
|
|
||||||
|
|
||||||
echo _______________________________________________________
|
|
||||||
echo:
|
|
||||||
call :ex_color %Magenta% "%_oem%"
|
|
||||||
call :ex_color %Green% "$OEM$ folder is successfully created on the Desktop."
|
|
||||||
echo _______________________________________________________
|
|
||||||
|
|
||||||
:done2
|
|
||||||
|
|
||||||
echo:
|
|
||||||
call :ex_color %_Yellow% "Press any key to exit..."
|
|
||||||
pause >nul
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:prep
|
|
||||||
|
|
||||||
pushd "!desktop!"
|
|
||||||
md "!desktop!\$OEM$\$$\Setup\Scripts\BIN"
|
|
||||||
pushd "!_work!"
|
|
||||||
pushd ..
|
|
||||||
pushd ..
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
:hwidprep
|
|
||||||
|
|
||||||
copy /y /b "%HWID_Activation.cmd%" "!_dir!\HWID_Activation.cmd" %nul%
|
|
||||||
copy /y /b "%gatherosstate.exe%" "!_dir!\BIN\gatherosstate.exe" %nul%
|
|
||||||
copy /y /b "%slc.dll%" "!_dir!\BIN\slc.dll" %nul%
|
|
||||||
copy /y /b "%arm64_gatherosstate.exe%" "!_dir!\BIN\arm64_gatherosstate.exe" %nul%
|
|
||||||
copy /y /b "%arm64_slc.dll%" "!_dir!\BIN\arm64_slc.dll" %nul%
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
:kms38prep
|
|
||||||
|
|
||||||
copy /y /b "%KMS38_Activation.cmd%" "!_dir!\KMS38_Activation.cmd" %nul%
|
|
||||||
copy /y /b "%ClipUp.exe%" "!_dir!\BIN\ClipUp.exe" %nul%
|
|
||||||
copy /y /b "%gatherosstate.exe%" "!_dir!\BIN\gatherosstate.exe" %nul%
|
|
||||||
copy /y /b "%slc.dll%" "!_dir!\BIN\slc.dll" %nul%
|
|
||||||
copy /y /b "%arm64_gatherosstate.exe%" "!_dir!\BIN\arm64_gatherosstate.exe" %nul%
|
|
||||||
copy /y /b "%arm64_slc.dll%" "!_dir!\BIN\arm64_slc.dll" %nul%
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
:kmsprep
|
|
||||||
|
|
||||||
copy /y /b "%Activate.cmd%" "!_dir!\Activate.cmd" %nul%
|
|
||||||
copy /y /b "%cleanosppx64.exe%" "!_dir!\BIN\cleanosppx64.exe" %nul%
|
|
||||||
copy /y /b "%cleanosppx86.exe%" "!_dir!\BIN\cleanosppx86.exe" %nul%
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
:hwidprep2
|
|
||||||
|
|
||||||
set _error=
|
|
||||||
pushd "!_dir!\"
|
|
||||||
|
|
||||||
for %%# in (
|
|
||||||
HWID_Activation.cmd
|
|
||||||
BIN\gatherosstate.exe
|
|
||||||
BIN\slc.dll
|
|
||||||
BIN\arm64_gatherosstate.exe
|
|
||||||
BIN\arm64_slc.dll
|
|
||||||
SetupComplete.cmd
|
|
||||||
) do (
|
|
||||||
if not exist "%%#" set _error=1
|
|
||||||
)
|
|
||||||
popd
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
:kms38prep2
|
|
||||||
|
|
||||||
set _error=
|
|
||||||
pushd "!_dir!\"
|
|
||||||
|
|
||||||
for %%# in (
|
|
||||||
KMS38_Activation.cmd
|
|
||||||
BIN\ClipUp.exe
|
|
||||||
BIN\gatherosstate.exe
|
|
||||||
BIN\slc.dll
|
|
||||||
BIN\arm64_gatherosstate.exe
|
|
||||||
BIN\arm64_slc.dll
|
|
||||||
SetupComplete.cmd
|
|
||||||
) do (
|
|
||||||
if not exist "%%#" set _error=1
|
|
||||||
)
|
|
||||||
popd
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
:kmsprep2
|
|
||||||
|
|
||||||
set _kerror=
|
|
||||||
pushd "!_dir!\"
|
|
||||||
|
|
||||||
for %%# in (
|
|
||||||
Activate.cmd
|
|
||||||
BIN\cleanosppx64.exe
|
|
||||||
BIN\cleanosppx86.exe
|
|
||||||
SetupComplete.cmd
|
|
||||||
) do (
|
|
||||||
if not exist "%%#" set _kerror=1
|
|
||||||
)
|
|
||||||
popd
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
:pop_d
|
|
||||||
|
|
||||||
popd
|
|
||||||
popd
|
|
||||||
popd
|
|
||||||
popd
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Extract the text from batch script without character and file encoding issue
|
|
||||||
|
|
||||||
:export
|
|
||||||
|
|
||||||
%nul% %_psc% "$f=[io.file]::ReadAllText('!_batp!') -split \":%~1\:.*`r`n\"; [io.file]::WriteAllText('!_pdesk!\$OEM$\$$\Setup\Scripts\SetupComplete.cmd',$f[1].Trim(),[System.Text.Encoding]::ASCII);"
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:ex_color
|
|
||||||
|
|
||||||
if %_NCS% EQU 1 (
|
|
||||||
echo %esc%[%~1%~2%esc%[0m
|
|
||||||
) else (
|
|
||||||
if not exist %_psc% (echo %~3) else (%_psc% write-host -back '%1' -fore '%2' '%3')
|
|
||||||
)
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
:ex_color2
|
|
||||||
|
|
||||||
if %_NCS% EQU 1 (
|
|
||||||
echo %esc%[%~1%~2%esc%[%~3%~4%esc%[0m
|
|
||||||
) else (
|
|
||||||
if not exist %_psc% (echo %~3%~6) else (%_psc% write-host -back '%1' -fore '%2' '%3' -NoNewline; write-host -back '%4' -fore '%5' '%6')
|
|
||||||
)
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
|
@ -1,3 +0,0 @@
|
||||||
<html>
|
|
||||||
<meta http-equiv="refresh" content="0; url=https://windowsaddict.ml/readme-oem-folder.html">
|
|
||||||
</html>
|
|
|
@ -1,367 +0,0 @@
|
||||||
@setlocal DisableDelayedExpansion
|
|
||||||
@echo off
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
::============================================================================
|
|
||||||
::
|
|
||||||
:: This script is a part of 'Microsoft Activation Scripts' (MAS) project.
|
|
||||||
::
|
|
||||||
:: Homepage: windowsaddict.ml
|
|
||||||
:: Email: windowsaddict@protonmail.com
|
|
||||||
::
|
|
||||||
::============================================================================
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
:: For unattended mode, run the script with /u parameter.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Re-launch the script with x64 process if it was initiated by x86 process on x64 bit Windows
|
|
||||||
:: or with ARM64 process if it was initiated by x86/ARM32 process on ARM64 Windows
|
|
||||||
|
|
||||||
if exist %SystemRoot%\Sysnative\cmd.exe (
|
|
||||||
set "_cmdf=%~f0"
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
start %SystemRoot%\Sysnative\cmd.exe /c ""!_cmdf!" %*"
|
|
||||||
exit /b
|
|
||||||
)
|
|
||||||
|
|
||||||
:: Re-launch the script with ARM32 process if it was initiated by x64 process on ARM64 Windows
|
|
||||||
|
|
||||||
if exist %SystemRoot%\SysArm32\cmd.exe if %PROCESSOR_ARCHITECTURE%==AMD64 (
|
|
||||||
set "_cmdf=%~f0"
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
start %SystemRoot%\SysArm32\cmd.exe /c ""!_cmdf!" %*"
|
|
||||||
exit /b
|
|
||||||
)
|
|
||||||
|
|
||||||
:: Set Path variable, it helps if it is misconfigured in the system
|
|
||||||
|
|
||||||
set "SysPath=%SystemRoot%\System32"
|
|
||||||
if exist "%SystemRoot%\Sysnative\reg.exe" (set "SysPath=%SystemRoot%\Sysnative")
|
|
||||||
set "Path=%SysPath%;%SystemRoot%;%SysPath%\Wbem;%SysPath%\WindowsPowerShell\v1.0\"
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
cls
|
|
||||||
color 07
|
|
||||||
title Install Windows 10-11 Retail/MAK/OEM Key
|
|
||||||
|
|
||||||
set _args=
|
|
||||||
set _elev=
|
|
||||||
set _unattended=0
|
|
||||||
|
|
||||||
set _args=%*
|
|
||||||
if defined _args set _args=%_args:"=%
|
|
||||||
if defined _args (
|
|
||||||
for %%A in (%_args%) do (
|
|
||||||
if /i "%%A"=="-el" set _elev=1
|
|
||||||
if /i "%%A"=="/u" set _unattended=1
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
set winbuild=1
|
|
||||||
set "nul=>nul 2>&1"
|
|
||||||
set "_psc=%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe"
|
|
||||||
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
|
|
||||||
|
|
||||||
set _NCS=1
|
|
||||||
if %winbuild% LSS 10586 set _NCS=0
|
|
||||||
if %winbuild% GEQ 10586 reg query "HKCU\Console" /v ForceV2 2>nul | find /i "0x0" 1>nul && (set _NCS=0)
|
|
||||||
|
|
||||||
if %_NCS% EQU 1 (
|
|
||||||
for /F %%a in ('echo prompt $E ^| cmd') do set "esc=%%a"
|
|
||||||
set "Red="41;97m""
|
|
||||||
set "Green="42;97m""
|
|
||||||
set "_Green="40;92m""
|
|
||||||
set "_Yellow="40;93m""
|
|
||||||
) else (
|
|
||||||
set "Red="Red" "white""
|
|
||||||
set "Green="DarkGreen" "white""
|
|
||||||
set "_Green="Black" "Green""
|
|
||||||
set "_Yellow="Black" "Yellow""
|
|
||||||
)
|
|
||||||
|
|
||||||
set "nceline=echo: &echo ==== ERROR ==== &echo:"
|
|
||||||
set "eline=echo: &call :dk_color %Red% "==== ERROR ====" &echo:"
|
|
||||||
set slp=SoftwareLicensingProduct
|
|
||||||
set sls=SoftwareLicensingService
|
|
||||||
set wApp=55c92734-d682-4d71-983e-d6ec3f16059f
|
|
||||||
set "line=echo ___________________________________________________________________________________________"
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
if %winbuild% LSS 10240 (
|
|
||||||
%eline%
|
|
||||||
echo Unsupported OS version detected.
|
|
||||||
echo Project is supported for Windows 10/11.
|
|
||||||
goto ins_done
|
|
||||||
)
|
|
||||||
|
|
||||||
if %winbuild% GEQ 22483 if not exist %_psc% (
|
|
||||||
%nceline%
|
|
||||||
echo Powershell is not installed in the system.
|
|
||||||
goto ins_done
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Fix for the special characters limitation in path name
|
|
||||||
|
|
||||||
set "_batf=%~f0"
|
|
||||||
set "_batp=%_batf:'=''%"
|
|
||||||
|
|
||||||
set "_PSarg="""%~f0""" -el %_args%"
|
|
||||||
|
|
||||||
set "_ttemp=%temp%"
|
|
||||||
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
echo "!_batf!" | find /i "!_ttemp!" 1>nul && (
|
|
||||||
%eline%
|
|
||||||
echo Script is launched from the temp folder,
|
|
||||||
echo Most likely you are running the script directly from the archive file.
|
|
||||||
echo:
|
|
||||||
echo Extract the archive file and launch the script from the extracted folder.
|
|
||||||
goto ins_done
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Elevate script as admin and pass arguments and preventing loop
|
|
||||||
|
|
||||||
%nul% reg query HKU\S-1-5-19 || (
|
|
||||||
if not defined _elev %nul% %_psc% "start cmd.exe -arg '/c \"!_PSarg:'=''!\"' -verb runas" && exit /b
|
|
||||||
%eline%
|
|
||||||
echo This script require administrator privileges.
|
|
||||||
echo To do so, right click on this script and select 'Run as administrator'.
|
|
||||||
goto ins_done
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
mode 98, 30
|
|
||||||
echo:
|
|
||||||
echo Initializing...
|
|
||||||
|
|
||||||
:: Check WMI and sppsvc Errors
|
|
||||||
|
|
||||||
set applist=
|
|
||||||
net start sppsvc /y %nul%
|
|
||||||
if %winbuild% LSS 22483 set "chkapp=for /f "tokens=2 delims==" %%a in ('"wmic path %slp% where (ApplicationID='%wApp%') get ID /VALUE" 2^>nul')"
|
|
||||||
if %winbuild% GEQ 22483 set "chkapp=for /f "tokens=2 delims==" %%a in ('%_psc% "(([WMISEARCHER]'SELECT ID FROM %slp% WHERE ApplicationID=''%wApp%''').Get()).ID ^| %% {echo ('ID='+$_)}" 2^>nul')"
|
|
||||||
%chkapp% do (if defined applist (call set "applist=!applist! %%a") else (call set "applist=%%a"))
|
|
||||||
|
|
||||||
if not defined applist (
|
|
||||||
%eline%
|
|
||||||
echo Failed running WMI query check, verify that these services are working correctly
|
|
||||||
echo Windows Management Instrumentation [WinMgmt], Software Protection [sppsvc]
|
|
||||||
echo:
|
|
||||||
echo Script will try to enable these services.
|
|
||||||
echo:
|
|
||||||
if %_unattended%==0 (
|
|
||||||
call :dk_color %_Yellow% "Press any key to continue..."
|
|
||||||
pause >nul
|
|
||||||
)
|
|
||||||
for /f "skip=2 tokens=2*" %%a in ('reg query HKLM\SYSTEM\CurrentControlSet\Services\WinMgmt /v Start 2^>nul') do if /i %%b equ 0x4 (sc config WinMgmt start= auto %nul%)
|
|
||||||
net start WinMgmt /y %nul%
|
|
||||||
net stop sppsvc /y %nul%
|
|
||||||
net start sppsvc /y %nul%
|
|
||||||
cls
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Refresh license status, it helps to get correct product name in Windows 17134 and later builds
|
|
||||||
|
|
||||||
call :dk_refresh
|
|
||||||
|
|
||||||
:: Check product name
|
|
||||||
|
|
||||||
set winos=
|
|
||||||
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName 2^>nul') do set "winos=%%b"
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Check SKU value
|
|
||||||
|
|
||||||
set osSKU=
|
|
||||||
for /f "tokens=3 delims=." %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions" /v OSProductPfn 2^>nul') do set "osSKU=%%a"
|
|
||||||
|
|
||||||
if not defined osSKU (
|
|
||||||
%eline%
|
|
||||||
echo SKU value was not detected properly. Aborting...
|
|
||||||
goto ins_done
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Detect key
|
|
||||||
|
|
||||||
set key=
|
|
||||||
set _chan=
|
|
||||||
|
|
||||||
if defined applist call :hwiddata attempt1
|
|
||||||
if not defined key call :hwiddata attempt2
|
|
||||||
|
|
||||||
if not defined key (
|
|
||||||
%eline%
|
|
||||||
echo Unable to find Key for [%winos% ^| SKU:%osSKU% ^| %winbuild%]
|
|
||||||
if %winbuild% GTR 19044 echo Make sure you are using updated version of the script
|
|
||||||
goto ins_done
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
if %_unattended%==1 goto insertkey
|
|
||||||
|
|
||||||
cls
|
|
||||||
%line%
|
|
||||||
echo:
|
|
||||||
echo Install [%winos% ^| SKU:%osSKU% ^| %winbuild%] %_chan% Key
|
|
||||||
echo [%key%]
|
|
||||||
%line%
|
|
||||||
echo:
|
|
||||||
call :dk_color %_Green% "Press [1] to Continue or [2] to Exit"
|
|
||||||
choice /C:21 /N
|
|
||||||
if %errorlevel%==1 exit /b
|
|
||||||
cls
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:insertkey
|
|
||||||
|
|
||||||
cls
|
|
||||||
%line%
|
|
||||||
|
|
||||||
if %winbuild% LSS 22483 wmic path %sls% where __CLASS='%sls%' call InstallProductKey ProductKey="%key%" %nul%
|
|
||||||
if %winbuild% GEQ 22483 %_psc% "(([WMISEARCHER]'SELECT Version FROM %sls%').Get()).InstallProductKey('%key%')" %nul%
|
|
||||||
if not %errorlevel%==0 cscript //nologo %windir%\system32\slmgr.vbs /ipk %key% %nul%
|
|
||||||
|
|
||||||
if %errorlevel%==0 (
|
|
||||||
call :dk_refresh
|
|
||||||
echo:
|
|
||||||
echo [%winos% ^| SKU:%osSKU% ^| %winbuild%]
|
|
||||||
echo Installing %_chan% Key [%key%]
|
|
||||||
echo:
|
|
||||||
call :dk_color %Green% "[Successful]"
|
|
||||||
) else (
|
|
||||||
%eline%
|
|
||||||
echo [%winos% ^| SKU:%osSKU% ^| %winbuild%]
|
|
||||||
echo Installing %_chan% Key [%key%]
|
|
||||||
echo:
|
|
||||||
call :dk_color %Red% "[Unsuccessful]%actidnotfound%"
|
|
||||||
)
|
|
||||||
%line%
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:ins_done
|
|
||||||
|
|
||||||
echo:
|
|
||||||
if %_unattended%==1 timeout /t 2 & exit /b
|
|
||||||
call :dk_color %_Yellow% "Press any key to exit..."
|
|
||||||
pause >nul
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Refresh license status
|
|
||||||
|
|
||||||
:dk_refresh
|
|
||||||
|
|
||||||
if %winbuild% LSS 22483 wmic path %sls% where __CLASS='%sls%' call RefreshLicenseStatus %nul%
|
|
||||||
if %winbuild% GEQ 22483 %_psc% "$null=(([WMICLASS]'%sls%').GetInstances()).RefreshLicenseStatus()" %nul%
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:dk_color
|
|
||||||
|
|
||||||
if %_NCS% EQU 1 (
|
|
||||||
echo %esc%[%~1%~2%esc%[0m
|
|
||||||
) else (
|
|
||||||
if not exist %_psc% (echo %~3) else (%_psc% write-host -back '%1' -fore '%2' '%3')
|
|
||||||
)
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: 1st column = Activation ID
|
|
||||||
:: 2nd column = Generic Retail/OEM/MAK Key
|
|
||||||
:: 3rd column = SKU ID
|
|
||||||
:: 4th column = 1 = activation is not working (at the time of writing this), 0 = activation is working
|
|
||||||
:: 5th column = Key Type
|
|
||||||
:: 6th column = WMI Edition ID
|
|
||||||
:: 7th column = Version name incase same Edition ID is used in different OS versions with different key
|
|
||||||
:: Separator = _
|
|
||||||
|
|
||||||
:: Key preference is in the following order. Retail > OEM:NONSLP > OEM:DM > Volume:MAK
|
|
||||||
|
|
||||||
:hwiddata
|
|
||||||
|
|
||||||
for %%# in (
|
|
||||||
8b351c9c-f398-4515-9900-09df49427262_XGVPP-NMH47-7TTHJ-W3FW7-8HV2C___4_0_OEM:NONSLP_Enterprise
|
|
||||||
23505d51-32d6-41f0-8ca7-e78ad0f16e71_D6RD9-D4N8T-RT9QX-YW6YT-FCWWJ__11_1_____Retail_Starter
|
|
||||||
c83cef07-6b72-4bbc-a28f-a00386872839_3V6Q6-NQXCX-V8YXR-9QCYV-QPFCT__27_0_Volume:MAK_EnterpriseN
|
|
||||||
211b80cc-7f64-482c-89e9-4ba21ff827ad_3NFXW-2T27M-2BDW6-4GHRV-68XRX__47_1_____Retail_StarterN
|
|
||||||
4de7cb65-cdf1-4de9-8ae8-e3cce27b9f2c_VK7JG-NPHTM-C97JM-9MPGT-3V66T__48_0_____Retail_Professional
|
|
||||||
9fbaf5d6-4d83-4422-870d-fdda6e5858aa_2B87N-8KFHP-DKV6R-Y2C8J-PKCKT__49_0_____Retail_ProfessionalN
|
|
||||||
f742e4ff-909d-4fe9-aacb-3231d24a0c58_4CPRK-NM3K3-X6XXQ-RXX86-WXCHW__98_0_____Retail_CoreN
|
|
||||||
1d1bac85-7365-4fea-949a-96978ec91ae0_N2434-X9D7W-8PF6X-8DV9T-8TYMD__99_0_____Retail_CoreCountrySpecific
|
|
||||||
3ae2cc14-ab2d-41f4-972f-5e20142771dc_BT79Q-G7N6G-PGBYW-4YWX6-6F4BT_100_0_____Retail_CoreSingleLanguage
|
|
||||||
2b1f36bb-c1cd-4306-bf5c-a0367c2d97d8_YTMG3-N6DKC-DKB77-7M9GH-8HVX7_101_0_____Retail_Core
|
|
||||||
2a6137f3-75c0-4f26-8e3e-d83d802865a4_XKCNC-J26Q9-KFHD2-FKTHY-KD72Y_119_0_OEM:NONSLP_PPIPro
|
|
||||||
e558417a-5123-4f6f-91e7-385c1c7ca9d4_YNMGQ-8RYV3-4PGQ3-C8XTP-7CFBY_121_0_____Retail_Education
|
|
||||||
c5198a66-e435-4432-89cf-ec777c9d0352_84NGF-MHBT6-FXBX8-QWJK7-DRR8H_122_0_____Retail_EducationN
|
|
||||||
cce9d2de-98ee-4ce2-8113-222620c64a27_KCNVH-YKWX8-GJJB9-H9FDT-6F7W2_125_1_Volume:MAK_EnterpriseS_2021
|
|
||||||
d06934ee-5448-4fd1-964a-cd077618aa06_43TBQ-NH92J-XKTM7-KT3KK-P39PB_125_0_OEM:NONSLP_EnterpriseS_2019
|
|
||||||
706e0cfd-23f4-43bb-a9af-1a492b9f1302_NK96Y-D9CD8-W44CQ-R8YTK-DYJWX_125_0_OEM:NONSLP_EnterpriseS_2016
|
|
||||||
faa57748-75c8-40a2-b851-71ce92aa8b45_FWN7H-PF93Q-4GGP8-M8RF3-MDWWW_125_0_OEM:NONSLP_EnterpriseS_2015
|
|
||||||
2c060131-0e43-4e01-adc1-cf5ad1100da8_RQFNW-9TPM3-JQ73T-QV4VQ-DV9PT_126_1_Volume:MAK_EnterpriseSN_2021
|
|
||||||
e8f74caa-03fb-4839-8bcc-2e442b317e53_M33WV-NHY3C-R7FPM-BQGPT-239PG_126_1_Volume:MAK_EnterpriseSN_2019
|
|
||||||
3d1022d8-969f-4222-b54b-327f5a5af4c9_2DBW3-N2PJG-MVHW3-G7TDK-9HKR4_126_0_Volume:MAK_EnterpriseSN_2016
|
|
||||||
60c243e1-f90b-4a1b-ba89-387294948fb6_NTX6B-BRYC2-K6786-F6MVQ-M7V2X_126_0_Volume:MAK_EnterpriseSN_2015
|
|
||||||
a48938aa-62fa-4966-9d44-9f04da3f72f2_G3KNM-CHG6T-R36X3-9QDG6-8M8K9_138_1_____Retail_ProfessionalSingleLanguage
|
|
||||||
f7af7d09-40e4-419c-a49b-eae366689ebd_HNGCC-Y38KG-QVK8D-WMWRK-X86VK_139_1_____Retail_ProfessionalCountrySpecific
|
|
||||||
eb6d346f-1c60-4643-b960-40ec31596c45_DXG7C-N36C4-C4HTG-X4T3X-2YV77_161_0_____Retail_ProfessionalWorkstation
|
|
||||||
89e87510-ba92-45f6-8329-3afa905e3e83_WYPNQ-8C467-V2W6J-TX4WX-WT2RQ_162_0_____Retail_ProfessionalWorkstationN
|
|
||||||
62f0c100-9c53-4e02-b886-a3528ddfe7f6_8PTT6-RNW4C-6V7J2-C2D3X-MHBPB_164_0_____Retail_ProfessionalEducation
|
|
||||||
13a38698-4a49-4b9e-8e83-98fe51110953_GJTYN-HDMQY-FRR76-HVGC7-QPF8P_165_0_____Retail_ProfessionalEducationN
|
|
||||||
1ca0bfa8-d96b-4815-a732-7756f30c29e2_FV469-WGNG4-YQP66-2B2HY-KD8YX_171_1_OEM:NONSLP_EnterpriseG
|
|
||||||
8d6f6ffe-0c30-40ec-9db2-aad7b23bb6e3_FW7NV-4T673-HF4VX-9X4MM-B4H4T_172_1_OEM:NONSLP_EnterpriseGN
|
|
||||||
df96023b-dcd9-4be2-afa0-c6c871159ebe_NJCF7-PW8QT-3324D-688JX-2YV66_175_0_____Retail_ServerRdsh
|
|
||||||
d4ef7282-3d2c-4cf0-9976-8854e64a8d1e_V3WVW-N2PV2-CGWC3-34QGF-VMJ2C_178_0_____Retail_Cloud
|
|
||||||
af5c9381-9240-417d-8d35-eb40cd03e484_NH9J3-68WK7-6FB93-4K3DF-DJ4F6_179_0_____Retail_CloudN
|
|
||||||
c7051f63-3a76-4992-bce5-731ec0b1e825_2HN6V-HGTM8-6C97C-RK67V-JQPFD_183_1_____Retail_CloudE
|
|
||||||
8ab9bdd1-1f67-4997-82d9-8878520837d9_XQQYW-NFFMW-XJPBH-K8732-CKFFD_188_0_____OEM:DM_IoTEnterprise
|
|
||||||
ed655016-a9e8-4434-95d9-4345352c2552_QPM6N-7J2WJ-P88HH-P3YRH-YY74H_191_0_OEM:NONSLP_IoTEnterpriseS
|
|
||||||
d4bdc678-0a4b-4a32-a5b3-aaa24c3b0f24_K9VKN-3BGWV-Y624W-MCRMQ-BHDCD_202_0_____Retail_CloudEditionN
|
|
||||||
92fb8726-92a8-4ffc-94ce-f82e07444653_KY7PN-VR6RX-83W6Y-6DDYQ-T6R4W_203_0_____Retail_CloudEdition
|
|
||||||
) do (
|
|
||||||
for /f "tokens=1-7 delims=_" %%A in ("%%#") do if %osSKU%==%%C (
|
|
||||||
|
|
||||||
if %1==attempt1 if not defined key echo "!applist!" | find /i "%%A" 1>nul && (set "key=%%B" & set "_chan=%%E" & if %%D==1 set notworking=1)
|
|
||||||
|
|
||||||
if %1==attempt2 if not defined key (
|
|
||||||
set "actidnotfound= [Mismatched Act-ID]"
|
|
||||||
set 7th=%%G
|
|
||||||
if not defined 7th (
|
|
||||||
set "key=%%B" & set "_chan=%%E" & if %%D==1 set notworking=1
|
|
||||||
) else (
|
|
||||||
echo "%winos%" | find "%%G" 1>nul && (set "key=%%B" & set "_chan=%%E" & if %%D==1 set notworking=1)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
|
@ -1,3 +0,0 @@
|
||||||
<html>
|
|
||||||
<meta http-equiv="refresh" content="0; url=https://windowsaddict.ml/">
|
|
||||||
</html>
|
|
|
@ -1,335 +0,0 @@
|
||||||
@setlocal DisableDelayedExpansion
|
|
||||||
@echo off
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
::============================================================================
|
|
||||||
::
|
|
||||||
:: This script is a part of 'Microsoft Activation Scripts' (MAS) project.
|
|
||||||
::
|
|
||||||
:: Homepage: windowsaddict.ml
|
|
||||||
:: Email: windowsaddict@protonmail.com
|
|
||||||
::
|
|
||||||
::============================================================================
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Re-launch the script with x64 process if it was initiated by x86 process on x64 bit Windows
|
|
||||||
:: or with ARM64 process if it was initiated by x86/ARM32 process on ARM64 Windows
|
|
||||||
|
|
||||||
if exist %SystemRoot%\Sysnative\cmd.exe (
|
|
||||||
set "_cmdf=%~f0"
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
start %SystemRoot%\Sysnative\cmd.exe /c ""!_cmdf!" %*"
|
|
||||||
exit /b
|
|
||||||
)
|
|
||||||
|
|
||||||
:: Re-launch the script with ARM32 process if it was initiated by x64 process on ARM64 Windows
|
|
||||||
|
|
||||||
if exist %SystemRoot%\SysArm32\cmd.exe if %PROCESSOR_ARCHITECTURE%==AMD64 (
|
|
||||||
set "_cmdf=%~f0"
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
start %SystemRoot%\SysArm32\cmd.exe /c ""!_cmdf!" %*"
|
|
||||||
exit /b
|
|
||||||
)
|
|
||||||
|
|
||||||
:: Set Path variable, it helps if it is misconfigured in the system
|
|
||||||
|
|
||||||
set "SysPath=%SystemRoot%\System32"
|
|
||||||
if exist "%SystemRoot%\Sysnative\reg.exe" (set "SysPath=%SystemRoot%\Sysnative")
|
|
||||||
set "Path=%SysPath%;%SystemRoot%;%SysPath%\Wbem;%SysPath%\WindowsPowerShell\v1.0\"
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
cls
|
|
||||||
color 07
|
|
||||||
mode con cols=65 lines=12
|
|
||||||
title Verify Files ^& Clear Zone.Identifier
|
|
||||||
|
|
||||||
set winbuild=1
|
|
||||||
set "nul=>nul 2>&1"
|
|
||||||
set "_psc=%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe"
|
|
||||||
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
|
|
||||||
|
|
||||||
set _NCS=1
|
|
||||||
if %winbuild% LSS 10586 set _NCS=0
|
|
||||||
if %winbuild% GEQ 10586 reg query "HKCU\Console" /v ForceV2 2>nul | find /i "0x0" 1>nul && (set _NCS=0)
|
|
||||||
|
|
||||||
if %_NCS% EQU 1 (
|
|
||||||
for /F %%a in ('echo prompt $E ^| cmd') do set "esc=%%a"
|
|
||||||
set "Red="41;97m""
|
|
||||||
set "Green="42;97m""
|
|
||||||
set "_Yellow="40;93m""
|
|
||||||
) else (
|
|
||||||
set "Red="Red" "white""
|
|
||||||
set "Green="DarkGreen" "white""
|
|
||||||
set "_Yellow="Black" "Yellow""
|
|
||||||
)
|
|
||||||
|
|
||||||
set "nceline=echo: &echo ==== ERROR ==== &echo:"
|
|
||||||
set "eline=echo: &call :color %Red% "==== ERROR ====" &echo:"
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Self verification (made sure that script won't crash, if it's in Unix-LF format)
|
|
||||||
|
|
||||||
set "_hash="
|
|
||||||
for /f "skip=1 tokens=* delims=" %%G in ('certutil -hashfile "%~f0" SHA1^|findstr /i /v CertUtil') do set "_hash=%%G"
|
|
||||||
set "_hash=%_hash: =%"
|
|
||||||
set "_hash=%_hash:~-2%"
|
|
||||||
set "_fina=%~n0"
|
|
||||||
set "_fina=%_fina:~-2%"
|
|
||||||
|
|
||||||
if /i not "%_hash%"=="%_fina%" (
|
|
||||||
%nceline%
|
|
||||||
echo File SHA-1 verification failed.
|
|
||||||
echo Make sure that file is not modified / renamed.
|
|
||||||
echo:
|
|
||||||
echo Press any key to exit...
|
|
||||||
pause >nul
|
|
||||||
exit /b
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
if %winbuild% LSS 7600 (
|
|
||||||
%nceline%
|
|
||||||
echo Unsupported OS version Detected.
|
|
||||||
echo Project is supported only for Windows 7/8/8.1/10/11 and their Server equivalent.
|
|
||||||
goto done
|
|
||||||
)
|
|
||||||
|
|
||||||
if not exist %_psc% (
|
|
||||||
%nceline%
|
|
||||||
echo Powershell is not installed in the system.
|
|
||||||
echo Aborting...
|
|
||||||
goto done
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Fix for the special characters limitation in path name
|
|
||||||
|
|
||||||
set "_work=%~dp0"
|
|
||||||
if "%_work:~-1%"=="\" set "_work=%_work:~0,-1%"
|
|
||||||
|
|
||||||
set "_batf=%~f0"
|
|
||||||
set "_batp=%_batf:'=''%"
|
|
||||||
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
for %%# in (All-In-One-Version,Separate-Files-Version) do (
|
|
||||||
if not exist "!_work!\%%#" (
|
|
||||||
%eline%
|
|
||||||
echo [%%~#] folder not found in the current directory.
|
|
||||||
goto done
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
set fileM=0
|
|
||||||
set hashM=0
|
|
||||||
|
|
||||||
for %%# in (
|
|
||||||
31e13b31812ea4fb3073c0ef4a0527490be5d9da+Separate-Files-Version\Extras\Change_W10_11_Edition.cmd
|
|
||||||
db4c68bba8a9c9cccfe76d0f1753a2cd922b94f2+Separate-Files-Version\Extras\Extract_OEM_Folder\Extract_OEM_Folder.cmd
|
|
||||||
d047f7b3bb205e8eb9412af11402e32a31b7906f+Separate-Files-Version\Extras\Extract_OEM_Folder\ReadMe.html
|
|
||||||
44a364ac2d6fad784aef03361fd64460fbe7357a+Separate-Files-Version\Extras\Install_W10_11_HWID_Key.cmd
|
|
||||||
89054be4d565ee7f9defa4159b1997d1bdf96d56+Separate-Files-Version\Extras\_Homepage.html
|
|
||||||
236916e59019d183a55ace4f892016d5cd2194bd+ReadMe.html
|
|
||||||
9cc32357cb46a078779e51c14402ec594acf611b+Separate-Files-Version\Activators\Online_KMS_Activation\Activate.cmd
|
|
||||||
fabb5a0fc1e6a372219711152291339af36ed0b5+Separate-Files-Version\Activators\HWID-KMS38_Activation\BIN\gatherosstate.exe
|
|
||||||
d30a0e4e5911d3ca705617d17225372731c770e2+Separate-Files-Version\Activators\Online_KMS_Activation\BIN\cleanosppx64.exe
|
|
||||||
da1afd97d92dd6026e7095ee7442a2144f78ed0b+Separate-Files-Version\Activators\HWID-KMS38_Activation\BIN\slc.dll
|
|
||||||
286f3bb552b6368a347ca74cb7407026624c4eb3+Separate-Files-Version\Activators\HWID-KMS38_Activation\BIN\_Info.html
|
|
||||||
39ed8659e7ca16aaccb86def94ce6cec4c847dd6+Separate-Files-Version\Activators\Online_KMS_Activation\BIN\cleanosppx86.exe
|
|
||||||
836ae2f742e8dbf54762f4ecc2468c68eecff6d9+Separate-Files-Version\Activators\Online_KMS_Activation\BIN\_Info.html
|
|
||||||
6cd44e7186b396016bd97802a7e28d659ac94e78+Separate-Files-Version\Activators\HWID-KMS38_Activation\HWID_Activation.cmd
|
|
||||||
81d25225805b80a5d32906f32b5aa67d00b24b0c+Separate-Files-Version\Activators\Online_KMS_Activation\ReadMe.html
|
|
||||||
5bf7ebbb3c4de976476925053b3a8e6dc689cff5+Separate-Files-Version\Extras\Activation_Troubleshoot.cmd
|
|
||||||
f4d1fa0d085bc17561416946ccbdaf419570b8f9+Separate-Files-Version\Activators\HWID-KMS38_Activation\KMS38_Activation.cmd
|
|
||||||
06ae500b740d90148a951bd7b40ddc8f9ec0a109+Separate-Files-Version\Activators\HWID-KMS38_Activation\ReadMe_HWID.html
|
|
||||||
1f90667b15471d9a74ee3a2839a8b795b623fc86+Separate-Files-Version\Activators\HWID-KMS38_Activation\ReadMe_KMS38.html
|
|
||||||
4d11828cac7728e25f6e2d1e76553d779d4a33ff+All-In-One-Version\MAS_1.5_AIO_CRC32_21D20776.cmd
|
|
||||||
f19d8a19f6a684e87e2421d185d83af3f5c24a70+Separate-Files-Version\Activators\Activations_Summary.html
|
|
||||||
c00cd43aa95e8221b8ee6a9e758eb7b128139997+Separate-Files-Version\Activators\Check-Activation-Status-vbs.cmd
|
|
||||||
27ead0b8d2b8346e55ab54bb682dc3c5afd1ed59+Separate-Files-Version\Activators\Check-Activation-Status-wmi.cmd
|
|
||||||
023d88e8e0a125f5d85ee2d999b512c4886aab29+Separate-Files-Version\Activators\HWID-KMS38_Activation\BIN\arm64_slc.dll
|
|
||||||
7e449ae5549a0d93cf65f4a1bb2aa7d1dc090d2d+Separate-Files-Version\Activators\HWID-KMS38_Activation\BIN\arm64_gatherosstate.exe
|
|
||||||
48d928b1bec25a56fe896c430c2c034b7866aa7a+Separate-Files-Version\Activators\HWID-KMS38_Activation\BIN\ClipUp.exe
|
|
||||||
) do for /f "tokens=1,2* delims=+" %%A in ("%%#") do (
|
|
||||||
if not exist "!_work!\%%B" (
|
|
||||||
set fileM=1
|
|
||||||
set hashM=1
|
|
||||||
) else (
|
|
||||||
set "_hash="
|
|
||||||
for /f "skip=1 tokens=* delims=" %%G in ('certutil -hashfile "!_work!\%%B" SHA1^|findstr /i /v CertUtil') do (
|
|
||||||
set "_hash=%%G"
|
|
||||||
set "_hash=!_hash: =!"
|
|
||||||
if /i not "%%A"=="!_hash!" set hashM=1
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
cls
|
|
||||||
echo:
|
|
||||||
|
|
||||||
set n=0
|
|
||||||
set mn=0
|
|
||||||
set cn=27
|
|
||||||
|
|
||||||
for /f %%a in ('2^>nul dir "!_work!\" /a-d/b/-o/-p/s^|find /v /c ""') do set n=%%a
|
|
||||||
|
|
||||||
if %fileM%==0 (
|
|
||||||
echo Checking Files [Passed]
|
|
||||||
) else (
|
|
||||||
call :color %Red% "Checking Files [Files Are Missing]"
|
|
||||||
)
|
|
||||||
|
|
||||||
if %n% EQU %cn% echo Checking Total Number Of Files [Passed] [%cn%]
|
|
||||||
|
|
||||||
if %n% GTR %cn% (
|
|
||||||
set /a "mn=%n%-%cn%"
|
|
||||||
call :color %Red% "Checking Total Number Of Files [!mn! - Extra Files Found]"
|
|
||||||
)
|
|
||||||
|
|
||||||
if %n% LSS %cn% (
|
|
||||||
set /a "mn=%cn%-%n%"
|
|
||||||
call :color %Red% "Checking Total Number Of Files [!mn! - Less Files Found]"
|
|
||||||
)
|
|
||||||
|
|
||||||
if %hashM%==0 (
|
|
||||||
echo Verifying Files SHA-1 Hash [Passed]
|
|
||||||
) else (
|
|
||||||
call :color %Red% "Verifying Files SHA-1 Hash [Mismatch Found]"
|
|
||||||
)
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: Clear NTFS alternate data streams (Zone.Identifier)
|
|
||||||
:: winitor.com/pdf/NtfsAlternateDataStreams.pdf
|
|
||||||
:: docs.microsoft.com/en-us/archive/blogs/askcore/alternate-data-streams-in-ntfs
|
|
||||||
|
|
||||||
set zone=0
|
|
||||||
pushd "!_work!\"
|
|
||||||
dir /s /r | find ":$DATA" 1>nul && set zone=1
|
|
||||||
|
|
||||||
if %zone%==0 (
|
|
||||||
echo Clearing Zone.Identifier From Files [Already clean]
|
|
||||||
) else (
|
|
||||||
if %winbuild% LSS 9200 (
|
|
||||||
%nul% %_psc% "iex(([io.file]::ReadAllText('!_batp!')-split':unblock\:.*')[1])"
|
|
||||||
) else (
|
|
||||||
%nul% %_psc% "& {gci -recurse | unblock-file}"
|
|
||||||
)
|
|
||||||
dir /s /r | find ":$DATA" 1>nul
|
|
||||||
if [!errorlevel!]==[0] (
|
|
||||||
call :color %Red% "Clearing Zone.Identifier From Files [Failed]
|
|
||||||
) else (
|
|
||||||
echo Clearing Zone.Identifier From Files [Passed]
|
|
||||||
)
|
|
||||||
)
|
|
||||||
popd
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:done
|
|
||||||
|
|
||||||
echo:
|
|
||||||
if not exist "%_psc%" (
|
|
||||||
echo Press any key to exit...
|
|
||||||
) else (
|
|
||||||
call :color %_Yellow% "Press any key to exit..."
|
|
||||||
)
|
|
||||||
pause >nul
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:color
|
|
||||||
|
|
||||||
if %_NCS% EQU 1 (
|
|
||||||
echo %esc%[%~1%~2%esc%[0m
|
|
||||||
) else (
|
|
||||||
%_psc% write-host -back '%1' -fore '%2' '%3'
|
|
||||||
)
|
|
||||||
exit /b
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
||||||
|
|
||||||
:: andyarismendi.blogspot.com/2012/02/unblocking-files-with-powershell.html
|
|
||||||
:: github.com/ellisgeek/Scripts_Windows/blob/master/Powershell/Helper%20Functions/Unblock-File.ps1
|
|
||||||
:: Written by @Andy Arismendi
|
|
||||||
|
|
||||||
:: This code to unblock files is used when PowerShell 2.0 is installed (Windows 7 and equivalent).
|
|
||||||
:: With PowerShell 3.0 (Windows 8 and equivalent) and above, script uses one liner cmdlet 'Unblock-File'
|
|
||||||
|
|
||||||
:unblock:
|
|
||||||
|
|
||||||
function Unblock-File {
|
|
||||||
#Requires -Version 2.0
|
|
||||||
[cmdletbinding(DefaultParameterSetName = "ByName",
|
|
||||||
SupportsShouldProcess = $True)]
|
|
||||||
param (
|
|
||||||
[parameter(Mandatory = $true,
|
|
||||||
ParameterSetName = "ByName",
|
|
||||||
Position = 0)]
|
|
||||||
[string]
|
|
||||||
$Path,
|
|
||||||
[parameter(Mandatory = $true,
|
|
||||||
ParameterSetName = "ByInput",
|
|
||||||
ValueFromPipeline = $true)]
|
|
||||||
$InputObject
|
|
||||||
)
|
|
||||||
begin {
|
|
||||||
Add-Type -Namespace Win32 -Name PInvoke -MemberDefinition @"
|
|
||||||
// msdn.microsoft.com/en-us/library/windows/desktop/aa363915(v=vs.85).aspx
|
|
||||||
[DllImport("kernel32", CharSet = CharSet.Unicode, SetLastError = true)]
|
|
||||||
[return: MarshalAs(UnmanagedType.Bool)]
|
|
||||||
private static extern bool DeleteFile(string name);
|
|
||||||
public static int Win32DeleteFile(string filePath) {
|
|
||||||
bool is_gone = DeleteFile(filePath); return Marshal.GetLastWin32Error();}
|
|
||||||
|
|
||||||
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
|
||||||
static extern int GetFileAttributes(string lpFileName);
|
|
||||||
public static bool Win32FileExists(string filePath) {return GetFileAttributes(filePath) != -1;}
|
|
||||||
"@
|
|
||||||
}
|
|
||||||
process {
|
|
||||||
switch ($PSCmdlet.ParameterSetName) {
|
|
||||||
'ByName' {
|
|
||||||
$input_paths = Resolve-Path -Path $Path | ? { [IO.File]::Exists($_.Path) } | `
|
|
||||||
Select -Exp Path
|
|
||||||
}
|
|
||||||
'ByInput' {
|
|
||||||
if ($InputObject -is [System.IO.FileInfo]) {
|
|
||||||
$input_paths = $InputObject.FullName
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$input_paths | % {
|
|
||||||
if ([Win32.PInvoke]::Win32FileExists($_ + ':Zone.Identifier')) {
|
|
||||||
if ($PSCmdlet.ShouldProcess($_)) {
|
|
||||||
$result_code = [Win32.PInvoke]::Win32DeleteFile($_ + ':Zone.Identifier')
|
|
||||||
if ([Win32.PInvoke]::Win32FileExists($_ + ':Zone.Identifier')) {
|
|
||||||
Write-Error ("Failed to unblock '{0}' the Win32 return code is '{1}'." -f `
|
|
||||||
$_, $result_code)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
gci -recurse | Unblock-File
|
|
||||||
|
|
||||||
:unblock:
|
|
||||||
|
|
||||||
::========================================================================================================================================
|
|
Loading…
Reference in a new issue