mirror of
https://github.com/massgravel/Microsoft-Activation-Scripts.git
synced 2025-04-22 16:42:58 +00:00
Compare commits
No commits in common. "bdb9875a6baf64321fb6789faf13f648c2a7854a" and "48fb5fc5fe9124554b2adac39bf498a6894ae26b" have entirely different histories.
bdb9875a6b
...
48fb5fc5fe
@ -87,8 +87,8 @@ set "nul="
|
|||||||
@echo on
|
@echo on
|
||||||
@prompt $G
|
@prompt $G
|
||||||
@call :_debug "%_debug%" >"%~dp0_tmp.log" 2>&1
|
@call :_debug "%_debug%" >"%~dp0_tmp.log" 2>&1
|
||||||
@cmd /u /c type "%~dp0_tmp.log">"%~dp0_Debug.log"
|
cmd /u /c type "%~dp0_tmp.log">"%~dp0_Debug.log"
|
||||||
@del "%~dp0_tmp.log"
|
del "%~dp0_tmp.log"
|
||||||
@echo off
|
@echo off
|
||||||
@exit /b
|
@exit /b
|
||||||
|
|
||||||
@ -829,19 +829,33 @@ exit /b
|
|||||||
:: Get Windows Subscription status
|
:: Get Windows Subscription status
|
||||||
|
|
||||||
:winsubstatus:
|
:winsubstatus:
|
||||||
$DM = [AppDomain]::CurrentDomain.DefineDynamicAssembly(6, 1).DefineDynamicModule(4).DefineType(2)
|
$DM = [AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2)
|
||||||
[void]$DM.DefinePInvokeMethod('ClipGetSubscriptionStatus', 'Clipc.dll', 22, 1, [Int32], @([IntPtr].MakeByRefType()), 1, 3).SetImplementationFlags(128)
|
$SB = $DM.DefineType('sub_status', 9, [ValueType], 0)
|
||||||
$m = [System.Runtime.InteropServices.Marshal]
|
|
||||||
$p = $m::AllocHGlobal(12)
|
('enabled#int', 'sku#int', 'state#int').ForEach({
|
||||||
$r = $DM.CreateType()::ClipGetSubscriptionStatus([ref]$p)
|
$i = $_ -split '#'
|
||||||
|
$n = $i[0]
|
||||||
|
$t = $i[1] -as [Type]
|
||||||
|
[void]$SB.DefineField($n, $t, 6)
|
||||||
|
})
|
||||||
|
|
||||||
|
$sub_status = $SB.CreateType()
|
||||||
|
$MB = $DM.DefineType('PInvoke')
|
||||||
|
|
||||||
|
[void]$MB.DefinePInvokeMethod('ClipGetSubscriptionStatus', 'Clipc.dll', 22, 1, [UInt32], @([IntPtr].MakeByRefType()), 1, 3).SetImplementationFlags(128)
|
||||||
|
|
||||||
|
$Clipc = $MB.CreateType()
|
||||||
|
$s = [Activator]::CreateInstance($sub_status)
|
||||||
|
$p = [Runtime.InteropServices.Marshal]::AllocHGlobal([Runtime.InteropServices.Marshal]::SizeOf($s))
|
||||||
|
$r = $Clipc::ClipGetSubscriptionStatus([ref]$p)
|
||||||
|
|
||||||
if ($r -eq 0) {
|
if ($r -eq 0) {
|
||||||
$enabled = $m::ReadInt32($p)
|
$s = [Runtime.InteropServices.Marshal]::PtrToStructure($p, [type]$sub_status)
|
||||||
if ($enabled -ge 1) {
|
if ($s.enabled -ne 0) {
|
||||||
$state = $m::ReadInt32($p, 8)
|
if ($s.state -eq 1) {
|
||||||
if ($state -eq 1) {
|
"Subscription_is_activated."
|
||||||
"Subscription_is_activated."
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
:winsubstatus:
|
:winsubstatus:
|
||||||
|
|
||||||
|
@ -90,8 +90,8 @@ set "nul="
|
|||||||
@echo on
|
@echo on
|
||||||
@prompt $G
|
@prompt $G
|
||||||
@call :_debug "%_debug%" >"%~dp0_tmp.log" 2>&1
|
@call :_debug "%_debug%" >"%~dp0_tmp.log" 2>&1
|
||||||
@cmd /u /c type "%~dp0_tmp.log">"%~dp0_Debug.log"
|
cmd /u /c type "%~dp0_tmp.log">"%~dp0_Debug.log"
|
||||||
@del "%~dp0_tmp.log"
|
del "%~dp0_tmp.log"
|
||||||
@echo off
|
@echo off
|
||||||
@exit /b
|
@exit /b
|
||||||
|
|
||||||
@ -925,19 +925,33 @@ exit /b
|
|||||||
:: Get Windows Subscription status
|
:: Get Windows Subscription status
|
||||||
|
|
||||||
:winsubstatus:
|
:winsubstatus:
|
||||||
$DM = [AppDomain]::CurrentDomain.DefineDynamicAssembly(6, 1).DefineDynamicModule(4).DefineType(2)
|
$DM = [AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2)
|
||||||
[void]$DM.DefinePInvokeMethod('ClipGetSubscriptionStatus', 'Clipc.dll', 22, 1, [Int32], @([IntPtr].MakeByRefType()), 1, 3).SetImplementationFlags(128)
|
$SB = $DM.DefineType('sub_status', 9, [ValueType], 0)
|
||||||
$m = [System.Runtime.InteropServices.Marshal]
|
|
||||||
$p = $m::AllocHGlobal(12)
|
('enabled#int', 'sku#int', 'state#int').ForEach({
|
||||||
$r = $DM.CreateType()::ClipGetSubscriptionStatus([ref]$p)
|
$i = $_ -split '#'
|
||||||
|
$n = $i[0]
|
||||||
|
$t = $i[1] -as [Type]
|
||||||
|
[void]$SB.DefineField($n, $t, 6)
|
||||||
|
})
|
||||||
|
|
||||||
|
$sub_status = $SB.CreateType()
|
||||||
|
$MB = $DM.DefineType('PInvoke')
|
||||||
|
|
||||||
|
[void]$MB.DefinePInvokeMethod('ClipGetSubscriptionStatus', 'Clipc.dll', 22, 1, [UInt32], @([IntPtr].MakeByRefType()), 1, 3).SetImplementationFlags(128)
|
||||||
|
|
||||||
|
$Clipc = $MB.CreateType()
|
||||||
|
$s = [Activator]::CreateInstance($sub_status)
|
||||||
|
$p = [Runtime.InteropServices.Marshal]::AllocHGlobal([Runtime.InteropServices.Marshal]::SizeOf($s))
|
||||||
|
$r = $Clipc::ClipGetSubscriptionStatus([ref]$p)
|
||||||
|
|
||||||
if ($r -eq 0) {
|
if ($r -eq 0) {
|
||||||
$enabled = $m::ReadInt32($p)
|
$s = [Runtime.InteropServices.Marshal]::PtrToStructure($p, [type]$sub_status)
|
||||||
if ($enabled -ge 1) {
|
if ($s.enabled -ne 0) {
|
||||||
$state = $m::ReadInt32($p, 8)
|
if ($s.state -eq 1) {
|
||||||
if ($state -eq 1) {
|
"Subscription_is_activated."
|
||||||
"Subscription_is_activated."
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
:winsubstatus:
|
:winsubstatus:
|
||||||
|
|
||||||
|
@ -87,8 +87,8 @@ set "nul="
|
|||||||
@echo on
|
@echo on
|
||||||
@prompt $G
|
@prompt $G
|
||||||
@call :_debug "%_debug%" >"%~dp0_tmp.log" 2>&1
|
@call :_debug "%_debug%" >"%~dp0_tmp.log" 2>&1
|
||||||
@cmd /u /c type "%~dp0_tmp.log">"%~dp0_Debug.log"
|
cmd /u /c type "%~dp0_tmp.log">"%~dp0_Debug.log"
|
||||||
@del "%~dp0_tmp.log"
|
del "%~dp0_tmp.log"
|
||||||
@echo off
|
@echo off
|
||||||
@exit /b
|
@exit /b
|
||||||
|
|
||||||
|
@ -112,8 +112,8 @@ set "nul="
|
|||||||
@echo on
|
@echo on
|
||||||
@prompt $G
|
@prompt $G
|
||||||
@call :_debug "%_debug%" >"%~dp0_tmp.log" 2>&1
|
@call :_debug "%_debug%" >"%~dp0_tmp.log" 2>&1
|
||||||
@cmd /u /c type "%~dp0_tmp.log">"%~dp0_Debug.log"
|
cmd /u /c type "%~dp0_tmp.log">"%~dp0_Debug.log"
|
||||||
@del "%~dp0_tmp.log"
|
del "%~dp0_tmp.log"
|
||||||
@echo off
|
@echo off
|
||||||
@exit /b
|
@exit /b
|
||||||
|
|
||||||
@ -331,6 +331,14 @@ if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%v
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
:: Check not x86 Windows
|
||||||
|
|
||||||
|
set notx86=
|
||||||
|
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE') do set arch=%%b
|
||||||
|
if /i not "%arch%"=="x86" set notx86=1
|
||||||
|
|
||||||
|
::========================================================================================================================================
|
||||||
|
|
||||||
if %_uni%==1 goto :ks_uninstall
|
if %_uni%==1 goto :ks_uninstall
|
||||||
|
|
||||||
:ks_menu
|
:ks_menu
|
||||||
@ -1529,8 +1537,16 @@ goto _intrepeat
|
|||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
|
|
||||||
|
:: Check not x86 Windows
|
||||||
|
|
||||||
|
set notx86=
|
||||||
|
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE') do set arch=%%b
|
||||||
|
if /i not "%arch%"=="x86" set notx86=1
|
||||||
|
|
||||||
call :_taskclear-cache
|
call :_taskclear-cache
|
||||||
|
|
||||||
|
::========================================================================================================================================
|
||||||
|
|
||||||
:: Check WMI and sppsvc Errors
|
:: Check WMI and sppsvc Errors
|
||||||
|
|
||||||
set applist=
|
set applist=
|
||||||
@ -1851,16 +1867,18 @@ set "_oApp=0ff1ce15-a989-479d-af46-f275c6370663"
|
|||||||
set "_oA14=59a52881-a989-479d-af46-f275c6370663"
|
set "_oA14=59a52881-a989-479d-af46-f275c6370663"
|
||||||
|
|
||||||
%nul% reg delete "HKLM\%SPPk%" /f /v KeyManagementServiceName
|
%nul% reg delete "HKLM\%SPPk%" /f /v KeyManagementServiceName
|
||||||
%nul% reg delete "HKLM\%SPPk%" /f /v KeyManagementServiceName /reg:32
|
|
||||||
%nul% reg delete "HKLM\%SPPk%" /f /v KeyManagementServicePort
|
%nul% reg delete "HKLM\%SPPk%" /f /v KeyManagementServicePort
|
||||||
%nul% reg delete "HKLM\%SPPk%" /f /v KeyManagementServicePort /reg:32
|
|
||||||
%nul% reg delete "HKLM\%SPPk%" /f /v DisableDnsPublishing
|
%nul% reg delete "HKLM\%SPPk%" /f /v DisableDnsPublishing
|
||||||
%nul% reg delete "HKLM\%SPPk%" /f /v DisableKeyManagementServiceHostCaching
|
%nul% reg delete "HKLM\%SPPk%" /f /v DisableKeyManagementServiceHostCaching
|
||||||
%nul% reg delete "HKLM\%SPPk%\%_wApp%" /f
|
%nul% reg delete "HKLM\%SPPk%\%_wApp%" /f
|
||||||
if %winbuild% GEQ 9200 (
|
if %winbuild% GEQ 9200 (
|
||||||
%nul% reg delete "HKLM\%SPPk%\%_oApp%" /f
|
if defined notx86 (
|
||||||
|
%nul% reg delete "HKLM\%SPPk%" /f /v KeyManagementServiceName /reg:32
|
||||||
|
%nul% reg delete "HKLM\%SPPk%" /f /v KeyManagementServicePort /reg:32
|
||||||
%nul% reg delete "HKLM\%SPPk%\%_oApp%" /f /reg:32
|
%nul% reg delete "HKLM\%SPPk%\%_oApp%" /f /reg:32
|
||||||
)
|
)
|
||||||
|
%nul% reg delete "HKLM\%SPPk%\%_oApp%" /f
|
||||||
|
)
|
||||||
if %winbuild% GEQ 9600 (
|
if %winbuild% GEQ 9600 (
|
||||||
%nul% reg delete "HKU\S-1-5-20\%SPPk%\%_wApp%" /f
|
%nul% reg delete "HKU\S-1-5-20\%SPPk%\%_wApp%" /f
|
||||||
%nul% reg delete "HKU\S-1-5-20\%SPPk%\%_oApp%" /f
|
%nul% reg delete "HKU\S-1-5-20\%SPPk%\%_oApp%" /f
|
||||||
@ -1882,19 +1900,21 @@ if defined _server (set KMS_IP=%_server%)
|
|||||||
if not defined _port set _port=1688
|
if not defined _port set _port=1688
|
||||||
|
|
||||||
%nul% reg add "HKLM\%SPPk%" /f /v KeyManagementServiceName /t REG_SZ /d "%KMS_IP%"
|
%nul% reg add "HKLM\%SPPk%" /f /v KeyManagementServiceName /t REG_SZ /d "%KMS_IP%"
|
||||||
%nul% reg add "HKLM\%SPPk%" /f /v KeyManagementServiceName /t REG_SZ /d "%KMS_IP%" /reg:32
|
|
||||||
%nul% reg add "HKLM\%SPPk%" /f /v KeyManagementServicePort /t REG_SZ /d "%_port%"
|
%nul% reg add "HKLM\%SPPk%" /f /v KeyManagementServicePort /t REG_SZ /d "%_port%"
|
||||||
%nul% reg add "HKLM\%SPPk%" /f /v KeyManagementServicePort /t REG_SZ /d "%_port%" /reg:32
|
|
||||||
|
|
||||||
%nul% reg add "HKLM\%OPPk%" /f /v KeyManagementServiceName /t REG_SZ /d "%KMS_IP%"
|
%nul% reg add "HKLM\%OPPk%" /f /v KeyManagementServiceName /t REG_SZ /d "%KMS_IP%"
|
||||||
%nul% reg add "HKLM\%OPPk%" /f /v KeyManagementServicePort /t REG_SZ /d "%_port%"
|
%nul% reg add "HKLM\%OPPk%" /f /v KeyManagementServicePort /t REG_SZ /d "%_port%"
|
||||||
|
|
||||||
if %winbuild% GEQ 9200 (
|
if %winbuild% GEQ 9200 (
|
||||||
%nul% reg add "HKLM\%SPPk%\%_oApp%" /f /v KeyManagementServiceName /t REG_SZ /d "%KMS_IP%"
|
%nul% reg add "HKLM\%SPPk%\%_oApp%" /f /v KeyManagementServiceName /t REG_SZ /d "%KMS_IP%"
|
||||||
%nul% reg add "HKLM\%SPPk%\%_oApp%" /f /v KeyManagementServiceName /t REG_SZ /d "%KMS_IP%" /reg:32
|
|
||||||
%nul% reg add "HKLM\%SPPk%\%_oApp%" /f /v KeyManagementServicePort /t REG_SZ /d "%_port%"
|
%nul% reg add "HKLM\%SPPk%\%_oApp%" /f /v KeyManagementServicePort /t REG_SZ /d "%_port%"
|
||||||
|
if defined notx86 (
|
||||||
|
%nul% reg add "HKLM\%SPPk%" /f /v KeyManagementServiceName /t REG_SZ /d "%KMS_IP%" /reg:32
|
||||||
|
%nul% reg add "HKLM\%SPPk%" /f /v KeyManagementServicePort /t REG_SZ /d "%_port%" /reg:32
|
||||||
|
%nul% reg add "HKLM\%SPPk%\%_oApp%" /f /v KeyManagementServiceName /t REG_SZ /d "%KMS_IP%" /reg:32
|
||||||
%nul% reg add "HKLM\%SPPk%\%_oApp%" /f /v KeyManagementServicePort /t REG_SZ /d "%_port%" /reg:32
|
%nul% reg add "HKLM\%SPPk%\%_oApp%" /f /v KeyManagementServicePort /t REG_SZ /d "%_port%" /reg:32
|
||||||
)
|
)
|
||||||
|
)
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
::========================================================================================================================================
|
::========================================================================================================================================
|
||||||
@ -2248,19 +2268,33 @@ exit /b
|
|||||||
:: Get Windows Subscription status
|
:: Get Windows Subscription status
|
||||||
|
|
||||||
:winsubstatus:
|
:winsubstatus:
|
||||||
$DM = [AppDomain]::CurrentDomain.DefineDynamicAssembly(6, 1).DefineDynamicModule(4).DefineType(2)
|
$DM = [AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2)
|
||||||
[void]$DM.DefinePInvokeMethod('ClipGetSubscriptionStatus', 'Clipc.dll', 22, 1, [Int32], @([IntPtr].MakeByRefType()), 1, 3).SetImplementationFlags(128)
|
$SB = $DM.DefineType('sub_status', 9, [ValueType], 0)
|
||||||
$m = [System.Runtime.InteropServices.Marshal]
|
|
||||||
$p = $m::AllocHGlobal(12)
|
('enabled#int', 'sku#int', 'state#int').ForEach({
|
||||||
$r = $DM.CreateType()::ClipGetSubscriptionStatus([ref]$p)
|
$i = $_ -split '#'
|
||||||
|
$n = $i[0]
|
||||||
|
$t = $i[1] -as [Type]
|
||||||
|
[void]$SB.DefineField($n, $t, 6)
|
||||||
|
})
|
||||||
|
|
||||||
|
$sub_status = $SB.CreateType()
|
||||||
|
$MB = $DM.DefineType('PInvoke')
|
||||||
|
|
||||||
|
[void]$MB.DefinePInvokeMethod('ClipGetSubscriptionStatus', 'Clipc.dll', 22, 1, [UInt32], @([IntPtr].MakeByRefType()), 1, 3).SetImplementationFlags(128)
|
||||||
|
|
||||||
|
$Clipc = $MB.CreateType()
|
||||||
|
$s = [Activator]::CreateInstance($sub_status)
|
||||||
|
$p = [Runtime.InteropServices.Marshal]::AllocHGlobal([Runtime.InteropServices.Marshal]::SizeOf($s))
|
||||||
|
$r = $Clipc::ClipGetSubscriptionStatus([ref]$p)
|
||||||
|
|
||||||
if ($r -eq 0) {
|
if ($r -eq 0) {
|
||||||
$enabled = $m::ReadInt32($p)
|
$s = [Runtime.InteropServices.Marshal]::PtrToStructure($p, [type]$sub_status)
|
||||||
if ($enabled -ge 1) {
|
if ($s.enabled -ne 0) {
|
||||||
$state = $m::ReadInt32($p, 8)
|
if ($s.state -eq 1) {
|
||||||
if ($state -eq 1) {
|
"Subscription_is_activated."
|
||||||
"Subscription_is_activated."
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
:winsubstatus:
|
:winsubstatus:
|
||||||
|
|
||||||
|
259
MAS/Separate-Files-Version/Check-Activation-Status-vbs.cmd
Normal file
259
MAS/Separate-Files-Version/Check-Activation-Status-vbs.cmd
Normal file
@ -0,0 +1,259 @@
|
|||||||
|
@setlocal DisableDelayedExpansion
|
||||||
|
@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"
|
||||||
|
if exist "%SystemRoot%\Sysnative\cmd.exe" if not defined _rel1 (
|
||||||
|
setlocal EnableDelayedExpansion
|
||||||
|
start %SystemRoot%\Sysnative\cmd.exe /c ""!_cmdf!" -wow"
|
||||||
|
exit /b
|
||||||
|
)
|
||||||
|
if exist "%SystemRoot%\SysArm32\cmd.exe" if /i %PROCESSOR_ARCHITECTURE%==AMD64 if not defined _rel2 (
|
||||||
|
setlocal EnableDelayedExpansion
|
||||||
|
start %SystemRoot%\SysArm32\cmd.exe /c ""!_cmdf!" -arm"
|
||||||
|
exit /b
|
||||||
|
)
|
||||||
|
color 07
|
||||||
|
title Check Activation Status [vbs]
|
||||||
|
set "SysPath=%SystemRoot%\System32"
|
||||||
|
set "Path=%SystemRoot%\System32;%SystemRoot%\System32\Wbem;%SystemRoot%\System32\WindowsPowerShell\v1.0\"
|
||||||
|
if exist "%SystemRoot%\Sysnative\reg.exe" (
|
||||||
|
set "SysPath=%SystemRoot%\Sysnative"
|
||||||
|
set "Path=%SystemRoot%\Sysnative;%SystemRoot%\Sysnative\Wbem;%SystemRoot%\Sysnative\WindowsPowerShell\v1.0\;%Path%"
|
||||||
|
)
|
||||||
|
|
||||||
|
:: Check LF line ending
|
||||||
|
|
||||||
|
pushd "%~dp0"
|
||||||
|
>nul findstr /v "$" "%~nx0" && (
|
||||||
|
echo:
|
||||||
|
echo Error: Script either has LF line ending issue or an empty line at the end of the script is missing.
|
||||||
|
echo:
|
||||||
|
ping 127.0.0.1 -n 6 >nul
|
||||||
|
popd
|
||||||
|
exit /b
|
||||||
|
)
|
||||||
|
popd
|
||||||
|
|
||||||
|
set ohook=
|
||||||
|
for %%# in (15 16) do (
|
||||||
|
for %%A in ("%ProgramFiles%" "%ProgramW6432%" "%ProgramFiles(x86)%") do (
|
||||||
|
if exist "%%~A\Microsoft Office\Office%%#\sppc*dll" set ohook=1
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
for %%# in (System SystemX86) do (
|
||||||
|
for %%G in ("Office 15" "Office") do (
|
||||||
|
for %%A in ("%ProgramFiles%" "%ProgramW6432%" "%ProgramFiles(x86)%") do (
|
||||||
|
if exist "%%~A\Microsoft %%~G\root\vfs\%%#\sppc*dll" set ohook=1
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
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%
|
||||||
|
|
||||||
|
if defined ohook (
|
||||||
|
echo.
|
||||||
|
echo.
|
||||||
|
echo %line2%
|
||||||
|
echo *** Office Ohook Activation Status ***
|
||||||
|
echo %line2%
|
||||||
|
echo.
|
||||||
|
powershell "write-host -back 'Black' -fore 'Yellow' 'Ohook for permanent Office activation is installed.'; write-host -back 'Black' -fore 'Yellow' 'You can ignore below Office activation status.'"
|
||||||
|
echo.
|
||||||
|
)
|
||||||
|
|
||||||
|
: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
|
||||||
|
:: Leave empty line below
|
564
MAS/Separate-Files-Version/Check-Activation-Status-wmi.cmd
Normal file
564
MAS/Separate-Files-Version/Check-Activation-Status-wmi.cmd
Normal file
@ -0,0 +1,564 @@
|
|||||||
|
@setlocal DisableDelayedExpansion
|
||||||
|
@echo off
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
:: Check-Activation-Status
|
||||||
|
:: Written by @abbodi1406
|
||||||
|
:: forums.mydigitallife.net/posts/838808
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
set WMI_VBS=0
|
||||||
|
@cls
|
||||||
|
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"
|
||||||
|
if exist "%SystemRoot%\Sysnative\cmd.exe" if not defined _rel1 (
|
||||||
|
setlocal EnableDelayedExpansion
|
||||||
|
start %SystemRoot%\Sysnative\cmd.exe /c ""!_cmdf!" -wow"
|
||||||
|
exit /b
|
||||||
|
)
|
||||||
|
if exist "%SystemRoot%\SysArm32\cmd.exe" if /i %PROCESSOR_ARCHITECTURE%==AMD64 if not defined _rel2 (
|
||||||
|
setlocal EnableDelayedExpansion
|
||||||
|
start %SystemRoot%\SysArm32\cmd.exe /c ""!_cmdf!" -arm"
|
||||||
|
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 "SysPath=%SystemRoot%\System32"
|
||||||
|
set "Path=%SystemRoot%\System32;%SystemRoot%\System32\Wbem;%SystemRoot%\System32\WindowsPowerShell\v1.0\"
|
||||||
|
if exist "%SystemRoot%\Sysnative\reg.exe" (
|
||||||
|
set "SysPath=%SystemRoot%\Sysnative"
|
||||||
|
set "Path=%SystemRoot%\Sysnative;%SystemRoot%\Sysnative\Wbem;%SystemRoot%\Sysnative\WindowsPowerShell\v1.0\;%Path%"
|
||||||
|
)
|
||||||
|
|
||||||
|
:: Check LF line ending
|
||||||
|
|
||||||
|
pushd "%~dp0"
|
||||||
|
>nul findstr /v "$" "%~nx0" && (
|
||||||
|
echo:
|
||||||
|
echo Error: Script either has LF line ending issue or an empty line at the end of the script is missing.
|
||||||
|
echo:
|
||||||
|
ping 127.0.0.1 -n 6 >nul
|
||||||
|
popd
|
||||||
|
exit /b
|
||||||
|
)
|
||||||
|
popd
|
||||||
|
|
||||||
|
set ohook=
|
||||||
|
for %%# in (15 16) do (
|
||||||
|
for %%A in ("%ProgramFiles%" "%ProgramW6432%" "%ProgramFiles(x86)%") do (
|
||||||
|
if exist "%%~A\Microsoft Office\Office%%#\sppc*dll" set ohook=1
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
for %%# in (System SystemX86) do (
|
||||||
|
for %%G in ("Office 15" "Office") do (
|
||||||
|
for %%A in ("%ProgramFiles%" "%ProgramW6432%" "%ProgramFiles(x86)%") do (
|
||||||
|
if exist "%%~A\Microsoft %%~G\root\vfs\%%#\sppc*dll" set ohook=1
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
set _cwmi=0
|
||||||
|
for %%# in (wmic.exe) do @if not "%%~$PATH:#"=="" (
|
||||||
|
wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i "ComputerSystem" 1>nul && set _cwmi=1
|
||||||
|
)
|
||||||
|
|
||||||
|
if %_cwmi% EQU 0 (
|
||||||
|
echo:
|
||||||
|
echo Error: WMI is not responding in the system.
|
||||||
|
echo:
|
||||||
|
echo In MAS, Goto Troubleshoot and run Fix WMI option.
|
||||||
|
echo:
|
||||||
|
echo Press any key to exit...
|
||||||
|
pause >nul
|
||||||
|
exit /b
|
||||||
|
)
|
||||||
|
|
||||||
|
set "line2=************************************************************"
|
||||||
|
set "line3=____________________________________________________________"
|
||||||
|
set "_psc=powershell"
|
||||||
|
|
||||||
|
set _prsh=1
|
||||||
|
for %%# in (powershell.exe) do @if "%%~$PATH:#"=="" set _prsh=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 %_cwmi% EQU 0 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 _WSH=0
|
||||||
|
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.
|
||||||
|
)
|
||||||
|
|
||||||
|
if defined ohook (
|
||||||
|
echo.
|
||||||
|
echo.
|
||||||
|
echo %line2%
|
||||||
|
echo *** Office Ohook Activation Status ***
|
||||||
|
echo %line2%
|
||||||
|
echo.
|
||||||
|
powershell "write-host -back 'Black' -fore 'Yellow' 'Ohook for permanent Office activation is installed.'; write-host -back 'Black' -fore 'Yellow' 'You can ignore below Office activation status.'"
|
||||||
|
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 %_prsh% EQU 1 if not defined _xpr (
|
||||||
|
for /f "tokens=* delims=" %%# in ('%_psc% "$([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. K.M.S 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 %_prsh% EQU 1 (
|
||||||
|
echo %line2%
|
||||||
|
echo *** Office vNext Status ***
|
||||||
|
echo %line2%
|
||||||
|
setlocal EnableDelayedExpansion
|
||||||
|
%_psc% "$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
|
||||||
|
|
||||||
|
: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 {$_.ToLower() -like "*retail" -or $_.ToLower() -like "*volume"}
|
||||||
|
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
|
||||||
|
If ($null -Ne $decodedLicense.ExpiresOn)
|
||||||
|
{
|
||||||
|
$expiry = [DateTime]::Parse($decodedLicense.ExpiresOn, $null, 48)
|
||||||
|
}
|
||||||
|
Else
|
||||||
|
{
|
||||||
|
$expiry = New-Object DateTime
|
||||||
|
}
|
||||||
|
$licenseState = $null
|
||||||
|
If ((Get-Date) -Gt (Get-Date $decodedLicense.MetaData.NotAfter))
|
||||||
|
{
|
||||||
|
$licenseState = "RFM"
|
||||||
|
}
|
||||||
|
ElseIf ((Get-Date) -Lt (Get-Date $expiry))
|
||||||
|
{
|
||||||
|
$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;
|
||||||
|
EntitlementExpiration = $decodedLicense.ExpiresOn;
|
||||||
|
ReasonCode = $decodedLicense.ReasonCode;
|
||||||
|
NotBefore = $decodedLicense.Metadata.NotBefore;
|
||||||
|
NotAfter = $decodedLicense.Metadata.NotAfter;
|
||||||
|
NextRenewal = $decodedLicense.Metadata.RenewAfter;
|
||||||
|
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;
|
||||||
|
EntitlementExpiration = $decodedLicense.ExpiresOn;
|
||||||
|
ReasonCode = $decodedLicense.ReasonCode;
|
||||||
|
NotBefore = $decodedLicense.Metadata.NotBefore;
|
||||||
|
NotAfter = $decodedLicense.Metadata.NotAfter;
|
||||||
|
NextRenewal = $decodedLicense.Metadata.RenewAfter;
|
||||||
|
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:
|
||||||
|
::===================================================
|
||||||
|
:: Leave empty line below
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user