From 75c34cbf50acd9fb82fd16f6894f6d61b35bc288 Mon Sep 17 00:00:00 2001
From: WindowsAddict <Windowsaddict@protonmail.com>
Date: Thu, 30 Jan 2025 02:25:04 +0530
Subject: [PATCH] Add updated CAS by abbodi1406

---
 MAS/All-In-One-Version-KL/MAS_AIO.cmd         | 568 +++++++++++-------
 .../Check_Activation_Status.cmd               | 568 +++++++++++-------
 2 files changed, 710 insertions(+), 426 deletions(-)

diff --git a/MAS/All-In-One-Version-KL/MAS_AIO.cmd b/MAS/All-In-One-Version-KL/MAS_AIO.cmd
index e436920..0950461 100644
--- a/MAS/All-In-One-Version-KL/MAS_AIO.cmd
+++ b/MAS/All-In-One-Version-KL/MAS_AIO.cmd
@@ -6509,20 +6509,40 @@ mode 100, 36
 goto dk_done
 
 :sppmgr:
+param (
+    [Parameter()]
+    [switch]
+    $All,
+    [Parameter()]
+    [switch]
+    $Dlv,
+    [Parameter()]
+    [switch]
+    $IID,
+    [Parameter()]
+    [switch]
+    $Pass
+)
+
+function CONOUT($strObj)
+{
+	Out-Host -Input $strObj
+}
+
 function ExitScript($ExitCode = 0)
 {
 	Exit $ExitCode
 }
 
 if (-Not $PSVersionTable) {
-	Write-Host "==== ERROR ====`r`n"
-	Write-Host 'Windows PowerShell 1.0 is not supported by this script.'
+	"==== ERROR ====`r`n"
+	"Windows PowerShell 1.0 is not supported by this script."
 	ExitScript 1
 }
 
 if ($ExecutionContext.SessionState.LanguageMode.value__ -NE 0) {
-	Write-Host "==== ERROR ====`r`n"
-	Write-Host 'Windows PowerShell is not running in Full Language Mode.'
+	"==== ERROR ====`r`n"
+	"Windows PowerShell is not running in Full Language Mode."
 	ExitScript 1
 }
 
@@ -6530,21 +6550,49 @@ $winbuild = 1
 try {
 	$winbuild = [System.Diagnostics.FileVersionInfo]::GetVersionInfo("$env:SystemRoot\System32\kernel32.dll").FileBuildPart
 } catch {
-	$winbuild = [int](Get-WmiObject Win32_OperatingSystem).BuildNumber
+	$winbuild = [int]([wmi]'Win32_OperatingSystem=@').BuildNumber
 }
 
 if ($winbuild -EQ 1) {
-	Write-Host "==== ERROR ====`r`n"
-	Write-Host 'Could not detect Windows build.'
+	"==== ERROR ====`r`n"
+	"Could not detect Windows build."
 	ExitScript 1
 }
 
 if ($winbuild -LT 2600) {
-	Write-Host "==== ERROR ====`r`n"
-	Write-Host 'This build of Windows is not supported by this script.'
+	"==== ERROR ====`r`n"
+	"This build of Windows is not supported by this script."
 	ExitScript 1
 }
 
+$SysPath = "$env:SystemRoot\System32"
+if (Test-Path "$env:SystemRoot\Sysnative\reg.exe") {
+	$SysPath = "$env:SystemRoot\Sysnative"
+}
+
+if (Test-Path "$SysPath\sppc.dll") {
+	$SLdll = 'sppc.dll'
+} elseif (Test-Path "$SysPath\slc.dll") {
+	$SLdll = 'slc.dll'
+} else {
+	"==== ERROR ====`r`n"
+	"Software Licensing Client Dll is not detected."
+	ExitScript 1
+}
+
+if ($All.IsPresent)
+{
+	$isAll = {CONOUT "`r"}
+	$noAll = {$null}
+}
+else
+{
+	$isAll = {$null}
+	$noAll = {CONOUT "`r"}
+}
+$Dlv = $Dlv.IsPresent
+$IID = $IID.IsPresent -Or $Dlv.IsPresent
+
 $NT6 = $winbuild -GE 6000
 $NT7 = $winbuild -GE 7600
 $NT9 = $winbuild -GE 9600
@@ -6554,12 +6602,29 @@ $Admin = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdenti
 $line2 = "============================================================"
 $line3 = "____________________________________________________________"
 
+function UnQuickEdit
+{
+	$t=[AppDomain]::CurrentDomain.DefineDynamicAssembly((Get-Random), 1).DefineDynamicModule((Get-Random), $False).DefineType((Get-Random))
+	$t.DefinePInvokeMethod('GetStdHandle', 'kernel32.dll', 22, 1, [IntPtr], @([Int32]), 1, 3).SetImplementationFlags(128)
+	$t.DefinePInvokeMethod('SetConsoleMode', 'kernel32.dll', 22, 1, [Boolean], @([IntPtr], [Int32]), 1, 3).SetImplementationFlags(128)
+	$t.DefinePInvokeMethod('GetConsoleWindow', 'kernel32.dll', 22, 1, [IntPtr], @(), 1, 3).SetImplementationFlags(128)
+	$t.DefinePInvokeMethod('SendMessageW', 'user32.dll', 22, 1, [IntPtr], @([IntPtr], [UInt32], [IntPtr], [IntPtr]), 1, 3).SetImplementationFlags(128)
+	$k=$t.CreateType()
+	if ($winbuild -GE 17763) {
+		if ($k::SendMessageW($k::GetConsoleWindow(), 127, 0, 0) -EQ [IntPtr]::Zero) {
+			return
+		}
+	}
+	$v=(0x0080, 0x00A0)[!($winbuild -GE 10586)]
+	$b=$k::SetConsoleMode($k::GetStdHandle(-10), $v)
+}
+
 function echoWindows
 {
-	Write-Host "$line2"
-	Write-Host "===                   Windows Status                     ==="
-	Write-Host "$line2"
-	if (!$All.IsPresent) {Write-Host}
+	CONOUT "$line2"
+	CONOUT "===                   Windows Status                     ==="
+	CONOUT "$line2"
+	& $noAll
 }
 
 function echoOffice
@@ -6568,18 +6633,22 @@ function echoOffice
 		return
 	}
 
-	if ($All.IsPresent) {Write-Host}
-	Write-Host "$line2"
-	Write-Host "===                   Office Status                      ==="
-	Write-Host "$line2"
-	if (!$All.IsPresent) {Write-Host}
+	& $isAll
+	CONOUT "$line2"
+	CONOUT "===                   Office Status                      ==="
+	CONOUT "$line2"
+	& $noAll
 
 	$script:doMSG = 0
 }
 
 function strGetRegistry($strKey, $strName)
 {
-Get-ItemProperty -EA 0 $strKey | select -EA 0 -Expand $strName
+	try {
+		return [Microsoft.Win32.Registry]::GetValue($strKey, $strName, $null)
+	} catch {
+		return $null
+	}
 }
 
 function CheckOhook
@@ -6610,55 +6679,57 @@ function CheckOhook
 		return
 	}
 
-	if ($All.IsPresent) {Write-Host}
-	Write-Host "$line2"
-	Write-Host "===                Office Ohook Status                   ==="
-	Write-Host "$line2"
-	Write-Host
-	Write-Host -back 'Black' -fore 'Yellow' 'Ohook for permanent Office activation is installed.'
-	Write-Host -back 'Black' -fore 'Yellow' 'You can ignore the below mentioned Office activation status.'
-	if (!$All.IsPresent) {Write-Host}
+	& $isAll
+	CONOUT "$line2"
+	CONOUT "===                Office Ohook Status                   ==="
+	CONOUT "$line2"
+	$host.UI.WriteLine('Yellow', 'Black', "`r`nOhook for permanent Office activation is installed.`r`nYou can ignore the below mentioned Office activation status.")
+	& $noAll
 }
 
 #region WMI
-function DetectID($strSLP, $strAppId, [ref]$strAppVar)
+function DetectID($strSLP, $strAppId)
 {
-	$fltr = "ApplicationID='$strAppId'"
-	if (!$All.IsPresent) {
-		$fltr = $fltr + " AND PartialProductKey <> NULL"
-	}
-	Get-WmiObject $strSLP ID -Filter $fltr -EA 0 | select ID -EA 0 | foreach {
-		$strAppVar.Value = 1
-	}
+	$ppk = (" AND PartialProductKey <> NULL)", ")")[$All.IsPresent]
+	$fltr = "SELECT ID FROM $strSLP WHERE (ApplicationID='$strAppId'"
+	$clause = $fltr + $ppk
+	$sWmi = [wmisearcher]$clause
+	$sWmi.Options.Rewindable = $false
+	return ($sWmi.Get().Count -GT 0)
 }
 
