@ -2,21 +2,20 @@
@@ -2,21 +2,20 @@
@ echo off
@ cls
: :
: : Check-Activation-Status
: : Written by @abbodi1406
: : forums.mydigitallife.net/posts/838808
set _args =
set _args = %*
for %% A in ( %_args% ) do (
if /i " %% A " == " -wow " set _rel1 = 1
if /i " %% A " == " -arm " set _rel2 = 1
)
set " _cmdf= %~f0 "
: : Handle WOW64 and ARM scenarios
if exist " %SystemRoot% \Sysnative\cmd.exe " if not defined _rel1 (
setlocal EnableDelayedExpansion
start %SystemRoot% \Sysnative\cmd.exe /c " " !_cmdf! " -wow "
@ -27,8 +26,12 @@ setlocal EnableDelayedExpansion
@@ -27,8 +26,12 @@ setlocal EnableDelayedExpansion
start %SystemRoot% \SysArm32\cmd.exe /c " " !_cmdf! " -arm "
exit /b
)
: : Set console appearance
color 07
title Check Activation Status [vbs]
: : Update system paths for running commands
set " SysPath= %SystemRoot% \System32 "
set " Path= %SystemRoot% \System32; %SystemRoot% \System32\Wbem; %SystemRoot% \System32\WindowsPowerShell\v1.0\ "
if exist " %SystemRoot% \Sysnative\reg.exe " (
@ -36,8 +39,7 @@ set "SysPath=%SystemRoot%\Sysnative"
@@ -36,8 +39,7 @@ set "SysPath=%SystemRoot%\Sysnative"
set " Path= %SystemRoot% \Sysnative; %SystemRoot% \Sysnative\Wbem; %SystemRoot% \Sysnative\WindowsPowerShell\v1.0\; %Path% "
)
: : Check LF line ending
: : Check for LF line ending issues
pushd " %~dp0 "
> nul findstr /v " $ " " %~nx0 " && (
echo :
@ -49,6 +51,7 @@ exit /b
@@ -49,6 +51,7 @@ exit /b
)
popd
: : Detect Office Ohook installation
set ohook =
for %% # in ( 15 16) do (
for %% A in ( " %ProgramFiles% " " %ProgramW6432% " " %ProgramFiles(x86)% " ) do (
@ -64,21 +67,29 @@ if exist "%%~A\Microsoft %%~G\root\vfs\%%#\sppc*dll" set ohook=1
@@ -64,21 +67,29 @@ if exist "%%~A\Microsoft %%~G\root\vfs\%%#\sppc*dll" set ohook=1
)
)
: : Determine system architecture
set " _bit=64 "
set " _wow=1 "
if /i " %PROCESSOR_ARCHITECTURE% " == " x86 " if " %PROCESSOR_ARCHITEW6432% " == " " set " _wow=0 " & set " _bit=32 "
: : Initialize variables
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
: : Check for Office 2013/2016/2019/2021 installations
for %% v in ( 15 16) do (
for %% P in ( " %ProgramFiles% " " %ProgramW6432% " " %ProgramFiles(x86)% " ) do (
if exist " %% ~P\Microsoft Office\Office %% v\ospp.vbs " (
if %% v== 15 set _sO15vbs = 1
if %% v== 16 set _sO16vbs = 1
)
)
)
: : Display Windows activation status
setlocal EnableDelayedExpansion
echo %line2%
echo *** Windows Status ***
@ -86,12 +97,18 @@ echo %line2%
@@ -86,12 +97,18 @@ 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 /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%
: : Display Office activation status if Ohook is installed
if defined ohook (
echo .
echo .
@ -103,11 +120,11 @@ powershell "write-host -back 'Black' -fore 'Yellow' 'Ohook for permanent Office
@@ -103,11 +120,11 @@ powershell "write-host -back 'Black' -fore 'Yellow' 'Ohook for permanent Office
echo .
)
: : Check Office 2016 and 2019 activation status
: 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 " )
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 (
@ -120,9 +137,8 @@ cscript //nologo "!office!\ospp.vbs" /dstatus
@@ -120,9 +137,8 @@ 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 " )
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 (
@ -134,10 +150,11 @@ echo %line2%
@@ -134,10 +150,11 @@ echo %line2%
cscript //nologo " !office! \ospp.vbs " /dstatus
)
: : Check Office 2013 activation status
: 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 " )
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%
@ -147,7 +164,7 @@ cscript //nologo "!office!\ospp.vbs" /dstatus
@@ -147,7 +164,7 @@ 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 " )
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%
@ -156,9 +173,10 @@ echo %line2%
@@ -156,9 +173,10 @@ echo %line2%
cscript //nologo " !office! \ospp.vbs " /dstatus
)
: : Check Office 2010 activation status
: 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 " )
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%
@ -168,7 +186,7 @@ cscript //nologo "!office!\ospp.vbs" /dstatus
@@ -168,7 +186,7 @@ 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 " )
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%
@ -177,83 +195,28 @@ echo %line2%
@@ -177,83 +195,28 @@ echo %line2%
cscript //nologo " !office! \ospp.vbs " /dstatus
)
: : Check Office Click-to-Run activation status
: 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
reg query HKLM\SOFTWARE\WOW6432Node\Microsoft\Office\ClickToRun /v InstallPath > nul 2 >& 1 && set " install32=1 "
)
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 ***
if defined install32 (
for /f " skip=2 tokens=2* " %% a in ( '"reg query HKLM\SOFTWARE\WOW6432Node\Microsoft\Office\ClickToRun /v InstallPath" 2^>nul' ) do set " office= %% b "
) 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 "
for /f " skip=2 tokens=2* " %% a in ( '"reg query HKLM\SOFTWARE\Microsoft\Office\ClickToRun /v InstallPath" 2^>nul' ) do set " office= %% b "
)
if exist " !office! \ospp.vbs " (
echo .
echo %line2%
echo *** Office 2010 C2R Status ***
echo *** Office Click-to-Run %_bit% -bit Status ***
echo %line2%
cscript //nologo " !office! \ospp.vbs " /dstatus
)
: : End script
: casVend
echo .
echo Press any key to exit.
pause > nul
echo %line3%
echo *** Script Ended ***
echo %line3%
exit /b
: : Leave empty line below