-function GetID($strSLP, $strAppId, $strProperty = "ID")
+function GetID($strSLP, $strAppId)
 {
 	$NT5 = ($strSLP -EQ $wslp -And $winbuild -LT 6001)
 	$IDs = [Collections.ArrayList]@()
+	$isAdd = (" AND LicenseDependsOn <> NULL)", ")")[$NT5]
+	$noAdd = " AND LicenseDependsOn IS NULL)"
+	$query = "SELECT ID FROM $strSLP WHERE (ApplicationID='$strAppId' AND PartialProductKey"
 
 	if ($All.IsPresent) {
-		$fltr = "ApplicationID='$strAppId' AND PartialProductKey IS NULL"
-		$clause = $fltr
+		$fltr = $query + " IS NULL"
+		$clause = $fltr + $isAdd
+		$sWmi = [wmisearcher]$clause
+		$sWmi.Options.Rewindable = $false
+		try {$sWmi.Get() | select -Expand Properties -EA 0 | foreach {$IDs += $_.Value}} catch {}
 		if (-Not $NT5) {
-		$clause = $fltr + " AND LicenseDependsOn <> NULL"
-		}
-		Get-WmiObject $strSLP $strProperty -Filter $clause -EA 0 | select -Expand $strProperty -EA 0 | foreach {$IDs += $_}
-		if (-Not $NT5) {
-		$clause = $fltr + " AND LicenseDependsOn IS NULL"
-		Get-WmiObject $strSLP $strProperty -Filter $clause -EA 0 | select -Expand $strProperty -EA 0 | foreach {$IDs += $_}
+		$clause = $fltr + $noAdd
+		$sWmi = [wmisearcher]$clause
+		$sWmi.Options.Rewindable = $false
+		try {$sWmi.Get() | select -Expand Properties -EA 0 | foreach {$IDs += $_.Value}} catch {}
 		}
 	}
 
-	$fltr = "ApplicationID='$strAppId' AND PartialProductKey <> NULL"
-	$clause = $fltr
+	$fltr = $query + " <> NULL"
+	$clause = $fltr + $isAdd
+	$sWmi = [wmisearcher]$clause
+	$sWmi.Options.Rewindable = $false
+	try {$sWmi.Get() | select -Expand Properties -EA 0 | foreach {$IDs += $_.Value}} catch {}
 	if (-Not $NT5) {
-	$clause = $fltr + " AND LicenseDependsOn <> NULL"
-	}
-	Get-WmiObject $strSLP $strProperty -Filter $clause -EA 0 | select -Expand $strProperty -EA 0 | foreach {$IDs += $_}
-	if (-Not $NT5) {
-	$clause = $fltr + " AND LicenseDependsOn IS NULL"
-	Get-WmiObject $strSLP $strProperty -Filter $clause -EA 0 | select -Expand $strProperty -EA 0 | foreach {$IDs += $_}
+	$clause = $fltr + $noAdd
+	$sWmi = [wmisearcher]$clause
+	$sWmi.Options.Rewindable = $false
+	try {$sWmi.Get() | select -Expand Properties -EA 0 | foreach {$IDs += $_.Value}} catch {}
 	}
 
 	return $IDs
@@ -6695,38 +6766,45 @@ function DetectSubscription {
 		if ($objSvc.SubscriptionEdition.Contains("UNKNOWN") -EQ $false) {$SubMsgEdition = $objSvc.SubscriptionEdition}
 	}
 
-	Write-Host
-	Write-Host "Subscription information:"
-	Write-Host "    Edition: $SubMsgEdition"
-	Write-Host "    Type   : $SubMsgType"
-	Write-Host "    Status : $SubMsgStatus"
-	Write-Host "    Expiry : $SubMsgExpiry"
+	CONOUT "`nSubscription information:"
+	CONOUT "    Edition: $SubMsgEdition"
+	CONOUT "    Type   : $SubMsgType"
+	CONOUT "    Status : $SubMsgStatus"
+	CONOUT "    Expiry : $SubMsgExpiry"
+}
+
+function DetectAdbaClient
+{
+	CONOUT "`nAD Activation client information:"
+	CONOUT "    Object Name: $ADActivationObjectName"
+	CONOUT "    Domain Name: $ADActivationObjectDN"
+	CONOUT "    CSVLK Extended PID: $ADActivationCsvlkPid"
+	CONOUT "    CSVLK Activation ID: $ADActivationCsvlkSkuId"
 }
 
 function DetectAvmClient
 {
-	Write-Host
-	Write-Host "Automatic VM Activation client information:"
+	CONOUT "`nAutomatic VM Activation client information:"
 	if (-Not [String]::IsNullOrEmpty($IAID)) {
-		Write-Host "    Guest IAID: $IAID"
+		CONOUT "    Guest IAID: $IAID"
 	} else {
-		Write-Host "    Guest IAID: Not Available"
+		CONOUT "    Guest IAID: Not Available"
 	}
 	if (-Not [String]::IsNullOrEmpty($AutomaticVMActivationHostMachineName)) {
-		Write-Host "    Host machine name: $AutomaticVMActivationHostMachineName"
+		CONOUT "    Host machine name: $AutomaticVMActivationHostMachineName"
 	} else {
-		Write-Host "    Host machine name: Not Available"
+		CONOUT "    Host machine name: Not Available"
 	}
 	if ($AutomaticVMActivationLastActivationTime.Substring(0,4) -NE "1601") {
 		$EED = [DateTime]::Parse([Management.ManagementDateTimeConverter]::ToDateTime($AutomaticVMActivationLastActivationTime),$null,48).ToString('yyyy-MM-dd hh:mm:ss tt')
-		Write-Host "    Activation time: $EED UTC"
+		CONOUT "    Activation time: $EED UTC"
 	} else {
-		Write-Host "    Activation time: Not Available"
+		CONOUT "    Activation time: Not Available"
 	}
 	if (-Not [String]::IsNullOrEmpty($AutomaticVMActivationHostDigitalPid2)) {
-		Write-Host "    Host Digital PID2: $AutomaticVMActivationHostDigitalPid2"
+		CONOUT "    Host Digital PID2: $AutomaticVMActivationHostDigitalPid2"
 	} else {
-		Write-Host "    Host Digital PID2: Not Available"
+		CONOUT "    Host Digital PID2: Not Available"
 	}
 }
 
@@ -6756,32 +6834,30 @@ function DetectKmsHost
 		$KeyManagementServiceLowPriority = "Normal"
 	}
 
-	Write-Host
-	Write-Host "Key Management Service host information:"
-	Write-Host "    Current count: $KeyManagementServiceCurrentCount"
-	Write-Host "    Listening on Port: $KeyManagementServiceListeningPort"
-	Write-Host "    DNS publishing: $KeyManagementServiceDnsPublishing"
-	Write-Host "    KMS priority: $KeyManagementServiceLowPriority"
+	CONOUT "`nKey Management Service host information:"
+	CONOUT "    Current count: $KeyManagementServiceCurrentCount"
+	CONOUT "    Listening on Port: $KeyManagementServiceListeningPort"
+	CONOUT "    DNS publishing: $KeyManagementServiceDnsPublishing"
+	CONOUT "    KMS priority: $KeyManagementServiceLowPriority"
 	if (-Not [String]::IsNullOrEmpty($KeyManagementServiceTotalRequests)) {
-		Write-Host
-		Write-Host "Key Management Service cumulative requests received from clients:"
-		Write-Host "    Total: $KeyManagementServiceTotalRequests"
-		Write-Host "    Failed: $KeyManagementServiceFailedRequests"
-		Write-Host "    Unlicensed: $KeyManagementServiceUnlicensedRequests"
-		Write-Host "    Licensed: $KeyManagementServiceLicensedRequests"
-		Write-Host "    Initial grace period: $KeyManagementServiceOOBGraceRequests"
-		Write-Host "    Expired or Hardware out of tolerance: $KeyManagementServiceOOTGraceRequests"
-		Write-Host "    Non-genuine grace period: $KeyManagementServiceNonGenuineGraceRequests"
-		Write-Host "    Notification: $KeyManagementServiceNotificationRequests"
+		CONOUT "`nKey Management Service cumulative requests received from clients:"
+		CONOUT "    Total: $KeyManagementServiceTotalRequests"
+		CONOUT "    Failed: $KeyManagementServiceFailedRequests"
+		CONOUT "    Unlicensed: $KeyManagementServiceUnlicensedRequests"
+		CONOUT "    Licensed: $KeyManagementServiceLicensedRequests"
+		CONOUT "    Initial grace period: $KeyManagementServiceOOBGraceRequests"
+		CONOUT "    Expired or Hardware out of tolerance: $KeyManagementServiceOOTGraceRequests"
+		CONOUT "    Non-genuine grace period: $KeyManagementServiceNonGenuineGraceRequests"
+		if ($null -NE $KeyManagementServiceNotificationRequests) {CONOUT "    Notification: $KeyManagementServiceNotificationRequests"}
 	}
 }
 
 function DetectKmsClient
 {
-	if ($null -NE $VLActivationTypeEnabled) {Write-Host "Configured Activation Type: $($VLActTypes[$VLActivationTypeEnabled])"}
-	Write-Host
+	if ($null -NE $VLActivationTypeEnabled) {CONOUT "Configured Activation Type: $($VLActTypes[$VLActivationTypeEnabled])"}
+	CONOUT "`r"
 	if ($LicenseStatus -NE 1) {
-		Write-Host "Please activate the product in order to update KMS client information values."
+		CONOUT "Please activate the product in order to update KMS client information values."
 		return
 	}
 
@@ -6814,33 +6890,42 @@ function DetectKmsClient
 		}
 	}
 
-	Write-Host "Key Management Service client information:"
-	Write-Host "    Client Machine ID (CMID): $($objSvc.ClientMachineID)"
+	CONOUT "Key Management Service client information:"
+	CONOUT "    Client Machine ID (CMID): $($objSvc.ClientMachineID)"
 	if ($null -EQ $KmsReg) {
-		Write-Host "    $KmsDns"
-		Write-Host "    Registered KMS machine name: KMS name not available"
+		CONOUT "    $KmsDns"
+		CONOUT "    Registered KMS machine name: KMS name not available"
 	} else {
-		Write-Host "    $KmsReg"
+		CONOUT "    $KmsReg"
 	}
-	if ($null -NE $DiscoveredKeyManagementServiceMachineIpAddress) {Write-Host "    KMS machine IP address: $DiscoveredKeyManagementServiceMachineIpAddress"}
-	Write-Host "    KMS machine extended PID: $KeyManagementServiceProductKeyID"
-	Write-Host "    Activation interval: $VLActivationInterval minutes"
-	Write-Host "    Renewal interval: $VLRenewalInterval minutes"
-	if ($null -NE $KeyManagementServiceHostCaching) {Write-Host "    KMS host caching: $KeyManagementServiceHostCaching"}
-	if (-Not [String]::IsNullOrEmpty($KeyManagementServiceLookupDomain)) {Write-Host "    KMS SRV record lookup domain: $KeyManagementServiceLookupDomain"}
+	if ($null -NE $DiscoveredKeyManagementServiceMachineIpAddress) {CONOUT "    KMS machine IP address: $DiscoveredKeyManagementServiceMachineIpAddress"}
+	CONOUT "    KMS machine extended PID: $KeyManagementServiceProductKeyID"
+	CONOUT "    Activation interval: $VLActivationInterval minutes"
+	CONOUT "    Renewal interval: $VLRenewalInterval minutes"
+	if ($null -NE $KeyManagementServiceHostCaching) {CONOUT "    KMS host caching: $KeyManagementServiceHostCaching"}
+	if (-Not [String]::IsNullOrEmpty($KeyManagementServiceLookupDomain)) {CONOUT "    KMS SRV record lookup domain: $KeyManagementServiceLookupDomain"}
 }
 
 function GetResult($strSLP, $strSLS, $strID)
 {
-	try {$objPrd = Get-WmiObject $strSLP -Filter "ID='$strID'" -EA 1} catch {return}
-	$objPrd | select -Expand Properties -EA 0 | foreach {
-		if (-Not [String]::IsNullOrEmpty($_.Value)) {set $_.Name $_.Value}
+	try
+	{
+		$objPrd = [wmisearcher]"SELECT * FROM $strSLP WHERE ID='$strID'"
+		$objPrd.Options.Rewindable = $false
+		$objPrd.Get() | select -Expand Properties -EA 0 | foreach { if (-Not [String]::IsNullOrEmpty($_.Value)) {set $_.Name $_.Value} }
+		$objPrd.Dispose()
+	}
+	catch
+	{
+		return
 	}
 
 	$winID = ($ApplicationID -EQ $winApp)
 	$winPR = ($winID -And -Not $LicenseIsAddon)
 	$Vista = ($winID -And $NT6 -And -Not $NT7)
 	$NT5 = ($strSLP -EQ $wslp -And $winbuild -LT 6001)
+	$reapp = ("Windows", "App")[!$winID]
+	$prmnt = ("machine", "product")[!$winPR]
 
 	if ($Description | Select-String "VOLUME_KMSCLIENT") {$cKmsClient = 1; $_mTag = "Volume"}
 	if ($Description | Select-String "TIMEBASED_") {$cTblClient = 1; $_mTag = "Timebased"}
@@ -6865,7 +6950,7 @@ function GetResult($strSLP, $strSLS, $strID)
 		$LicenseInf = "Licensed"
 		$LicenseMsg = $null
 		if ($GracePeriodRemaining -EQ 0) {
-			if ($winPR) {$ExpireMsg = "The machine is permanently activated."} else {$ExpireMsg = "The product is permanently activated."}
+			$ExpireMsg = "The $prmnt is permanently activated."
 		} else {
 			$LicenseMsg = "$_mTag activation expiration: $GracePeriodRemaining minute(s) ($_gpr day(s))"
 			if ($null -NE $_xpr) {$ExpireMsg = "$_mTag activation will expire $_xpr"}
@@ -6886,8 +6971,9 @@ function GetResult($strSLP, $strSLS, $strID)
 	if ($LicenseStatus -EQ 5 -And -Not $NT5) {
 		$LicenseInf = "Notification"
 		$LicenseMsg = "Notification Reason: $LicenseReason"
+		if ($LicenseReason -EQ "0xC004F00F") {if ($null -NE $cKmsClient) {$LicenseMsg = $LicenseMsg + " (KMS license expired)."} else {$LicenseMsg = $LicenseMsg + " (hardware out of tolerance)."}}
 		if ($LicenseReason -EQ "0xC004F200") {$LicenseMsg = $LicenseMsg + " (non-genuine)."}
-		if ($LicenseReason -EQ "0xC004F009") {$LicenseMsg = $LicenseMsg + " (grace time expired)."}
+		if ($LicenseReason -EQ "0xC004F009" -Or $LicenseReason -EQ "0xC004F064") {$LicenseMsg = $LicenseMsg + " (grace time expired)."}
 	}
 	if ($LicenseStatus -GT 5 -Or ($LicenseStatus -GT 4 -And $NT5)) {
 		$LicenseInf = "Unknown"
@@ -6899,25 +6985,61 @@ function GetResult($strSLP, $strSLS, $strID)
 	}
 
 	if ($winPR -And $PartialProductKey -And -Not $NT9) {
-		$dp4 = Get-ItemProperty -EA 0 "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" | select -EA 0 -Expand DigitalProductId4
+		$dp4 = strGetRegistry "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" "DigitalProductId4"
 		if ($null -NE $dp4) {
 			$ProductKeyChannel = ([System.Text.Encoding]::Unicode.GetString($dp4, 1016, 128)).Trim([char]$null)
 		}
 	}
 
-	if ($All.IsPresent) {Write-Host}
-	Write-Host "Name: $Name"
-	Write-Host "Description: $Description"
-	Write-Host "Activation ID: $ID"
-	if ($null -NE $ProductKeyID) {Write-Host "Extended PID: $ProductKeyID"}
-	if ($null -NE $OfflineInstallationId -And $IID.IsPresent) {Write-Host "Installation ID: $OfflineInstallationId"}
-	if ($null -NE $ProductKeyChannel) {Write-Host "Product Key Channel: $ProductKeyChannel"}
-	if ($null -NE $PartialProductKey) {Write-Host "Partial Product Key: $PartialProductKey"} else {Write-Host "Product Key: Not installed"}
-	Write-Host "License Status: $LicenseInf"
-	if ($null -NE $LicenseMsg) {Write-Host "$LicenseMsg"}
+	if ($winPR -And $Dlv -And $null -EQ $RemainingAppReArmCount) {
+		try
+		{
+			$tmp = [wmisearcher]"SELECT RemainingWindowsReArmCount FROM $strSLS"
+			$tmp.Options.Rewindable = $false
+			$tmp.Get() | select -Expand Properties -EA 0 | foreach {set $_.Name $_.Value}
+			$tmp.Dispose()
+		}
+		catch
+		{
+		}
+	}
+
+	$add_on = $Name.IndexOf("add-on for", 5)
+
+	& $isAll
+	if ($add_on -EQ -1) {CONOUT "Name: $Name"} else {CONOUT "Name: $($Name.Substring(0, $add_on + 7))"}
+	CONOUT "Description: $Description"
+	CONOUT "Activation ID: $ID"
+	if ($null -NE $ProductKeyID) {CONOUT "Extended PID: $ProductKeyID"}
+	if ($null -NE $ProductKeyID2 -And $Dlv) {CONOUT "Product ID: $ProductKeyID2"}
+	if ($null -NE $OfflineInstallationId -And $IID) {CONOUT "Installation ID: $OfflineInstallationId"}
+	if ($null -NE $ProductKeyChannel) {CONOUT "Product Key Channel: $ProductKeyChannel"}
+	if ($null -NE $PartialProductKey) {CONOUT "Partial Product Key: $PartialProductKey"}
+	CONOUT "License Status: $LicenseInf"
+	if ($null -NE $LicenseMsg) {CONOUT "$LicenseMsg"}
 	if ($LicenseStatus -NE 0 -And $EvaluationEndDate.Substring(0,4) -NE "1601") {
 		$EED = [DateTime]::Parse([Management.ManagementDateTimeConverter]::ToDateTime($EvaluationEndDate),$null,48).ToString('yyyy-MM-dd hh:mm:ss tt')
-		Write-Host "Evaluation End Date: $EED UTC"
+		CONOUT "Evaluation End Date: $EED UTC"
+	}
+	if ($Dlv) {
+		if ($null -NE $RemainingWindowsReArmCount) {
+			CONOUT "Remaining Windows rearm count: $RemainingWindowsReArmCount"
+		}
+		if ($null -NE $RemainingSkuReArmCount -And $RemainingSkuReArmCount -NE 4294967295) {
+			CONOUT "Remaining $reapp rearm count: $RemainingAppReArmCount"
+			CONOUT "Remaining SKU rearm count: $RemainingSkuReArmCount"
+		}
+		if ($null -NE $TrustedTime -And $LicenseStatus -NE 0) {
+			$TTD = [DateTime]::Parse([Management.ManagementDateTimeConverter]::ToDateTime($TrustedTime),$null,32).ToString('yyyy-MM-dd hh:mm:ss tt')
+			CONOUT "Trusted time: $TTD"
+		}
+	}
+	if ($LicenseStatus -EQ 0) {
+		return
+	}
+
+	if ($strSLP -EQ $wslp -And $null -NE $PartialProductKey -And $null -NE $ADActivationObjectName -And $VLActivationType -EQ 1) {
+		DetectAdbaClient
 	}
 
 	if ($winID -And $null -NE $cAvmClient -And $null -NE $PartialProductKey) {
@@ -6929,16 +7051,27 @@ function GetResult($strSLP, $strSLS, $strID)
 	$chkSLS = ($null -NE $PartialProductKey) -And ($null -NE $cKmsClient -Or $null -NE $cKmsHost -Or $chkSub)
 
 	if (!$chkSLS) {
-		if ($null -NE $ExpireMsg) {Write-Host; Write-Host "    $ExpireMsg"}
+		if ($null -NE $ExpireMsg) {CONOUT "`n    $ExpireMsg"}
 		return
 	}
 
-	$objSvc = Get-WmiObject $strSLS -EA 0
-
-	if ($Vista) {
-		$objSvc | select -Expand Properties -EA 0 | foreach {
-			if (-Not [String]::IsNullOrEmpty($_.Value)) {set $_.Name $_.Value}
+	try
+	{
+		$objSvc = New-Object PSObject
+		$wmiSvc = [wmisearcher]"SELECT * FROM $strSLS"
+		$wmiSvc.Options.Rewindable = $false
+		$wmiSvc.Get() | select -Expand Properties -EA 0 | foreach {
+			if (-Not [String]::IsNullOrEmpty($_.Value))
+			{
+				$objSvc | Add-Member 8 $_.Name $_.Value
+				if ($null -EQ $IsKeyManagementServiceMachine) {set $_.Name $_.Value}
+			}
 		}
+		$wmiSvc.Dispose()
+	}
+	catch
+	{
+		return
 	}
 
 	if ($strSLS -EQ $wsls -And $NT9) {
@@ -6948,6 +7081,7 @@ function GetResult($strSLP, $strSLS, $strID)
 	}
 
 	if ($null -NE $cKmsHost -And $IsKeyManagementServiceMachine -GT 0) {
+		if ($null -NE $ExpireMsg) {CONOUT "`n    $ExpireMsg"}
 		DetectKmsHost
 	}
 
@@ -6955,7 +7089,9 @@ function GetResult($strSLP, $strSLS, $strID)
 		DetectKmsClient
 	}
 
-	if ($null -NE $ExpireMsg) {Write-Host; Write-Host "    $ExpireMsg"}
+	if ($null -EQ $cKmsHost) {
+		if ($null -NE $ExpireMsg) {CONOUT "`n    $ExpireMsg"}
+	}
 
 	if ($chkSub) {
 		DetectSubscription
@@ -6995,11 +7131,10 @@ function PrintModePerPridFromRegistry
 	$vNextPrids = Get-Item -Path $vNextRegkey -ErrorAction SilentlyContinue | Select-Object -ExpandProperty 'property' -ErrorAction SilentlyContinue | Where-Object -FilterScript {$_.ToLower() -like "*retail" -or $_.ToLower() -like "*volume"}
 	If ($null -Eq $vNextPrids)
 	{
-		Write-Host
-		Write-Host "No registry keys found."
+		CONOUT "`nNo registry keys found."
 		Return
 	}
-	Write-Host
+	CONOUT "`r"
 	$vNextPrids | ForEach `
 	{
 		$mode = (Get-ItemProperty -Path $vNextRegkey -Name $_).$_
@@ -7009,7 +7144,7 @@ function PrintModePerPridFromRegistry
 			3 { $mode = "Device"; Break }
 			Default { $mode = "Legacy"; Break }
 		}
-		Write-Host $_ = $mode
+		CONOUT "$_ = $mode"
 	}
 }
 
@@ -7023,8 +7158,7 @@ function PrintSharedComputerLicensing
 	$scaPolicyValue = Get-ItemProperty -Path $scaPolicyKey -ErrorAction SilentlyContinue | Select-Object -ExpandProperty "SharedComputerLicensing" -ErrorAction SilentlyContinue
 	If ($null -Eq $scaValue -And $null -Eq $scaValue2 -And $null -Eq $scaPolicyValue)
 	{
-		Write-Host
-		Write-Host "No registry keys found."
+		CONOUT "`nNo registry keys found."
 		Return
 	}
 	$scaModeValue = $scaValue -Or $scaValue2 -Or $scaPolicyValue
@@ -7036,9 +7170,8 @@ function PrintSharedComputerLicensing
 	{
 		$scaMode = "Enabled"
 	}
-	Write-Host
-	Write-Host "Status:" $scaMode
-	Write-Host
+	CONOUT "`nStatus: $scaMode"
+	CONOUT "`r"
 	$tokenFiles = $null
 	$tokenPath = "${env:LOCALAPPDATA}\Microsoft\Office\16.0\Licensing"
 	If (Test-Path $tokenPath)
@@ -7047,12 +7180,12 @@ function PrintSharedComputerLicensing
 	}
 	If ($null -Eq $tokenFiles)
 	{
-		Write-Host "No tokens found."
+		CONOUT "No tokens found."
 		Return
 	}
 	If ($tokenFiles.Length -Eq 0)
 	{
-		Write-Host "No tokens found."
+		CONOUT "No tokens found."
 		Return
 	}
 	$tokenFiles | ForEach `
@@ -7086,16 +7219,9 @@ function PrintLicensesInformation
 	{
 		$licenseFiles = Get-ChildItem -Path $licensePath -Recurse | Where-Object { !$_.PSIsContainer }
 	}
-	If ($null -Eq $licenseFiles)
+	If ($null -Eq $licenseFiles -Or $licenseFiles.Length -Eq 0)
 	{
-		Write-Host
-		Write-Host "No licenses found."
-		Return
-	}
-	If ($licenseFiles.Length -Eq 0)
-	{
-		Write-Host
-		Write-Host "No licenses found."
+		CONOUT "`nNo licenses found."
 		Return
 	}
 	$licenseFiles | ForEach `
@@ -7152,24 +7278,20 @@ function vNextDiagRun
 		Return
 	}
 
-	if ($All.IsPresent) {Write-Host}
-	Write-Host "$line2"
-	Write-Host "===                  Office vNext Status                 ==="
-	Write-Host "$line2"
-	Write-Host
-	Write-Host "========== Mode per ProductReleaseId =========="
+	& $isAll
+	CONOUT "$line2"
+	CONOUT "===                  Office vNext Status                 ==="
+	CONOUT "$line2"
+	CONOUT "`n========== Mode per ProductReleaseId =========="
 	PrintModePerPridFromRegistry
-	Write-Host
-	Write-Host "========== Shared Computer Licensing =========="
+	CONOUT "`n========== Shared Computer Licensing =========="
 	PrintSharedComputerLicensing
-	Write-Host
-	Write-Host "========== vNext licenses ==========="
+	CONOUT "`n========== vNext licenses ==========="
 	PrintLicensesInformation -Mode "NUL"
-	Write-Host
-	Write-Host "========== Device licenses =========="
+	CONOUT "`n========== Device licenses =========="
 	PrintLicensesInformation -Mode "Device"
-	Write-Host "$line3"
-	Write-Host
+	CONOUT "$line3"
+	CONOUT "`r"
 }
 #endregion
 
@@ -7252,13 +7374,13 @@ function PrintStateData {
 	}
 
 	[string[]]$pwszStateString = $Marshal::PtrToStringUni($pwszStateData) -replace ";", "`n    "
-	Write-Host "    $pwszStateString"
+	CONOUT ("    $pwszStateString")
 
 	$Marshal::FreeHGlobal($pwszStateData)
 	return $TRUE
 }
 
-function PrintLastActivationHRresult {
+function PrintLastActivationHResult {
 	$pdwLastHResult = 0
 	$cbSize = 0
 
@@ -7271,12 +7393,34 @@ function PrintLastActivationHRresult {
 		return $FALSE
 	}
 
-	Write-Host ("    LastActivationHResult=0x{0:x8}" -f $Marshal::ReadInt32($pdwLastHResult))
+	CONOUT ("    LastActivationHResult=0x{0:x8}" -f $Marshal::ReadInt32($pdwLastHResult))
 
 	$Marshal::FreeHGlobal($pdwLastHResult)
 	return $TRUE
 }
 
+function PrintLastActivationTime {
+	$pdwLastTime = 0
+	$cbSize = 0
+
+	if ($Win32::SLGetWindowsInformation(
+		"Security-SPP-LastWindowsActivationTime",
+		[ref]$null,
+		[ref]$cbSize,
+		[ref]$pdwLastTime
+	)) {
+		return $FALSE
+	}
+
+	$actTime = $Marshal::ReadInt64($pdwLastTime)
+	if ($actTime -ne 0) {
+		CONOUT ("    LastActivationTime={0}" -f [DateTime]::FromFileTimeUtc($actTime).ToString("yyyy/MM/dd:HH:mm:ss"))
+	}
+
+	$Marshal::FreeHGlobal($pdwLastTime)
+	return $TRUE
+}
+
 function PrintIsWindowsGenuine {
 	$dwGenuine = 0
 	$ppwszGenuineStates = @(
@@ -7292,9 +7436,9 @@ function PrintIsWindowsGenuine {
 	}
 
 	if ($dwGenuine -lt 5) {
-		Write-Host ("    IsWindowsGenuine={0}" -f $ppwszGenuineStates[$dwGenuine])
+		CONOUT ("    IsWindowsGenuine={0}" -f $ppwszGenuineStates[$dwGenuine])
 	} else {
-		Write-Host ("    IsWindowsGenuine={0}" -f $dwGenuine)
+		CONOUT ("    IsWindowsGenuine={0}" -f $dwGenuine)
 	}
 
 	return $TRUE
@@ -7318,7 +7462,7 @@ function PrintDigitalLicenseStatus {
 	[bool]$bDigitalLicense = $FALSE
 
 	$bDigitalLicense = (($dwReturnCode -ge 0) -and ($dwReturnCode -ne 1))
-	Write-Host ("    IsDigitalLicense={0}" -f (BoolToWStr $bDigitalLicense))
+	CONOUT ("    IsDigitalLicense={0}" -f (BoolToWStr $bDigitalLicense))
 
 	return $TRUE
 }
@@ -7336,7 +7480,7 @@ function PrintSubscriptionStatus {
 		return $FALSE
 	}
 
-	Write-Host ("    SubscriptionSupportedEdition={0}" -f (BoolToWStr $dwSupported))
+	CONOUT ("    SubscriptionSupportedEdition={0}" -f (BoolToWStr $dwSupported))
 
 	$pStatus = $Marshal::AllocHGlobal($Marshal::SizeOf([Type]$SubStatus))
 	if ($Win32::ClipGetSubscriptionStatus([ref]$pStatus)) {
@@ -7347,25 +7491,26 @@ function PrintSubscriptionStatus {
 	$sStatus = $Marshal::PtrToStructure($pStatus, [Type]$SubStatus)
 	$Marshal::FreeHGlobal($pStatus)
 
-	Write-Host ("    SubscriptionEnabled={0}" -f (BoolToWStr $sStatus.dwEnabled))
+	CONOUT ("    SubscriptionEnabled={0}" -f (BoolToWStr $sStatus.dwEnabled))
 
 	if ($sStatus.dwEnabled -eq 0) {
 		return $TRUE
 	}
 
-	Write-Host ("    SubscriptionSku={0}" -f $sStatus.dwSku)
-	Write-Host ("    SubscriptionState={0}" -f $sStatus.dwState)
+	CONOUT ("    SubscriptionSku={0}" -f $sStatus.dwSku)
+	CONOUT ("    SubscriptionState={0}" -f $sStatus.dwState)
 
 	return $TRUE
 }
 
 function ClicRun
 {
-	if ($All.IsPresent) {Write-Host}
-	Write-Host "Client Licensing Check information:"
+	& $isAll
+	CONOUT "Client Licensing Check information:"
 
 	$null = PrintStateData
-	$null = PrintLastActivationHRresult
+	$null = PrintLastActivationHResult
+	$null = PrintLastActivationTime
 	$null = PrintIsWindowsGenuine
 
 	if ($DllDigital) {
@@ -7376,20 +7521,16 @@ function ClicRun
 		$null = PrintSubscriptionStatus
 	}
 
-	Write-Host "$line3"
-	if (!$All.IsPresent) {Write-Host}
+	CONOUT "$line3"
+	& $noAll
 }
 #endregion
 
 $Host.UI.RawUI.WindowTitle = "Check Activation Status"
-
+UnQuickEdit
 if ($All.IsPresent) {
-	$B=$Host.UI.RawUI.BufferSize;$B.Height=3000;$Host.UI.RawUI.BufferSize=$B;clear;
-}
-
-$SysPath = "$env:SystemRoot\System32"
-if (Test-Path "$env:SystemRoot\Sysnative\reg.exe") {
-	$SysPath = "$env:SystemRoot\Sysnative"
+	$B=$Host.UI.RawUI.BufferSize;$B.Height=3000;$Host.UI.RawUI.BufferSize=$B;
+	if (!$Pass.IsPresent) {clear;}
 }
 
 $wslp = "SoftwareLicensingProduct"
@@ -7403,46 +7544,43 @@ $cSub = ($winbuild -GE 19041) -And (Select-String -Path "$SysPath\wbem\sppwmi.mo
 $DllDigital = ($winbuild -GE 14393) -And (Test-Path "$SysPath\EditionUpgradeManagerObj.dll")
 $DllSubscription = ($winbuild -GE 14393) -And (Test-Path "$SysPath\Clipc.dll")
 $VLActTypes = @("All", "AD", "KMS", "Token")
-$SLKeyPath = "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SL"
-$NSKeyPath = "Registry::HKEY_USERS\S-1-5-20\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SL"
+$SLKeyPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SL"
+$NSKeyPath = "HKEY_USERS\S-1-5-20\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SL"
 
-'cW1nd0ws', 'c0ff1ce15', 'c0ff1ce14', 'ospp14', 'ospp15' | foreach {set $_ $null}
+'cW1nd0ws', 'c0ff1ce15', 'c0ff1ce14', 'ospp14', 'ospp15' | foreach {set $_ $false}
 
-$OsppHook = 1
-try {gsv osppsvc -EA 1 | Out-Null} catch {$OsppHook = 0}
+$offsvc = "osppsvc"
+if ($NT7 -Or -Not $NT6) {$winsvc = "sppsvc"} else {$winsvc = "slsvc"}
 
-if ($NT7 -Or -Not $NT6) {
-	try {sasv sppsvc -EA 1} catch {}
+try {gsv $winsvc -EA 1 | Out-Null; $WsppHook = 1} catch {$WsppHook = 0}
+try {gsv $offsvc -EA 1 | Out-Null; $OsppHook = 1} catch {$OsppHook = 0}
+
+if ($WsppHook -NE 0) {
+	try {sasv $winsvc -EA 1} catch {}
+	$cW1nd0ws  = DetectID $wslp $winApp
+	$c0ff1ce15 = DetectID $wslp $o15App
+	$c0ff1ce14 = DetectID $wslp $o14App
 }
-else
-{
-	try {sasv slsvc -EA 1} catch {}
-}
-
-DetectID $wslp $winApp ([ref]$cW1nd0ws)
-DetectID $wslp $o15App ([ref]$c0ff1ce15)
-DetectID $wslp $o14App ([ref]$c0ff1ce14)
 
 if ($OsppHook -NE 0) {
-	try {sasv osppsvc -EA 1} catch {}
-	DetectID $oslp $o15App ([ref]$ospp15)
-	DetectID $oslp $o14App ([ref]$ospp14)
+	try {sasv $offsvc -EA 1} catch {}
+	$ospp15 = DetectID $oslp $o15App
+	$ospp14 = DetectID $oslp $o14App
 }
 
-if ($null -NE $cW1nd0ws)
+if ($cW1nd0ws)
 {
 	echoWindows
 	GetID $wslp $winApp | foreach -EA 1 {
 	GetResult $wslp $wsls $_
-	Write-Host "$line3"
-	if (!$All.IsPresent) {Write-Host}
+	CONOUT "$line3"
+	& $noAll
 	}
 }
 elseif ($NT6)
 {
 	echoWindows
-	Write-Host
-	Write-Host "Error: product key not found."
+	CONOUT "`nError: product key not found."
 }
 
 if ($winbuild -GE 9200) {
@@ -7456,39 +7594,43 @@ if ($c0ff1ce15 -Or $ospp15) {
 
 $doMSG = 1
 
-if ($null -NE $c0ff1ce15) {
+if ($c0ff1ce15)
+{
 	echoOffice
 	GetID $wslp $o15App | foreach -EA 1 {
 	GetResult $wslp $wsls $_
-	Write-Host "$line3"
-	if (!$All.IsPresent) {Write-Host}
+	CONOUT "$line3"
+	& $noAll
 	}
 }
 
-if ($null -NE $c0ff1ce14) {
+if ($c0ff1ce14)
+{
 	echoOffice
 	GetID $wslp $o14App | foreach -EA 1 {
 	GetResult $wslp $wsls $_
-	Write-Host "$line3"
-	if (!$All.IsPresent) {Write-Host}
+	CONOUT "$line3"
+	& $noAll
 	}
 }
 
-if ($null -NE $ospp15) {
+if ($ospp15)
+{
 	echoOffice
 	GetID $oslp $o15App | foreach -EA 1 {
 	GetResult $oslp $osls $_
-	Write-Host "$line3"
-	if (!$All.IsPresent) {Write-Host}
+	CONOUT "$line3"
+	& $noAll
 	}
 }
 
-if ($null -NE $ospp14) {
+if ($ospp14)
+{
 	echoOffice
 	GetID $oslp $o14App | foreach -EA 1 {
 	GetResult $oslp $osls $_
-	Write-Host "$line3"
-	if (!$All.IsPresent) {Write-Host}
+	CONOUT "$line3"
+	& $noAll
 	}
 }
 
diff --git a/MAS/Separate-Files-Version/Check_Activation_Status.cmd b/MAS/Separate-Files-Version/Check_Activation_Status.cmd
index a9ba6a4..3340948 100644
--- a/MAS/Separate-Files-Version/Check_Activation_Status.cmd
+++ b/MAS/Separate-Files-Version/Check_Activation_Status.cmd
@@ -47,20 +47,40 @@ choice /c 0 /n
 exit /b
 
 :sppmgr:
+param (
+    [Parameter()]
+    [switch]
+    $All,
+    [Parameter()]
+    [switch]
+    $Dlv,
+    [Parameter()]
+    [switch]
+    $IID,
+    [Parameter()]
+    [switch]
+    $Pass
+)
+
+function CONOUT($strObj)
+{
+	Out-Host -Input $strObj
+}
+
 function ExitScript($ExitCode = 0)
 {
 	Exit $ExitCode
 }
 
 if (-Not $PSVersionTable) {
-	Write-Host "==== ERROR ====`r`n"
-	Write-Host 'Windows PowerShell 1.0 is not supported by this script.'
+	"==== ERROR ====`r`n"
+	"Windows PowerShell 1.0 is not supported by this script."
 	ExitScript 1
 }
 
 if ($ExecutionContext.SessionState.LanguageMode.value__ -NE 0) {
-	Write-Host "==== ERROR ====`r`n"
-	Write-Host 'Windows PowerShell is not running in Full Language Mode.'
+	"==== ERROR ====`r`n"
+	"Windows PowerShell is not running in Full Language Mode."
 	ExitScript 1
 }
 
@@ -68,21 +88,49 @@ $winbuild = 1
 try {
 	$winbuild = [System.Diagnostics.FileVersionInfo]::GetVersionInfo("$env:SystemRoot\System32\kernel32.dll").FileBuildPart
 } catch {
-	$winbuild = [int](Get-WmiObject Win32_OperatingSystem).BuildNumber
+	$winbuild = [int]([wmi]'Win32_OperatingSystem=@').BuildNumber
 }
 
 if ($winbuild -EQ 1) {
-	Write-Host "==== ERROR ====`r`n"
-	Write-Host 'Could not detect Windows build.'
+	"==== ERROR ====`r`n"
+	"Could not detect Windows build."
 	ExitScript 1
 }
 
 if ($winbuild -LT 2600) {
-	Write-Host "==== ERROR ====`r`n"
-	Write-Host 'This build of Windows is not supported by this script.'
+	"==== ERROR ====`r`n"
+	"This build of Windows is not supported by this script."
 	ExitScript 1
 }
 
+$SysPath = "$env:SystemRoot\System32"
+if (Test-Path "$env:SystemRoot\Sysnative\reg.exe") {
+	$SysPath = "$env:SystemRoot\Sysnative"
+}
+
+if (Test-Path "$SysPath\sppc.dll") {
+	$SLdll = 'sppc.dll'
+} elseif (Test-Path "$SysPath\slc.dll") {
+	$SLdll = 'slc.dll'
+} else {
+	"==== ERROR ====`r`n"
+	"Software Licensing Client Dll is not detected."
+	ExitScript 1
+}
+
+if ($All.IsPresent)
+{
+	$isAll = {CONOUT "`r"}
+	$noAll = {$null}
+}
+else
+{
+	$isAll = {$null}
+	$noAll = {CONOUT "`r"}
+}
+$Dlv = $Dlv.IsPresent
+$IID = $IID.IsPresent -Or $Dlv.IsPresent
+
 $NT6 = $winbuild -GE 6000
 $NT7 = $winbuild -GE 7600
 $NT9 = $winbuild -GE 9600
@@ -92,12 +140,29 @@ $Admin = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdenti
 $line2 = "============================================================"
 $line3 = "____________________________________________________________"
 
+function UnQuickEdit
+{
+	$t=[AppDomain]::CurrentDomain.DefineDynamicAssembly((Get-Random), 1).DefineDynamicModule((Get-Random), $False).DefineType((Get-Random))
+	$t.DefinePInvokeMethod('GetStdHandle', 'kernel32.dll', 22, 1, [IntPtr], @([Int32]), 1, 3).SetImplementationFlags(128)
+	$t.DefinePInvokeMethod('SetConsoleMode', 'kernel32.dll', 22, 1, [Boolean], @([IntPtr], [Int32]), 1, 3).SetImplementationFlags(128)
+	$t.DefinePInvokeMethod('GetConsoleWindow', 'kernel32.dll', 22, 1, [IntPtr], @(), 1, 3).SetImplementationFlags(128)
+	$t.DefinePInvokeMethod('SendMessageW', 'user32.dll', 22, 1, [IntPtr], @([IntPtr], [UInt32], [IntPtr], [IntPtr]), 1, 3).SetImplementationFlags(128)
+	$k=$t.CreateType()
+	if ($winbuild -GE 17763) {
+		if ($k::SendMessageW($k::GetConsoleWindow(), 127, 0, 0) -EQ [IntPtr]::Zero) {
+			return
+		}
+	}
+	$v=(0x0080, 0x00A0)[!($winbuild -GE 10586)]
+	$b=$k::SetConsoleMode($k::GetStdHandle(-10), $v)
+}
+
 function echoWindows
 {
-	Write-Host "$line2"
-	Write-Host "===                   Windows Status                     ==="
-	Write-Host "$line2"
-	if (!$All.IsPresent) {Write-Host}
+	CONOUT "$line2"
+	CONOUT "===                   Windows Status                     ==="
+	CONOUT "$line2"
+	& $noAll
 }
 
 function echoOffice
@@ -106,18 +171,22 @@ function echoOffice
 		return
 	}
 
-	if ($All.IsPresent) {Write-Host}
-	Write-Host "$line2"
-	Write-Host "===                   Office Status                      ==="
-	Write-Host "$line2"
-	if (!$All.IsPresent) {Write-Host}
+	& $isAll
+	CONOUT "$line2"
+	CONOUT "===                   Office Status                      ==="
+	CONOUT "$line2"
+	& $noAll
 
 	$script:doMSG = 0
 }
 
 function strGetRegistry($strKey, $strName)
 {
-Get-ItemProperty -EA 0 $strKey | select -EA 0 -Expand $strName
+	try {
+		return [Microsoft.Win32.Registry]::GetValue($strKey, $strName, $null)
+	} catch {
+		return $null
+	}
 }
 
 function CheckOhook
@@ -148,55 +217,57 @@ function CheckOhook
 		return
 	}
 
-	if ($All.IsPresent) {Write-Host}
-	Write-Host "$line2"
-	Write-Host "===                Office Ohook Status                   ==="
-	Write-Host "$line2"
-	Write-Host
-	Write-Host -back 'Black' -fore 'Yellow' 'Ohook for permanent Office activation is installed.'
-	Write-Host -back 'Black' -fore 'Yellow' 'You can ignore the below mentioned Office activation status.'
-	if (!$All.IsPresent) {Write-Host}
+	& $isAll
+	CONOUT "$line2"
+	CONOUT "===                Office Ohook Status                   ==="
+	CONOUT "$line2"
+	$host.UI.WriteLine('Yellow', 'Black', "`r`nOhook for permanent Office activation is installed.`r`nYou can ignore the below mentioned Office activation status.")
+	& $noAll
 }
 
 #region WMI
-function DetectID($strSLP, $strAppId, [ref]$strAppVar)
+function DetectID($strSLP, $strAppId)
 {
-	$fltr = "ApplicationID='$strAppId'"
-	if (!$All.IsPresent) {
-		$fltr = $fltr + " AND PartialProductKey <> NULL"
-	}
-	Get-WmiObject $strSLP ID -Filter $fltr -EA 0 | select ID -EA 0 | foreach {
-		$strAppVar.Value = 1
-	}
+	$ppk = (" AND PartialProductKey <> NULL)", ")")[$All.IsPresent]
+	$fltr = "SELECT ID FROM $strSLP WHERE (ApplicationID='$strAppId'"
+	$clause = $fltr + $ppk
+	$sWmi = [wmisearcher]$clause
+	$sWmi.Options.Rewindable = $false
+	return ($sWmi.Get().Count -GT 0)
 }
 
-function GetID($strSLP, $strAppId, $strProperty = "ID")
+function GetID($strSLP, $strAppId)
 {
 	$NT5 = ($strSLP -EQ $wslp -And $winbuild -LT 6001)
 	$IDs = [Collections.ArrayList]@()
+	$isAdd = (" AND LicenseDependsOn <> NULL)", ")")[$NT5]
+	$noAdd = " AND LicenseDependsOn IS NULL)"
+	$query = "SELECT ID FROM $strSLP WHERE (ApplicationID='$strAppId' AND PartialProductKey"
 
 	if ($All.IsPresent) {
-		$fltr = "ApplicationID='$strAppId' AND PartialProductKey IS NULL"
-		$clause = $fltr
+		$fltr = $query + " IS NULL"
+		$clause = $fltr + $isAdd
+		$sWmi = [wmisearcher]$clause
+		$sWmi.Options.Rewindable = $false
+		try {$sWmi.Get() | select -Expand Properties -EA 0 | foreach {$IDs += $_.Value}} catch {}
 		if (-Not $NT5) {
-		$clause = $fltr + " AND LicenseDependsOn <> NULL"
-		}
-		Get-WmiObject $strSLP $strProperty -Filter $clause -EA 0 | select -Expand $strProperty -EA 0 | foreach {$IDs += $_}
-		if (-Not $NT5) {
-		$clause = $fltr + " AND LicenseDependsOn IS NULL"
-		Get-WmiObject $strSLP $strProperty -Filter $clause -EA 0 | select -Expand $strProperty -EA 0 | foreach {$IDs += $_}
+		$clause = $fltr + $noAdd
+		$sWmi = [wmisearcher]$clause
+		$sWmi.Options.Rewindable = $false
+		try {$sWmi.Get() | select -Expand Properties -EA 0 | foreach {$IDs += $_.Value}} catch {}
 		}
 	}
 
-	$fltr = "ApplicationID='$strAppId' AND PartialProductKey <> NULL"
-	$clause = $fltr
+	$fltr = $query + " <> NULL"
+	$clause = $fltr + $isAdd
+	$sWmi = [wmisearcher]$clause
+	$sWmi.Options.Rewindable = $false
+	try {$sWmi.Get() | select -Expand Properties -EA 0 | foreach {$IDs += $_.Value}} catch {}
 	if (-Not $NT5) {
-	$clause = $fltr + " AND LicenseDependsOn <> NULL"
-	}
-	Get-WmiObject $strSLP $strProperty -Filter $clause -EA 0 | select -Expand $strProperty -EA 0 | foreach {$IDs += $_}
-	if (-Not $NT5) {
-	$clause = $fltr + " AND LicenseDependsOn IS NULL"
-	Get-WmiObject $strSLP $strProperty -Filter $clause -EA 0 | select -Expand $strProperty -EA 0 | foreach {$IDs += $_}
+	$clause = $fltr + $noAdd
+	$sWmi = [wmisearcher]$clause
+	$sWmi.Options.Rewindable = $false
+	try {$sWmi.Get() | select -Expand Properties -EA 0 | foreach {$IDs += $_.Value}} catch {}
 	}
 
 	return $IDs
@@ -233,38 +304,45 @@ function DetectSubscription {
 		if ($objSvc.SubscriptionEdition.Contains("UNKNOWN") -EQ $false) {$SubMsgEdition = $objSvc.SubscriptionEdition}
 	}
 
-	Write-Host
-	Write-Host "Subscription information:"
-	Write-Host "    Edition: $SubMsgEdition"
-	Write-Host "    Type   : $SubMsgType"
-	Write-Host "    Status : $SubMsgStatus"
-	Write-Host "    Expiry : $SubMsgExpiry"
+	CONOUT "`nSubscription information:"
+	CONOUT "    Edition: $SubMsgEdition"
+	CONOUT "    Type   : $SubMsgType"
+	CONOUT "    Status : $SubMsgStatus"
+	CONOUT "    Expiry : $SubMsgExpiry"
+}
+
+function DetectAdbaClient
+{
+	CONOUT "`nAD Activation client information:"
+	CONOUT "    Object Name: $ADActivationObjectName"
+	CONOUT "    Domain Name: $ADActivationObjectDN"
+	CONOUT "    CSVLK Extended PID: $ADActivationCsvlkPid"
+	CONOUT "    CSVLK Activation ID: $ADActivationCsvlkSkuId"
 }
 
 function DetectAvmClient
 {
-	Write-Host
-	Write-Host "Automatic VM Activation client information:"
+	CONOUT "`nAutomatic VM Activation client information:"
 	if (-Not [String]::IsNullOrEmpty($IAID)) {
-		Write-Host "    Guest IAID: $IAID"
+		CONOUT "    Guest IAID: $IAID"
 	} else {
-		Write-Host "    Guest IAID: Not Available"
+		CONOUT "    Guest IAID: Not Available"
 	}
 	if (-Not [String]::IsNullOrEmpty($AutomaticVMActivationHostMachineName)) {
-		Write-Host "    Host machine name: $AutomaticVMActivationHostMachineName"
+		CONOUT "    Host machine name: $AutomaticVMActivationHostMachineName"
 	} else {
-		Write-Host "    Host machine name: Not Available"
+		CONOUT "    Host machine name: Not Available"
 	}
 	if ($AutomaticVMActivationLastActivationTime.Substring(0,4) -NE "1601") {
 		$EED = [DateTime]::Parse([Management.ManagementDateTimeConverter]::ToDateTime($AutomaticVMActivationLastActivationTime),$null,48).ToString('yyyy-MM-dd hh:mm:ss tt')
-		Write-Host "    Activation time: $EED UTC"
+		CONOUT "    Activation time: $EED UTC"
 	} else {
-		Write-Host "    Activation time: Not Available"
+		CONOUT "    Activation time: Not Available"
 	}
 	if (-Not [String]::IsNullOrEmpty($AutomaticVMActivationHostDigitalPid2)) {
-		Write-Host "    Host Digital PID2: $AutomaticVMActivationHostDigitalPid2"
+		CONOUT "    Host Digital PID2: $AutomaticVMActivationHostDigitalPid2"
 	} else {
-		Write-Host "    Host Digital PID2: Not Available"
+		CONOUT "    Host Digital PID2: Not Available"
 	}
 }
 
@@ -294,32 +372,30 @@ function DetectKmsHost
 		$KeyManagementServiceLowPriority = "Normal"
 	}
 
-	Write-Host
-	Write-Host "Key Management Service host information:"
-	Write-Host "    Current count: $KeyManagementServiceCurrentCount"
-	Write-Host "    Listening on Port: $KeyManagementServiceListeningPort"
-	Write-Host "    DNS publishing: $KeyManagementServiceDnsPublishing"
-	Write-Host "    KMS priority: $KeyManagementServiceLowPriority"
+	CONOUT "`nKey Management Service host information:"
+	CONOUT "    Current count: $KeyManagementServiceCurrentCount"
+	CONOUT "    Listening on Port: $KeyManagementServiceListeningPort"
+	CONOUT "    DNS publishing: $KeyManagementServiceDnsPublishing"
+	CONOUT "    KMS priority: $KeyManagementServiceLowPriority"
 	if (-Not [String]::IsNullOrEmpty($KeyManagementServiceTotalRequests)) {
-		Write-Host
-		Write-Host "Key Management Service cumulative requests received from clients:"
-		Write-Host "    Total: $KeyManagementServiceTotalRequests"
-		Write-Host "    Failed: $KeyManagementServiceFailedRequests"
-		Write-Host "    Unlicensed: $KeyManagementServiceUnlicensedRequests"
-		Write-Host "    Licensed: $KeyManagementServiceLicensedRequests"
-		Write-Host "    Initial grace period: $KeyManagementServiceOOBGraceRequests"
-		Write-Host "    Expired or Hardware out of tolerance: $KeyManagementServiceOOTGraceRequests"
-		Write-Host "    Non-genuine grace period: $KeyManagementServiceNonGenuineGraceRequests"
-		Write-Host "    Notification: $KeyManagementServiceNotificationRequests"
+		CONOUT "`nKey Management Service cumulative requests received from clients:"
+		CONOUT "    Total: $KeyManagementServiceTotalRequests"
+		CONOUT "    Failed: $KeyManagementServiceFailedRequests"
+		CONOUT "    Unlicensed: $KeyManagementServiceUnlicensedRequests"
+		CONOUT "    Licensed: $KeyManagementServiceLicensedRequests"
+		CONOUT "    Initial grace period: $KeyManagementServiceOOBGraceRequests"
+		CONOUT "    Expired or Hardware out of tolerance: $KeyManagementServiceOOTGraceRequests"
+		CONOUT "    Non-genuine grace period: $KeyManagementServiceNonGenuineGraceRequests"
+		if ($null -NE $KeyManagementServiceNotificationRequests) {CONOUT "    Notification: $KeyManagementServiceNotificationRequests"}
 	}
 }
 
 function DetectKmsClient
 {
-	if ($null -NE $VLActivationTypeEnabled) {Write-Host "Configured Activation Type: $($VLActTypes[$VLActivationTypeEnabled])"}
-	Write-Host
+	if ($null -NE $VLActivationTypeEnabled) {CONOUT "Configured Activation Type: $($VLActTypes[$VLActivationTypeEnabled])"}
+	CONOUT "`r"
 	if ($LicenseStatus -NE 1) {
-		Write-Host "Please activate the product in order to update KMS client information values."
+		CONOUT "Please activate the product in order to update KMS client information values."
 		return
 	}
 
@@ -352,33 +428,42 @@ function DetectKmsClient
 		}
 	}
 
-	Write-Host "Key Management Service client information:"
-	Write-Host "    Client Machine ID (CMID): $($objSvc.ClientMachineID)"
+	CONOUT "Key Management Service client information:"
+	CONOUT "    Client Machine ID (CMID): $($objSvc.ClientMachineID)"
 	if ($null -EQ $KmsReg) {
-		Write-Host "    $KmsDns"
-		Write-Host "    Registered KMS machine name: KMS name not available"
+		CONOUT "    $KmsDns"
+		CONOUT "    Registered KMS machine name: KMS name not available"
 	} else {
-		Write-Host "    $KmsReg"
+		CONOUT "    $KmsReg"
 	}
-	if ($null -NE $DiscoveredKeyManagementServiceMachineIpAddress) {Write-Host "    KMS machine IP address: $DiscoveredKeyManagementServiceMachineIpAddress"}
-	Write-Host "    KMS machine extended PID: $KeyManagementServiceProductKeyID"
-	Write-Host "    Activation interval: $VLActivationInterval minutes"
-	Write-Host "    Renewal interval: $VLRenewalInterval minutes"
-	if ($null -NE $KeyManagementServiceHostCaching) {Write-Host "    KMS host caching: $KeyManagementServiceHostCaching"}
-	if (-Not [String]::IsNullOrEmpty($KeyManagementServiceLookupDomain)) {Write-Host "    KMS SRV record lookup domain: $KeyManagementServiceLookupDomain"}
+	if ($null -NE $DiscoveredKeyManagementServiceMachineIpAddress) {CONOUT "    KMS machine IP address: $DiscoveredKeyManagementServiceMachineIpAddress"}
+	CONOUT "    KMS machine extended PID: $KeyManagementServiceProductKeyID"
+	CONOUT "    Activation interval: $VLActivationInterval minutes"
+	CONOUT "    Renewal interval: $VLRenewalInterval minutes"
+	if ($null -NE $KeyManagementServiceHostCaching) {CONOUT "    KMS host caching: $KeyManagementServiceHostCaching"}
+	if (-Not [String]::IsNullOrEmpty($KeyManagementServiceLookupDomain)) {CONOUT "    KMS SRV record lookup domain: $KeyManagementServiceLookupDomain"}
 }
 
 function GetResult($strSLP, $strSLS, $strID)
 {
-	try {$objPrd = Get-WmiObject $strSLP -Filter "ID='$strID'" -EA 1} catch {return}
-	$objPrd | select -Expand Properties -EA 0 | foreach {
-		if (-Not [String]::IsNullOrEmpty($_.Value)) {set $_.Name $_.Value}
+	try
+	{
+		$objPrd = [wmisearcher]"SELECT * FROM $strSLP WHERE ID='$strID'"
+		$objPrd.Options.Rewindable = $false
+		$objPrd.Get() | select -Expand Properties -EA 0 | foreach { if (-Not [String]::IsNullOrEmpty($_.Value)) {set $_.Name $_.Value} }
+		$objPrd.Dispose()
+	}
+	catch
+	{
+		return
 	}
 
 	$winID = ($ApplicationID -EQ $winApp)
 	$winPR = ($winID -And -Not $LicenseIsAddon)
 	$Vista = ($winID -And $NT6 -And -Not $NT7)
 	$NT5 = ($strSLP -EQ $wslp -And $winbuild -LT 6001)
+	$reapp = ("Windows", "App")[!$winID]
+	$prmnt = ("machine", "product")[!$winPR]
 
 	if ($Description | Select-String "VOLUME_KMSCLIENT") {$cKmsClient = 1; $_mTag = "Volume"}
 	if ($Description | Select-String "TIMEBASED_") {$cTblClient = 1; $_mTag = "Timebased"}
@@ -403,7 +488,7 @@ function GetResult($strSLP, $strSLS, $strID)
 		$LicenseInf = "Licensed"
 		$LicenseMsg = $null
 		if ($GracePeriodRemaining -EQ 0) {
-			if ($winPR) {$ExpireMsg = "The machine is permanently activated."} else {$ExpireMsg = "The product is permanently activated."}
+			$ExpireMsg = "The $prmnt is permanently activated."
 		} else {
 			$LicenseMsg = "$_mTag activation expiration: $GracePeriodRemaining minute(s) ($_gpr day(s))"
 			if ($null -NE $_xpr) {$ExpireMsg = "$_mTag activation will expire $_xpr"}
@@ -424,8 +509,9 @@ function GetResult($strSLP, $strSLS, $strID)
 	if ($LicenseStatus -EQ 5 -And -Not $NT5) {
 		$LicenseInf = "Notification"
 		$LicenseMsg = "Notification Reason: $LicenseReason"
+		if ($LicenseReason -EQ "0xC004F00F") {if ($null -NE $cKmsClient) {$LicenseMsg = $LicenseMsg + " (KMS license expired)."} else {$LicenseMsg = $LicenseMsg + " (hardware out of tolerance)."}}
 		if ($LicenseReason -EQ "0xC004F200") {$LicenseMsg = $LicenseMsg + " (non-genuine)."}
-		if ($LicenseReason -EQ "0xC004F009") {$LicenseMsg = $LicenseMsg + " (grace time expired)."}
+		if ($LicenseReason -EQ "0xC004F009" -Or $LicenseReason -EQ "0xC004F064") {$LicenseMsg = $LicenseMsg + " (grace time expired)."}
 	}
 	if ($LicenseStatus -GT 5 -Or ($LicenseStatus -GT 4 -And $NT5)) {
 		$LicenseInf = "Unknown"
@@ -437,25 +523,61 @@ function GetResult($strSLP, $strSLS, $strID)
 	}
 
 	if ($winPR -And $PartialProductKey -And -Not $NT9) {
-		$dp4 = Get-ItemProperty -EA 0 "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" | select -EA 0 -Expand DigitalProductId4
+		$dp4 = strGetRegistry "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" "DigitalProductId4"
 		if ($null -NE $dp4) {
 			$ProductKeyChannel = ([System.Text.Encoding]::Unicode.GetString($dp4, 1016, 128)).Trim([char]$null)
 		}
 	}
 
-	if ($All.IsPresent) {Write-Host}
-	Write-Host "Name: $Name"
-	Write-Host "Description: $Description"
-	Write-Host "Activation ID: $ID"
-	if ($null -NE $ProductKeyID) {Write-Host "Extended PID: $ProductKeyID"}
-	if ($null -NE $OfflineInstallationId -And $IID.IsPresent) {Write-Host "Installation ID: $OfflineInstallationId"}
-	if ($null -NE $ProductKeyChannel) {Write-Host "Product Key Channel: $ProductKeyChannel"}
-	if ($null -NE $PartialProductKey) {Write-Host "Partial Product Key: $PartialProductKey"} else {Write-Host "Product Key: Not installed"}
-	Write-Host "License Status: $LicenseInf"
-	if ($null -NE $LicenseMsg) {Write-Host "$LicenseMsg"}
+	if ($winPR -And $Dlv -And $null -EQ $RemainingAppReArmCount) {
+		try
+		{
+			$tmp = [wmisearcher]"SELECT RemainingWindowsReArmCount FROM $strSLS"
+			$tmp.Options.Rewindable = $false
+			$tmp.Get() | select -Expand Properties -EA 0 | foreach {set $_.Name $_.Value}
+			$tmp.Dispose()
+		}
+		catch
+		{
+		}
+	}
+
+	$add_on = $Name.IndexOf("add-on for", 5)
+
+	& $isAll
+	if ($add_on -EQ -1) {CONOUT "Name: $Name"} else {CONOUT "Name: $($Name.Substring(0, $add_on + 7))"}
+	CONOUT "Description: $Description"
+	CONOUT "Activation ID: $ID"
+	if ($null -NE $ProductKeyID) {CONOUT "Extended PID: $ProductKeyID"}
+	if ($null -NE $ProductKeyID2 -And $Dlv) {CONOUT "Product ID: $ProductKeyID2"}
+	if ($null -NE $OfflineInstallationId -And $IID) {CONOUT "Installation ID: $OfflineInstallationId"}
+	if ($null -NE $ProductKeyChannel) {CONOUT "Product Key Channel: $ProductKeyChannel"}
+	if ($null -NE $PartialProductKey) {CONOUT "Partial Product Key: $PartialProductKey"}
+	CONOUT "License Status: $LicenseInf"
+	if ($null -NE $LicenseMsg) {CONOUT "$LicenseMsg"}
 	if ($LicenseStatus -NE 0 -And $EvaluationEndDate.Substring(0,4) -NE "1601") {
 		$EED = [DateTime]::Parse([Management.ManagementDateTimeConverter]::ToDateTime($EvaluationEndDate),$null,48).ToString('yyyy-MM-dd hh:mm:ss tt')
-		Write-Host "Evaluation End Date: $EED UTC"
+		CONOUT "Evaluation End Date: $EED UTC"
+	}
+	if ($Dlv) {
+		if ($null -NE $RemainingWindowsReArmCount) {
+			CONOUT "Remaining Windows rearm count: $RemainingWindowsReArmCount"
+		}
+		if ($null -NE $RemainingSkuReArmCount -And $RemainingSkuReArmCount -NE 4294967295) {
+			CONOUT "Remaining $reapp rearm count: $RemainingAppReArmCount"
+			CONOUT "Remaining SKU rearm count: $RemainingSkuReArmCount"
+		}
+		if ($null -NE $TrustedTime -And $LicenseStatus -NE 0) {
+			$TTD = [DateTime]::Parse([Management.ManagementDateTimeConverter]::ToDateTime($TrustedTime),$null,32).ToString('yyyy-MM-dd hh:mm:ss tt')
+			CONOUT "Trusted time: $TTD"
+		}
+	}
+	if ($LicenseStatus -EQ 0) {
+		return
+	}
+
+	if ($strSLP -EQ $wslp -And $null -NE $PartialProductKey -And $null -NE $ADActivationObjectName -And $VLActivationType -EQ 1) {
+		DetectAdbaClient
 	}
 
 	if ($winID -And $null -NE $cAvmClient -And $null -NE $PartialProductKey) {
@@ -467,16 +589,27 @@ function GetResult($strSLP, $strSLS, $strID)
 	$chkSLS = ($null -NE $PartialProductKey) -And ($null -NE $cKmsClient -Or $null -NE $cKmsHost -Or $chkSub)
 
 	if (!$chkSLS) {
-		if ($null -NE $ExpireMsg) {Write-Host; Write-Host "    $ExpireMsg"}
+		if ($null -NE $ExpireMsg) {CONOUT "`n    $ExpireMsg"}
 		return
 	}
 
-	$objSvc = Get-WmiObject $strSLS -EA 0
-
-	if ($Vista) {
-		$objSvc | select -Expand Properties -EA 0 | foreach {
-			if (-Not [String]::IsNullOrEmpty($_.Value)) {set $_.Name $_.Value}
+	try
+	{
+		$objSvc = New-Object PSObject
+		$wmiSvc = [wmisearcher]"SELECT * FROM $strSLS"
+		$wmiSvc.Options.Rewindable = $false
+		$wmiSvc.Get() | select -Expand Properties -EA 0 | foreach {
+			if (-Not [String]::IsNullOrEmpty($_.Value))
+			{
+				$objSvc | Add-Member 8 $_.Name $_.Value
+				if ($null -EQ $IsKeyManagementServiceMachine) {set $_.Name $_.Value}
+			}
 		}
+		$wmiSvc.Dispose()
+	}
+	catch
+	{
+		return
 	}
 
 	if ($strSLS -EQ $wsls -And $NT9) {
@@ -486,6 +619,7 @@ function GetResult($strSLP, $strSLS, $strID)
 	}
 
 	if ($null -NE $cKmsHost -And $IsKeyManagementServiceMachine -GT 0) {
+		if ($null -NE $ExpireMsg) {CONOUT "`n    $ExpireMsg"}
 		DetectKmsHost
 	}
 
@@ -493,7 +627,9 @@ function GetResult($strSLP, $strSLS, $strID)
 		DetectKmsClient
 	}
 
-	if ($null -NE $ExpireMsg) {Write-Host; Write-Host "    $ExpireMsg"}
+	if ($null -EQ $cKmsHost) {
+		if ($null -NE $ExpireMsg) {CONOUT "`n    $ExpireMsg"}
+	}
 
 	if ($chkSub) {
 		DetectSubscription
@@ -533,11 +669,10 @@ function PrintModePerPridFromRegistry
 	$vNextPrids = Get-Item -Path $vNextRegkey -ErrorAction SilentlyContinue | Select-Object -ExpandProperty 'property' -ErrorAction SilentlyContinue | Where-Object -FilterScript {$_.ToLower() -like "*retail" -or $_.ToLower() -like "*volume"}
 	If ($null -Eq $vNextPrids)
 	{
-		Write-Host
-		Write-Host "No registry keys found."
+		CONOUT "`nNo registry keys found."
 		Return
 	}
-	Write-Host
+	CONOUT "`r"
 	$vNextPrids | ForEach `
 	{
 		$mode = (Get-ItemProperty -Path $vNextRegkey -Name $_).$_
@@ -547,7 +682,7 @@ function PrintModePerPridFromRegistry
 			3 { $mode = "Device"; Break }
 			Default { $mode = "Legacy"; Break }
 		}
-		Write-Host $_ = $mode
+		CONOUT "$_ = $mode"
 	}
 }
 
@@ -561,8 +696,7 @@ function PrintSharedComputerLicensing
 	$scaPolicyValue = Get-ItemProperty -Path $scaPolicyKey -ErrorAction SilentlyContinue | Select-Object -ExpandProperty "SharedComputerLicensing" -ErrorAction SilentlyContinue
 	If ($null -Eq $scaValue -And $null -Eq $scaValue2 -And $null -Eq $scaPolicyValue)
 	{
-		Write-Host
-		Write-Host "No registry keys found."
+		CONOUT "`nNo registry keys found."
 		Return
 	}
 	$scaModeValue = $scaValue -Or $scaValue2 -Or $scaPolicyValue
@@ -574,9 +708,8 @@ function PrintSharedComputerLicensing
 	{
 		$scaMode = "Enabled"
 	}
-	Write-Host
-	Write-Host "Status:" $scaMode
-	Write-Host
+	CONOUT "`nStatus: $scaMode"
+	CONOUT "`r"
 	$tokenFiles = $null
 	$tokenPath = "${env:LOCALAPPDATA}\Microsoft\Office\16.0\Licensing"
 	If (Test-Path $tokenPath)
@@ -585,12 +718,12 @@ function PrintSharedComputerLicensing
 	}
 	If ($null -Eq $tokenFiles)
 	{
-		Write-Host "No tokens found."
+		CONOUT "No tokens found."
 		Return
 	}
 	If ($tokenFiles.Length -Eq 0)
 	{
-		Write-Host "No tokens found."
+		CONOUT "No tokens found."
 		Return
 	}
 	$tokenFiles | ForEach `
@@ -624,16 +757,9 @@ function PrintLicensesInformation
 	{
 		$licenseFiles = Get-ChildItem -Path $licensePath -Recurse | Where-Object { !$_.PSIsContainer }
 	}
-	If ($null -Eq $licenseFiles)
+	If ($null -Eq $licenseFiles -Or $licenseFiles.Length -Eq 0)
 	{
-		Write-Host
-		Write-Host "No licenses found."
-		Return
-	}
-	If ($licenseFiles.Length -Eq 0)
-	{
-		Write-Host
-		Write-Host "No licenses found."
+		CONOUT "`nNo licenses found."
 		Return
 	}
 	$licenseFiles | ForEach `
@@ -690,24 +816,20 @@ function vNextDiagRun
 		Return
 	}
 
-	if ($All.IsPresent) {Write-Host}
-	Write-Host "$line2"
-	Write-Host "===                  Office vNext Status                 ==="
-	Write-Host "$line2"
-	Write-Host
-	Write-Host "========== Mode per ProductReleaseId =========="
+	& $isAll
+	CONOUT "$line2"
+	CONOUT "===                  Office vNext Status                 ==="
+	CONOUT "$line2"
+	CONOUT "`n========== Mode per ProductReleaseId =========="
 	PrintModePerPridFromRegistry
-	Write-Host
-	Write-Host "========== Shared Computer Licensing =========="
+	CONOUT "`n========== Shared Computer Licensing =========="
 	PrintSharedComputerLicensing
-	Write-Host
-	Write-Host "========== vNext licenses ==========="
+	CONOUT "`n========== vNext licenses ==========="
 	PrintLicensesInformation -Mode "NUL"
-	Write-Host
-	Write-Host "========== Device licenses =========="
+	CONOUT "`n========== Device licenses =========="
 	PrintLicensesInformation -Mode "Device"
-	Write-Host "$line3"
-	Write-Host
+	CONOUT "$line3"
+	CONOUT "`r"
 }
 #endregion
 
@@ -790,13 +912,13 @@ function PrintStateData {
 	}
 
 	[string[]]$pwszStateString = $Marshal::PtrToStringUni($pwszStateData) -replace ";", "`n    "
-	Write-Host "    $pwszStateString"
+	CONOUT ("    $pwszStateString")
 
 	$Marshal::FreeHGlobal($pwszStateData)
 	return $TRUE
 }
 
-function PrintLastActivationHRresult {
+function PrintLastActivationHResult {
 	$pdwLastHResult = 0
 	$cbSize = 0
 
@@ -809,12 +931,34 @@ function PrintLastActivationHRresult {
 		return $FALSE
 	}
 
-	Write-Host ("    LastActivationHResult=0x{0:x8}" -f $Marshal::ReadInt32($pdwLastHResult))
+	CONOUT ("    LastActivationHResult=0x{0:x8}" -f $Marshal::ReadInt32($pdwLastHResult))
 
 	$Marshal::FreeHGlobal($pdwLastHResult)
 	return $TRUE
 }
 
+function PrintLastActivationTime {
+	$pdwLastTime = 0
+	$cbSize = 0
+
+	if ($Win32::SLGetWindowsInformation(
+		"Security-SPP-LastWindowsActivationTime",
+		[ref]$null,
+		[ref]$cbSize,
+		[ref]$pdwLastTime
+	)) {
+		return $FALSE
+	}
+
+	$actTime = $Marshal::ReadInt64($pdwLastTime)
+	if ($actTime -ne 0) {
+		CONOUT ("    LastActivationTime={0}" -f [DateTime]::FromFileTimeUtc($actTime).ToString("yyyy/MM/dd:HH:mm:ss"))
+	}
+
+	$Marshal::FreeHGlobal($pdwLastTime)
+	return $TRUE
+}
+
 function PrintIsWindowsGenuine {
 	$dwGenuine = 0
 	$ppwszGenuineStates = @(
@@ -830,9 +974,9 @@ function PrintIsWindowsGenuine {
 	}
 
 	if ($dwGenuine -lt 5) {
-		Write-Host ("    IsWindowsGenuine={0}" -f $ppwszGenuineStates[$dwGenuine])
+		CONOUT ("    IsWindowsGenuine={0}" -f $ppwszGenuineStates[$dwGenuine])
 	} else {
-		Write-Host ("    IsWindowsGenuine={0}" -f $dwGenuine)
+		CONOUT ("    IsWindowsGenuine={0}" -f $dwGenuine)
 	}
 
 	return $TRUE
@@ -856,7 +1000,7 @@ function PrintDigitalLicenseStatus {
 	[bool]$bDigitalLicense = $FALSE
 
 	$bDigitalLicense = (($dwReturnCode -ge 0) -and ($dwReturnCode -ne 1))
-	Write-Host ("    IsDigitalLicense={0}" -f (BoolToWStr $bDigitalLicense))
+	CONOUT ("    IsDigitalLicense={0}" -f (BoolToWStr $bDigitalLicense))
 
 	return $TRUE
 }
@@ -874,7 +1018,7 @@ function PrintSubscriptionStatus {
 		return $FALSE
 	}
 
-	Write-Host ("    SubscriptionSupportedEdition={0}" -f (BoolToWStr $dwSupported))
+	CONOUT ("    SubscriptionSupportedEdition={0}" -f (BoolToWStr $dwSupported))
 
 	$pStatus = $Marshal::AllocHGlobal($Marshal::SizeOf([Type]$SubStatus))
 	if ($Win32::ClipGetSubscriptionStatus([ref]$pStatus)) {
@@ -885,25 +1029,26 @@ function PrintSubscriptionStatus {
 	$sStatus = $Marshal::PtrToStructure($pStatus, [Type]$SubStatus)
 	$Marshal::FreeHGlobal($pStatus)
 
-	Write-Host ("    SubscriptionEnabled={0}" -f (BoolToWStr $sStatus.dwEnabled))
+	CONOUT ("    SubscriptionEnabled={0}" -f (BoolToWStr $sStatus.dwEnabled))
 
 	if ($sStatus.dwEnabled -eq 0) {
 		return $TRUE
 	}
 
-	Write-Host ("    SubscriptionSku={0}" -f $sStatus.dwSku)
-	Write-Host ("    SubscriptionState={0}" -f $sStatus.dwState)
+	CONOUT ("    SubscriptionSku={0}" -f $sStatus.dwSku)
+	CONOUT ("    SubscriptionState={0}" -f $sStatus.dwState)
 
 	return $TRUE
 }
 
 function ClicRun
 {
-	if ($All.IsPresent) {Write-Host}
-	Write-Host "Client Licensing Check information:"
+	& $isAll
+	CONOUT "Client Licensing Check information:"
 
 	$null = PrintStateData
-	$null = PrintLastActivationHRresult
+	$null = PrintLastActivationHResult
+	$null = PrintLastActivationTime
 	$null = PrintIsWindowsGenuine
 
 	if ($DllDigital) {
@@ -914,20 +1059,16 @@ function ClicRun
 		$null = PrintSubscriptionStatus
 	}
 
-	Write-Host "$line3"
-	if (!$All.IsPresent) {Write-Host}
+	CONOUT "$line3"
+	& $noAll
 }
 #endregion
 
 $Host.UI.RawUI.WindowTitle = "Check Activation Status"
-
+UnQuickEdit
 if ($All.IsPresent) {
-	$B=$Host.UI.RawUI.BufferSize;$B.Height=3000;$Host.UI.RawUI.BufferSize=$B;clear;
-}
-
-$SysPath = "$env:SystemRoot\System32"
-if (Test-Path "$env:SystemRoot\Sysnative\reg.exe") {
-	$SysPath = "$env:SystemRoot\Sysnative"
+	$B=$Host.UI.RawUI.BufferSize;$B.Height=3000;$Host.UI.RawUI.BufferSize=$B;
+	if (!$Pass.IsPresent) {clear;}
 }
 
 $wslp = "SoftwareLicensingProduct"
@@ -941,46 +1082,43 @@ $cSub = ($winbuild -GE 19041) -And (Select-String -Path "$SysPath\wbem\sppwmi.mo
 $DllDigital = ($winbuild -GE 14393) -And (Test-Path "$SysPath\EditionUpgradeManagerObj.dll")
 $DllSubscription = ($winbuild -GE 14393) -And (Test-Path "$SysPath\Clipc.dll")
 $VLActTypes = @("All", "AD", "KMS", "Token")
-$SLKeyPath = "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SL"
-$NSKeyPath = "Registry::HKEY_USERS\S-1-5-20\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SL"
+$SLKeyPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SL"
+$NSKeyPath = "HKEY_USERS\S-1-5-20\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SL"
 
-'cW1nd0ws', 'c0ff1ce15', 'c0ff1ce14', 'ospp14', 'ospp15' | foreach {set $_ $null}
+'cW1nd0ws', 'c0ff1ce15', 'c0ff1ce14', 'ospp14', 'ospp15' | foreach {set $_ $false}
 
-$OsppHook = 1
-try {gsv osppsvc -EA 1 | Out-Null} catch {$OsppHook = 0}
+$offsvc = "osppsvc"
+if ($NT7 -Or -Not $NT6) {$winsvc = "sppsvc"} else {$winsvc = "slsvc"}
 
-if ($NT7 -Or -Not $NT6) {
-	try {sasv sppsvc -EA 1} catch {}
+try {gsv $winsvc -EA 1 | Out-Null; $WsppHook = 1} catch {$WsppHook = 0}
+try {gsv $offsvc -EA 1 | Out-Null; $OsppHook = 1} catch {$OsppHook = 0}
+
+if ($WsppHook -NE 0) {
+	try {sasv $winsvc -EA 1} catch {}
+	$cW1nd0ws  = DetectID $wslp $winApp
+	$c0ff1ce15 = DetectID $wslp $o15App
+	$c0ff1ce14 = DetectID $wslp $o14App
 }
-else
-{
-	try {sasv slsvc -EA 1} catch {}
-}
-
-DetectID $wslp $winApp ([ref]$cW1nd0ws)
-DetectID $wslp $o15App ([ref]$c0ff1ce15)
-DetectID $wslp $o14App ([ref]$c0ff1ce14)
 
 if ($OsppHook -NE 0) {
-	try {sasv osppsvc -EA 1} catch {}
-	DetectID $oslp $o15App ([ref]$ospp15)
-	DetectID $oslp $o14App ([ref]$ospp14)
+	try {sasv $offsvc -EA 1} catch {}
+	$ospp15 = DetectID $oslp $o15App
+	$ospp14 = DetectID $oslp $o14App
 }
 
-if ($null -NE $cW1nd0ws)
+if ($cW1nd0ws)
 {
 	echoWindows
 	GetID $wslp $winApp | foreach -EA 1 {
 	GetResult $wslp $wsls $_
-	Write-Host "$line3"
-	if (!$All.IsPresent) {Write-Host}
+	CONOUT "$line3"
+	& $noAll
 	}
 }
 elseif ($NT6)
 {
 	echoWindows
-	Write-Host
-	Write-Host "Error: product key not found."
+	CONOUT "`nError: product key not found."
 }
 
 if ($winbuild -GE 9200) {
@@ -994,39 +1132,43 @@ if ($c0ff1ce15 -Or $ospp15) {
 
 $doMSG = 1
 
-if ($null -NE $c0ff1ce15) {
+if ($c0ff1ce15)
+{
 	echoOffice
 	GetID $wslp $o15App | foreach -EA 1 {
 	GetResult $wslp $wsls $_
-	Write-Host "$line3"
-	if (!$All.IsPresent) {Write-Host}
+	CONOUT "$line3"
+	& $noAll
 	}
 }
 
-if ($null -NE $c0ff1ce14) {
+if ($c0ff1ce14)
+{
 	echoOffice
 	GetID $wslp $o14App | foreach -EA 1 {
 	GetResult $wslp $wsls $_
-	Write-Host "$line3"
-	if (!$All.IsPresent) {Write-Host}
+	CONOUT "$line3"
+	& $noAll
 	}
 }
 
-if ($null -NE $ospp15) {
+if ($ospp15)
+{
 	echoOffice
 	GetID $oslp $o15App | foreach -EA 1 {
 	GetResult $oslp $osls $_
-	Write-Host "$line3"
-	if (!$All.IsPresent) {Write-Host}
+	CONOUT "$line3"
+	& $noAll
 	}
 }
 
-if ($null -NE $ospp14) {
+if ($ospp14)
+{
 	echoOffice
 	GetID $oslp $o14App | foreach -EA 1 {
 	GetResult $oslp $osls $_
-	Write-Host "$line3"
-	if (!$All.IsPresent) {Write-Host}
+	CONOUT "$line3"
+	& $noAll
 	}
 }