@ -1,4 +1,4 @@
@ set masver = 3.0
@ set masver = 3.1
@ echo off
@ echo off
@ -171,12 +171,27 @@ call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%trouble
goto dk_done
goto dk_done
)
)
if %winbuild% LSS 9200 (
if %winbuild% LSS 6001 (
%eline%
%nc eline%
echo Unsupported OS version detected [%winbuild% ].
echo Unsupported OS version detected [%winbuild% ].
echo Ohook Activation is supported only on Windows 8/10/11 and their server equivalents.
echo MAS only supports Windows Vista/7/8/8.1/10/11 and their Server equivalents.
if %winbuild% EQU 6000 (
echo :
echo Windows Vista RTM is not supported because Powershell cannot be installed.
echo Upgrade to Windows Vista SP1 or SP2.
)
goto dk_done
)
if not exist %ps% (
%nceline%
echo PowerShell is not installed in your system.
if %winbuild% LSS 7600 (
echo Install PowerShell using the following URL.
echo :
echo :
call : dk_color %Blue% " Use Online KMS activation option instead. "
echo https://www.catalog.update.microsoft.com/Search.aspx?q=KB968930
if %_unattended% == 0 start https://www.catalog.update.microsoft.com/Search.aspx?q=KB968930
)
goto dk_done
goto dk_done
)
)
@ -398,8 +413,8 @@ goto :oh_menu
cls
cls
if not defined terminal (
if not defined terminal (
mode 13 0, 32
mode 14 0, 32
if exist " %SysPath% \spp\store_test\ " mode 13 4, 32
if exist " %SysPath% \spp\store_test\ " mode 140 , 32
%psc% " &{$W=$Host.UI.RawUI.WindowSize;$B=$Host.UI.RawUI.BufferSize;$W.Height=32;$B.Height=300;$Host.UI.RawUI.WindowSize=$W;$Host.UI.RawUI.BufferSize=$B;} " %nul%
%psc% " &{$W=$Host.UI.RawUI.WindowSize;$B=$Host.UI.RawUI.BufferSize;$W.Height=32;$B.Height=300;$Host.UI.RawUI.WindowSize=$W;$Host.UI.RawUI.BufferSize=$B;} " %nul%
)
)
title Ohook Activation %masver%
title Ohook Activation %masver%
@ -408,9 +423,9 @@ echo:
echo Initializing...
echo Initializing...
call : dk_chkmal
call : dk_chkmal
if not exist %SysPath% \sppsvc.exe (
if not exist %SysPath% \%_slexe% (
%eline%
%eline%
echo [%SysPath% \sppsvc.exe ] file is missing, aborting...
echo [%SysPath% \%_slexe% ] file is missing, aborting...
echo :
echo :
call : dk_color %Blue% " Go back to Main Menu, select Troubleshoot and run DISM Restore and SFC Scan options. "
call : dk_color %Blue% " Go back to Main Menu, select Troubleshoot and run DISM Restore and SFC Scan options. "
call : dk_color %Blue% " After that, restart system and try activation again. "
call : dk_color %Blue% " After that, restart system and try activation again. "
@ -442,7 +457,7 @@ call :dk_showosinfo
echo Initiating Diagnostic Tests...
echo Initiating Diagnostic Tests...
set " _serv=sppsvc Winmgmt "
set " _serv= %_slser% Winmgmt"
: : Software Protection
: : Software Protection
: : Windows Management Instrumentation
: : Windows Management Instrumentation
@ -451,16 +466,15 @@ set notwinact=1
set ohookact = 1
set ohookact = 1
call : dk_errorcheck
call : dk_errorcheck
call : oh_setspp
: : Check unsupported office versions
: : Check unsupported office versions
set o14msi =
set o14c2r =
set o14c2r =
set o16uwp =
set o16uwp =
set _68 = HKLM\SOFTWARE\Microsoft\Office
set _68 = HKLM\SOFTWARE\Microsoft\Office
set _86 = HKLM\SOFTWARE\Wow6432Node\Microsoft\Office
set _86 = HKLM\SOFTWARE\Wow6432Node\Microsoft\Office
for /f " skip=2 tokens=2* " %% a in ( '"reg query %_86% \14.0\Common\InstallRoot /v Path" %nul6% ' ) do if exist " %% b\EntityPicker.dll " ( set o14msi = Office 2010 MSI )
for /f " skip=2 tokens=2* " %% a in ( '"reg query %_68% \14.0\Common\InstallRoot /v Path" %nul6% ' ) do if exist " %% b\EntityPicker.dll " ( set o14msi = Office 2010 MSI )
%nul% reg query %_68% \14.0\CVH /f Click2run /k && set o14c2r = Office 2010 C2R
%nul% reg query %_68% \14.0\CVH /f Click2run /k && set o14c2r = Office 2010 C2R
%nul% reg query %_86% \14.0\CVH /f Click2run /k && set o14c2r = Office 2010 C2R
%nul% reg query %_86% \14.0\CVH /f Click2run /k && set o14c2r = Office 2010 C2R
@ -468,10 +482,10 @@ if %winbuild% GEQ 10240 (
for /f " delims= " %% a in ( ' %psc% "(Get-AppxPackage -name 'Microsoft.Office.Desktop' | Select-Object -ExpandProperty InstallLocation)" %nul6% ' ) do ( if exist " %% a\Integration\Integrator.exe " set o16uwp = Office UWP )
for /f " delims= " %% a in ( ' %psc% "(Get-AppxPackage -name 'Microsoft.Office.Desktop' | Select-Object -ExpandProperty InstallLocation)" %nul6% ' ) do ( if exist " %% a\Integration\Integrator.exe " set o16uwp = Office UWP )
)
)
if not " %o14msi% %o14 c2r% %o16uwp% " == " " (
if not " %o14c2r% %o16uwp% " == " " (
echo :
echo :
call : dk_color %Red% " Checking Unsupported Office Install [ %o14msi% %o14 c2r% %o16uwp% ] "
call : dk_color %Red% " Checking Unsupported Office Install [ %o14c2r% %o16uwp% ] "
if not " %o14msi% %o1 6uwp% " == " " call : dk_color %Blue% " Use Online KMS option to activate it. "
if not " %o16uwp% " == " " call : dk_color %Blue% " Use TSforge option to activate it. "
)
)
if %winbuild% GEQ 10240 %psc% " Get-AppxPackage -name " Microsoft.MicrosoftOfficeHub" " | find /i " Office " %nul1% && (
if %winbuild% GEQ 10240 %psc% " Get-AppxPackage -name " Microsoft.MicrosoftOfficeHub" " | find /i " Office " %nul1% && (
@ -502,10 +516,10 @@ set o15c2r=
set error = 1
set error = 1
)
)
if " %o16c2r% %o15c2r% %o16msi% %o15msi% "== " " (
if " %o16c2r% %o15c2r% %o16msi% %o15msi% %o14msi% "== " " (
set error = 1
set error = 1
echo :
echo :
if not " %o14msi% %o14 c2r% %o16uwp% " == " " (
if not " %o14c2r% %o16uwp% " == " " (
call : dk_color %Red% " Checking Supported Office Install [Not Found] "
call : dk_color %Red% " Checking Supported Office Install [Not Found] "
) else (
) else (
call : dk_color %Red% " Checking Installed Office [Not Found] "
call : dk_color %Red% " Checking Installed Office [Not Found] "
@ -524,8 +538,8 @@ goto dk_done
)
)
set multioffice =
set multioffice =
if not " %o16c2r% %o15c2r% %o16msi% %o15msi% "== " 1 " set multioffice = 1
if not " %o16c2r% %o15c2r% %o16msi% %o15msi% %o14msi% "== " 1 " set multioffice = 1
if not " %o14msi% %o14 c2r% %o16uwp% " == " " set multioffice = 1
if not " %o14c2r% %o16uwp% " == " " set multioffice = 1
if defined multioffice (
if defined multioffice (
call : dk_color %Gray% " Checking Multiple Office Install [Found, its recommended to install only one version] "
call : dk_color %Gray% " Checking Multiple Office Install [Found, its recommended to install only one version] "
@ -569,12 +583,8 @@ set "_oIntegrator=%_oRoot%\integration\integrator.exe"
if /i " %_oArch% " == " x64 " ( set " _hookPath= %_oRoot% \vfs\System " & set " _hook=sppc64.dll " )
if /i " %_oArch% " == " x64 " ( set " _hookPath= %_oRoot% \vfs\System " & set " _hook=sppc64.dll " )
if /i " %_oArch% " == " x86 " ( set " _hookPath= %_oRoot% \vfs\SystemX86 " & set " _hook=sppc32.dll " )
if /i " %_oArch% " == " x86 " ( set " _hookPath= %_oRoot% \vfs\SystemX86 " & set " _hook=sppc32.dll " )
if not " %osarch% " == " x86 " (
if /i " %_oArch% " == " x64 " set " _sppcPath= %SystemRoot% \System32\sppc.dll "
call : oh_ppcpath
if /i " %_oArch% " == " x86 " set " _sppcPath= %SystemRoot% \SysWOW64\sppc.dll "
) else (
set " _sppcPath= %SystemRoot% \System32\sppc.dll "
)
echo :
echo :
echo Activating Office... [C2R ^| %_version% ^| %_oArch% ]
echo Activating Office... [C2R ^| %_version% ^| %_oArch% ]
@ -585,9 +595,20 @@ set error=1
goto : starto16c2r
goto : starto16c2r
)
)
if defined noOsppc (
call : dk_color %Red% " Checking OSPPC.DLL [Not found. Aborting activation...] "
call : dk_color %Blue% " %_fixmsg% "
set error = 1
goto : starto16c2r
)
call : oh_fixprids
call : oh_fixprids
call : oh_process
call : oh_process
if defined isOspp (
call : oh_hookinstall_ospp
) else (
call : oh_hookinstall
call : oh_hookinstall
)
: :========================================================================================================================================
: :========================================================================================================================================
@ -619,12 +640,8 @@ set "_oIntegrator=%_oRoot%\integration\integrator.exe"
if /i " %_oArch% " == " x64 " ( set " _hookPath= %_oRoot% \vfs\System " & set " _hook=sppc64.dll " )
if /i " %_oArch% " == " x64 " ( set " _hookPath= %_oRoot% \vfs\System " & set " _hook=sppc64.dll " )
if /i " %_oArch% " == " x86 " ( set " _hookPath= %_oRoot% \vfs\SystemX86 " & set " _hook=sppc32.dll " )
if /i " %_oArch% " == " x86 " ( set " _hookPath= %_oRoot% \vfs\SystemX86 " & set " _hook=sppc32.dll " )
if not " %osarch% " == " x86 " (
if /i " %_oArch% " == " x64 " set " _sppcPath= %SystemRoot% \System32\sppc.dll "
call : oh_ppcpath
if /i " %_oArch% " == " x86 " set " _sppcPath= %SystemRoot% \SysWOW64\sppc.dll "
) else (
set " _sppcPath= %SystemRoot% \System32\sppc.dll "
)
echo :
echo :
echo Activating Office... [C2R ^| %_version% %_AudienceData% ^| %_oArch% ]
echo Activating Office... [C2R ^| %_version% %_AudienceData% ^| %_oArch% ]
@ -635,9 +652,20 @@ set error=1
goto : startmsi
goto : startmsi
)
)
if defined noOsppc (
call : dk_color %Red% " Checking OSPPC.DLL [Not found. Aborting activation...] "
call : dk_color %Blue% " %_fixmsg% "
set error = 1
goto : startmsi
)
call : oh_fixprids
call : oh_fixprids
call : oh_process
call : oh_process
if defined isOspp (
call : oh_hookinstall_ospp
) else (
call : oh_hookinstall
call : oh_hookinstall
)
: :========================================================================================================================================
: :========================================================================================================================================
@ -674,6 +702,9 @@ echo Adding a Registry to Prevent Banner [Successful]
: startmsi
: startmsi
if defined o14msi call : oh_setspp 14
if defined o14msi call : oh_processmsi 14 %o14msi_reg%
call : oh_setspp
if defined o15msi call : oh_processmsi 15 %o15msi_reg%
if defined o15msi call : oh_processmsi 15 %o15msi_reg%
if defined o16msi call : oh_processmsi 16 %o16msi_reg%
if defined o16msi call : oh_processmsi 16 %o16msi_reg%
@ -705,7 +736,7 @@ goto :dk_done
: oh_uninstall
: oh_uninstall
cls
cls
if not defined terminal mode 99 , 32
if not defined terminal mode 145 , 32
title Uninstall Ohook Activation %masver%
title Uninstall Ohook Activation %masver%
set _present =
set _present =
@ -721,6 +752,7 @@ if defined o16c2r_reg (for /f "skip=2 tokens=2*" %%a in ('"reg query %o16c2r_reg
if defined o15c2r_reg ( for /f " skip=2 tokens=2* " %% a in ( '"reg query %o15c2r_reg% /v InstallPath" %nul6% ' ) do ( set " _15CHook= %% b\root\vfs " ) )
if defined o15c2r_reg ( for /f " skip=2 tokens=2* " %% a in ( '"reg query %o15c2r_reg% /v InstallPath" %nul6% ' ) do ( set " _15CHook= %% b\root\vfs " ) )
if defined o16msi_reg ( for /f " skip=2 tokens=2* " %% a in ( '"reg query %o16msi_reg% \Common\InstallRoot /v Path" %nul6% ' ) do ( set " _16MHook= %% b " ) )
if defined o16msi_reg ( for /f " skip=2 tokens=2* " %% a in ( '"reg query %o16msi_reg% \Common\InstallRoot /v Path" %nul6% ' ) do ( set " _16MHook= %% b " ) )
if defined o15msi_reg ( for /f " skip=2 tokens=2* " %% a in ( '"reg query %o15msi_reg% \Common\InstallRoot /v Path" %nul6% ' ) do ( set " _15MHook= %% b " ) )
if defined o15msi_reg ( for /f " skip=2 tokens=2* " %% a in ( '"reg query %o15msi_reg% \Common\InstallRoot /v Path" %nul6% ' ) do ( set " _15MHook= %% b " ) )
if defined o14msi_reg ( for /f " skip=2 tokens=2* " %% a in ( '"reg query %o14msi_reg% \Common\InstallRoot /v Path" %nul6% ' ) do ( set " _14MHook= %% b " ) )
if defined _16CHook ( if exist " %_16CHook% \System\sppc*dll " ( set _present = 1& del /s /f /q " %_16CHook% \System\sppc*dll " & if exist " %_16CHook% \System\sppc*dll " set _unerror = 1) )
if defined _16CHook ( if exist " %_16CHook% \System\sppc*dll " ( set _present = 1& del /s /f /q " %_16CHook% \System\sppc*dll " & if exist " %_16CHook% \System\sppc*dll " set _unerror = 1) )
if defined _16CHook ( if exist " %_16CHook% \SystemX86\sppc*dll " ( set _present = 1& del /s /f /q " %_16CHook% \SystemX86\sppc*dll " & if exist " %_16CHook% \SystemX86\sppc*dll " set _unerror = 1) )
if defined _16CHook ( if exist " %_16CHook% \SystemX86\sppc*dll " ( set _present = 1& del /s /f /q " %_16CHook% \SystemX86\sppc*dll " & if exist " %_16CHook% \SystemX86\sppc*dll " set _unerror = 1) )
@ -728,8 +760,9 @@ if defined _15CHook (if exist "%_15CHook%\System\sppc*dll" (set _present=1& d
if defined _15CHook ( if exist " %_15CHook% \SystemX86\sppc*dll " ( set _present = 1& del /s /f /q " %_15CHook% \SystemX86\sppc*dll " & if exist " %_15CHook% \SystemX86\sppc*dll " set _unerror = 1) )
if defined _15CHook ( if exist " %_15CHook% \SystemX86\sppc*dll " ( set _present = 1& del /s /f /q " %_15CHook% \SystemX86\sppc*dll " & if exist " %_15CHook% \SystemX86\sppc*dll " set _unerror = 1) )
if defined _16MHook ( if exist " %_16MHook% sppc*dll " ( set _present = 1& del /s /f /q " %_16MHook% sppc*dll " & if exist " %_16MHook% sppc*dll " set _unerror = 1) )
if defined _16MHook ( if exist " %_16MHook% sppc*dll " ( set _present = 1& del /s /f /q " %_16MHook% sppc*dll " & if exist " %_16MHook% sppc*dll " set _unerror = 1) )
if defined _15MHook ( if exist " %_15MHook% sppc*dll " ( set _present = 1& del /s /f /q " %_15MHook% sppc*dll " & if exist " %_15MHook% sppc*dll " set _unerror = 1) )
if defined _15MHook ( if exist " %_15MHook% sppc*dll " ( set _present = 1& del /s /f /q " %_15MHook% sppc*dll " & if exist " %_15MHook% sppc*dll " set _unerror = 1) )
if defined _14MHook ( if exist " %_14MHook% sppc*dll " ( set _present = 1& del /s /f /q " %_14MHook% sppc*dll " & if exist " %_14MHook% sppc*dll " set _unerror = 1) )
for %% # in ( 15 16) do (
for %% # in ( 14 1 5 16) do (
for %% A in ( " %ProgramFiles% " " %ProgramW6432% " " %ProgramFiles(x86)% " ) do (
for %% A in ( " %ProgramFiles% " " %ProgramW6432% " " %ProgramFiles(x86)% " ) do (
if exist " %% ~A\Microsoft Office\Office %% #\sppc*dll " ( set _present = 1& del /s /f /q " %% ~A\Microsoft Office\Office %% #\sppc*dll " & if exist " %% ~A\Microsoft Office\Office %% #\sppc*dll " set _unerror = 1)
if exist " %% ~A\Microsoft Office\Office %% #\sppc*dll " ( set _present = 1& del /s /f /q " %% ~A\Microsoft Office\Office %% #\sppc*dll " & if exist " %% ~A\Microsoft Office\Office %% #\sppc*dll " set _unerror = 1)
)
)
@ -743,6 +776,31 @@ if exist "%%~A\Microsoft %%~G\root\vfs\%%#\sppc*dll" (set _present=1& del /s /f
)
)
)
)
: :==================================
for %% # in ( OSPPC.DLL sppcs.dll) do (
for %% A in ( " %CommonProgramFiles% " " %CommonProgramW6432% " " %CommonProgramFiles(x86)% " ) do (
for %% G in ( " %% ~A\Microsoft Shared\OfficeSoftwareProtectionPlatform\ %% # " ) do (
set size = 0
set size = %% ~zG
if !size! GEQ 1 if !size! LSS 100000 (
set _present = 1
del /f /q " %% ~G "
if exist " %% ~G " ( move /y " %% ~G " " !_ttemp! \needsToBeDeleted %random% " %nul% )
if exist " %% ~G " ( set _unerror = 1) else ( echo Deleted file - %% ~G)
)
if /i sppcs.dll== %% # if !size! GEQ 100000 (
move /y " %% ~G " " %% ~A\Microsoft Shared\OfficeSoftwareProtectionPlatform\OSPPC.DLL " %nul%
if exist " %% ~G " ( move /y " %% ~A\Microsoft Shared\OfficeSoftwareProtectionPlatform\OSPPC.DLL " " !_ttemp! \needsToBeDeleted %random% " %nul% )
move /y " %% ~G " " %% ~A\Microsoft Shared\OfficeSoftwareProtectionPlatform\OSPPC.DLL " %nul%
if exist " %% ~G " ( set _unerror = 1& echo Failed to rename sppcs.dll back to " %% ~A\Microsoft Shared\OfficeSoftwareProtectionPlatform\OSPPC.DLL " ) else ( echo Renamed sppcs.dll back to " %% ~A\Microsoft Shared\OfficeSoftwareProtectionPlatform\OSPPC.DLL " )
)
)
)
)
: :==================================
reg query HKCU\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency %nul% && (
reg query HKCU\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency %nul% && (
echo :
echo :
echo Deleting - Registry keys for skipping license check
echo Deleting - Registry keys for skipping license check
@ -772,6 +830,8 @@ reg unload HKU\%%# %nul%
)
)
)
)
: :==================================
set " kmskey=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\0ff1ce15-a989-479d-af46-f275c6370663 "
set " kmskey=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\0ff1ce15-a989-479d-af46-f275c6370663 "
reg query " %kmskey% " %nul% && (
reg query " %kmskey% " %nul% && (
echo :
echo :
@ -818,6 +878,7 @@ set _oLPath=
set _hookPath =
set _hookPath =
set _hook =
set _hook =
set _sppcPath =
set _sppcPath =
set _osppPath =
set _actid =
set _actid =
set _prod =
set _prod =
set _lic =
set _lic =
@ -836,6 +897,7 @@ set o16c2r=
set o15c2r =
set o15c2r =
set o16msi =
set o16msi =
set o15msi =
set o15msi =
set o14msi =
set _68 = HKLM\SOFTWARE\Microsoft\Office
set _68 = HKLM\SOFTWARE\Microsoft\Office
set _86 = HKLM\SOFTWARE\Wow6432Node\Microsoft\Office
set _86 = HKLM\SOFTWARE\Wow6432Node\Microsoft\Office
@ -849,6 +911,52 @@ for /f "skip=2 tokens=2*" %%a in ('"reg query %_86%\16.0\Common\InstallRoot /v P
for /f " skip=2 tokens=2* " %% a in ( '"reg query %_68% \16.0\Common\InstallRoot /v Path" %nul6% ' ) do if exist " %% b\EntityPicker.dll " ( set o16msi = 1& set o16msi_reg = %_68% \16.0)
for /f " skip=2 tokens=2* " %% a in ( '"reg query %_68% \16.0\Common\InstallRoot /v Path" %nul6% ' ) do if exist " %% b\EntityPicker.dll " ( set o16msi = 1& set o16msi_reg = %_68% \16.0)
for /f " skip=2 tokens=2* " %% a in ( '"reg query %_86% \15.0\Common\InstallRoot /v Path" %nul6% ' ) do if exist " %% b\EntityPicker.dll " ( set o15msi = 1& set o15msi_reg = %_86% \15.0)
for /f " skip=2 tokens=2* " %% a in ( '"reg query %_86% \15.0\Common\InstallRoot /v Path" %nul6% ' ) do if exist " %% b\EntityPicker.dll " ( set o15msi = 1& set o15msi_reg = %_86% \15.0)
for /f " skip=2 tokens=2* " %% a in ( '"reg query %_68% \15.0\Common\InstallRoot /v Path" %nul6% ' ) do if exist " %% b\EntityPicker.dll " ( set o15msi = 1& set o15msi_reg = %_68% \15.0)
for /f " skip=2 tokens=2* " %% a in ( '"reg query %_68% \15.0\Common\InstallRoot /v Path" %nul6% ' ) do if exist " %% b\EntityPicker.dll " ( set o15msi = 1& set o15msi_reg = %_68% \15.0)
for /f " skip=2 tokens=2* " %% a in ( '"reg query %_86% \14.0\Common\InstallRoot /v Path" %nul6% ' ) do if exist " %% b\EntityPicker.dll " ( set o14msi = 1& set o14msi_reg = %_86% \14.0)
for /f " skip=2 tokens=2* " %% a in ( '"reg query %_68% \14.0\Common\InstallRoot /v Path" %nul6% ' ) do if exist " %% b\EntityPicker.dll " ( set o14msi = 1& set o14msi_reg = %_68% \14.0)
exit /b
: :========================================================================================================================================
: oh_ppcpath
if not defined isOspp (
if not " %osarch% " == " x86 " (
if /i " %_oArch% " == " x64 " set " _sppcPath= %SystemRoot% \System32\sppc.dll "
if /i " %_oArch% " == " x86 " set " _sppcPath= %SystemRoot% \SysWOW64\sppc.dll "
) else (
set " _sppcPath= %SystemRoot% \System32\sppc.dll "
)
)
set noOsppc =
set _hook68 =
set _hook86 =
set _osppPath68 =
set _osppPath86 =
if defined isOspp (
if not " %osarch% " == " x86 " (
if /i " %_oArch% " == " x64 " (
for /f " skip=2 tokens=2* " %% a in ( '"reg query HKLM\SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform /v Path" %nul6% ' ) do ( set " _osppPath68= %% b " )
if not exist " !_osppPath68! OSPPC.DLL " set noOsppc = 1
)
if /i " %_oArch% " == " x86 " (
for /f " skip=2 tokens=2* " %% a in ( '"reg query HKLM\SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform /v Path" %nul6% ' ) do ( set " _osppPath68= %% b " )
for /f " skip=2 tokens=2* " %% a in ( '"reg query HKLM\SOFTWARE\Wow6432Node\Microsoft\OfficeSoftwareProtectionPlatform /v Path" %nul6% ' ) do ( set " _osppPath86= %% b " )
if not exist " !_osppPath68! OSPPC.DLL " set noOsppc = 1
if not exist " !_osppPath86! OSPPC.DLL " set noOsppc = 1
)
) else (
for /f " skip=2 tokens=2* " %% a in ( '"reg query HKLM\SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform /v Path" %nul6% ' ) do ( set " _osppPath86= %% b " )
if not exist " !_osppPath86! OSPPC.DLL " set noOsppc = 1
)
if " !_osppPath68:~-1! " == " \ " set " _osppPath68=!_osppPath68:~0,-1! "
if " !_osppPath86:~-1! " == " \ " set " _osppPath86=!_osppPath86:~0,-1! "
)
if defined _osppPath68 set _hook68 = sppc64.dll
if defined _osppPath86 set _hook86 = sppc32.dll
exit /b
exit /b
@ -944,15 +1052,24 @@ set hasherror=
if %_hook% == sppc32.dll set offset = 2564
if %_hook% == sppc32.dll set offset = 2564
if %_hook% == sppc64.dll set offset = 3076
if %_hook% == sppc64.dll set offset = 3076
del /s /q " %_hookPath% \sppcs.dll " %nul%
: :======================================
del /s /q " %_hookPath% \sppc.dll " %nul%
: : Remove previous Install
for %% # in ( sppcs.dll sppc.dll) do (
del /f /q " %_hookPath% \ %% # " %nul%
if exist " %_hookPath% \ %% # " ( move /y " %_hookPath% \ %% # " " !_ttemp! \needsToBeDeleted %random% " %nul% )
if exist " %_hookPath% \ %% # " ( set " ierror=Remove Previous Ohook Install [ %% #] " )
)
if defined ierror goto : oh_hookinstall_error
if exist " %_hookPath% \sppcs.dll " set " ierror=Remove Previous Ohook Install "
: :======================================
if exist " %_hookPath% \sppc.dll " set " ierror=Remove Previous Ohook Install "
mklink " %_hookPath% \sppcs.dll " " %_sppcPath% " %nul%
mklink " %_hookPath% \sppcs.dll " " %_sppcPath% " %nul%
if not %errorlevel% == 0 (
if not exist " %_hookPath% \sppcs.dll " (
if not defined ierror set ierror = mklink
set ierror = mklink sppcs.dll
goto : oh_hookinstall_error
)
)
set exhook =
set exhook =
@ -967,17 +1084,122 @@ popd
call : oh_extractdll " %_hookPath% \sppc.dll " " %offset% "
call : oh_extractdll " %_hookPath% \sppc.dll " " %offset% "
)
)
)
)
if not exist " %_hookPath% \sppc.dll " ( if not defined ierror set ierror = Copy)
if not exist " %_hookPath% \sppc.dll " (
set ierror = Copy
goto : oh_hookinstall_error
)
echo :
echo :
if not defined ierror (
echo Symlinking System's sppc.dll [" %_hookPath% \sppcs.dll " ] [Successful]
echo Symlinking System's sppc.dll to [" %_hookPath% \sppcs.dll " ] [Successful]
if defined exhook (
if defined exhook (
echo Copying Custom %_hook% to [" %_hookPath% \sppc.dll " ] [Successful]
echo Copying Custom %_hook% to [" %_hookPath% \sppc.dll " ] [Successful]
) else (
) else (
echo Extracting Custom %_hook% to [" %_hookPath% \sppc.dll " ] [Successful]
echo Extracting Custom %_hook% to [" %_hookPath% \sppc.dll " ] [Successful]
)
)
goto : oh_hookinstall_error
: :========================================================================================================================================
: oh_hookinstall_ospp
set ierror =
set hasherror =
if defined _hook86 set offset86 = 2564
if defined _hook68 set offset68 = 3076
: :======================================
: : Remove previous Install
for %% # in ( OSPPC.DLL sppcs.dll) do (
for %% A in ( " %_osppPath68% \ %% # " " %_osppPath86% \ %% # " ) do (
set size = 0
set size = %% ~zA
if !size! GEQ 1 if !size! LSS 100000 (
del /f /q " %% ~A " %nul%
if exist " %% ~A " ( move /y " %% ~A " " !_ttemp! \needsToBeDeleted %random% " %nul% )
if exist " %% ~A " ( set " ierror=Remove Previous Ohook Install [ %% #] " )
)
)
)
if defined ierror goto : oh_hookinstall_error
for %% A in ( " %_osppPath68% " " %_osppPath86% " ) do (
if exist " %% ~A\sppcs.dll " ( move /y " %% ~A\sppcs.dll " " %% ~A\OSPPC.DLL " %nul% )
if exist " %% ~A\sppcs.dll " (
move /y " %% ~A\OSPPC.DLL " " !_ttemp! \needsToBeDeleted %random% " %nul%
move /y " %% ~A\sppcs.dll " " %% ~A\OSPPC.DLL " %nul%
)
if exist " %% ~A\sppcs.dll " ( set " ierror=Move sppcs.dll back to OSPPC.DLL " )
)
del /f /q " %_hookPath% \sppcs.dll " %nul%
if exist " %_hookPath% \sppcs.dll " ( move /y " %_hookPath% \sppcs.dll " " !_ttemp! \needsToBeDeleted %random% " %nul% )
if exist " %_hookPath% \sppcs.dll " ( set " ierror=Remove Previous Ohook mklink sppcs.dll " )
if defined ierror goto : oh_hookinstall_error
: :======================================
if defined _osppPath68 ( move /y " %_osppPath68% \OSPPC.DLL " " %_osppPath68% \sppcs.dll " %nul% & if not exist " %_osppPath68% \sppcs.dll " set ierror = 1)
if defined _osppPath86 ( move /y " %_osppPath86% \OSPPC.DLL " " %_osppPath86% \sppcs.dll " %nul% & if not exist " %_osppPath86% \sppcs.dll " set ierror = 1)
if defined ierror (
set " ierror=Rename OSPPC.DLL "
goto : oh_hookinstall_error
)
if defined _osppPath68 if defined _osppPath86 ( mklink " %_hookPath% \sppcs.dll " " %_osppPath86% \sppcs.dll " %nul% )
if defined _osppPath68 if not defined _osppPath86 ( mklink " %_hookPath% \sppcs.dll " " %_osppPath68% \sppcs.dll " %nul% )
if defined _osppPath86 if not defined _osppPath68 ( mklink " %_hookPath% \sppcs.dll " " %_osppPath86% \sppcs.dll " %nul% )
if not exist " %_hookPath% \sppcs.dll " (
set ierror = mklink sppcs.dll
goto : oh_hookinstall_error
)
set exhook =
if exist " !_work! \BIN\ %_hook68% " if exist " !_work! \BIN\ %_hook86% " set exhook = 1
if defined exhook (
pushd " !_work! \BIN\ "
if defined _osppPath68 ( copy /y /b " %_hook68% " " %_osppPath68% \OSPPC.DLL " %nul% )
if defined _osppPath86 ( copy /y /b " %_hook86% " " %_osppPath86% \OSPPC.DLL " %nul% )
popd
) else (
) else (
if defined _osppPath68 ( set _hook = %_hook68% & call : oh_extractdll " %_osppPath68% \OSPPC.DLL " " %offset68% " )
if defined _osppPath86 ( set _hook = %_hook86% & call : oh_extractdll " %_osppPath86% \OSPPC.DLL " " %offset86% " )
)
if defined _osppPath68 ( if not exist " %_osppPath68% \OSPPC.DLL " set ierror = 1)
if defined _osppPath86 ( if not exist " %_osppPath86% \OSPPC.DLL " set ierror = 1)
if defined ierror (
set ierror = Copy
goto : oh_hookinstall_error
)
echo :
if defined _osppPath68 ( echo Renaming OSPPC.DLL to sppcs.dll [" %_osppPath68% \sppcs.dll " ])
if defined _osppPath86 ( echo Renaming OSPPC.DLL to sppcs.dll [" %_osppPath86% \sppcs.dll " ])
if defined exhook (
if defined _osppPath68 ( echo Copying Custom %_hook68% to [" %_osppPath68% \OSPPC.DLL " ])
if defined _osppPath86 ( echo Copying Custom %_hook86% to [" %_osppPath86% \OSPPC.DLL " ])
) else (
if defined _osppPath68 ( echo Extracting Custom %_hook68% to [" %_osppPath68% \OSPPC.DLL " ])
if defined _osppPath86 ( echo Extracting Custom %_hook86% to [" %_osppPath86% \OSPPC.DLL " ])
)
echo Symlinking Renamed sppcs.dll [" %_hookPath% \sppcs.dll " ]
: :========================================================================================================================================
: oh_hookinstall_error
if defined ierror (
set error = 1
set error = 1
call : dk_color %Red% " Installing Ohook [Failed to %ierror% ] "
call : dk_color %Red% " Installing Ohook [Failed to %ierror% ] "
echo :
echo :
@ -996,9 +1218,9 @@ if not defined exhook if not defined ierror (
if defined hasherror (
if defined hasherror (
set error = 1
set error = 1
set ierror = 1
set ierror = 1
call : dk_color %Red% " Modifying Hash of Custom %_hook% [Failed]"
call : dk_color %Red% " Modifying Hash of Custom sppcs.dll [Failed] "
) else (
) else (
echo Modifying Hash of Custom %_hook% [Successful]
echo Modifying Hash of Custom sppcs.dll [Successful]
)
)
)
)
@ -1006,6 +1228,26 @@ exit /b
: :========================================================================================================================================
: :========================================================================================================================================
: oh_setspp
set isOspp =
if %winbuild% GEQ 9200 (
set spp = SoftwareLicensingProduct
set sps = SoftwareLicensingService
) else (
set isOspp = 1
set spp = OfficeSoftwareProtectionProduct
set sps = OfficeSoftwareProtectionService
)
if " %1 " == " 14 " (
set isOspp = 1
set spp = OfficeSoftwareProtectionProduct
set sps = OfficeSoftwareProtectionService
)
exit /b
: :========================================================================================================================================
: oh_process
: oh_process
for %% # in ( %_oIds% ) do (
for %% # in ( %_oIds% ) do (
@ -1025,10 +1267,11 @@ call :ohookdata getinfo !_prod!
if not " !key! " == " " (
if not " !key! " == " " (
echo " !allapps! " | find /i " !_actid! " %nul1% || call : oh_installlic
echo " !allapps! " | find /i " !_actid! " %nul1% || call : oh_installlic
if not %oVer% == 14 set generickey = 1
call : dk_inskey " [!key!] [!_prod!] [!_lic!] "
call : dk_inskey " [!key!] [!_prod!] [!_lic!] "
) else (
) else (
set error = 1
set error = 1
call : dk_color %Red% " Checking Product In Script [Office %oVer% .0 !_prod! not found in script] "
call : dk_color %Red% " Checking Product In Script [Office %oVer% .0 !_prod! key not found in script] "
call : dk_color %Blue% " Make sure you are using the latest version of MAS. "
call : dk_color %Blue% " Make sure you are using the latest version of MAS. "
set fixes = %fixes% %mas%
set fixes = %fixes% %mas%
call : dk_color %_Yellow% " %mas% "
call : dk_color %_Yellow% " %mas% "
@ -1055,7 +1298,11 @@ exit /b
: : Process Office MSI Version
: : Process Office MSI Version
call : oh_reset
call : oh_reset
if " %1 " == " 14 " (
call : dk_actids 59a52881-a989-479d-af46-f275c6370663
) else (
call : dk_actids 0ff1ce15-a989-479d-af46-f275c6370663
call : dk_actids 0ff1ce15-a989-479d-af46-f275c6370663
)
set oVer = %1
set oVer = %1
for /f " skip=2 tokens=2* " %% a in ( '"reg query %2 \Common\InstallRoot /v Path" %nul6% ' ) do ( set " _oRoot= %% b " )
for /f " skip=2 tokens=2* " %% a in ( '"reg query %2 \Common\InstallRoot /v Path" %nul6% ' ) do ( set " _oRoot= %% b " )
@ -1068,16 +1315,8 @@ if "%osarch%"=="x86" set _oArch=x86
if /i " %_oArch% " == " x64 " ( set " _hookPath= %_oRoot% " & set " _hook=sppc64.dll " )
if /i " %_oArch% " == " x64 " ( set " _hookPath= %_oRoot% " & set " _hook=sppc64.dll " )
if /i " %_oArch% " == " x86 " ( set " _hookPath= %_oRoot% " & set " _hook=sppc32.dll " )
if /i " %_oArch% " == " x86 " ( set " _hookPath= %_oRoot% " & set " _hook=sppc32.dll " )
if not " %osarch% " == " x86 " (
if /i " %_oArch% " == " x64 " set " _sppcPath= %SystemRoot% \System32\sppc.dll "
if /i " %_oArch% " == " x86 " set " _sppcPath= %SystemRoot% \SysWOW64\sppc.dll "
) else (
set " _sppcPath= %SystemRoot% \System32\sppc.dll "
)
set " _common= %CommonProgramFiles% "
call : oh_ppcpath
if defined PROCESSOR_ARCHITEW6432 set " _common= %CommonProgramW6432% "
set " _common2= %CommonProgramFiles(x86)% "
call : msiofficedata %2
call : msiofficedata %2
@ -1090,8 +1329,23 @@ call :dk_color %Red% "Checking Installed Products [Product IDs not f
exit /b
exit /b
)
)
if defined noOsppc (
call : dk_color %Red% " Checking OSPPC.DLL [Not found. Aborting activation...] "
call : dk_color %Blue% " %_fixmsg% "
set error = 1
exit /b
)
if %oVer% == 14 if defined SingleImage (
echo Checking Installed Products [SingleImage product found, Professional Retail key will be used for activation]
)
call : oh_process
call : oh_process
if defined isOspp (
call : oh_hookinstall_ospp
) else (
call : oh_hookinstall
call : oh_hookinstall
)
exit /b
exit /b
@ -1415,11 +1669,12 @@ set keyerror=%errorlevel%
cmd /c exit /b %keyerror%
cmd /c exit /b %keyerror%
if %keyerror% NEQ 0 set " keyerror=[0x %=ExitCode% ] "
if %keyerror% NEQ 0 set " keyerror=[0x %=ExitCode% ] "
if defined generickey ( set " keyecho=Installing Generic Product Key " ) else ( set " keyecho=Installing Product Key " )
if %keyerror% EQU 0 (
if %keyerror% EQU 0 (
if %sps% == SoftwareLicensingService call : dk_refresh
if %sps% == SoftwareLicensingService call : dk_refresh
echo Installing Generic Product Key %~1 [Successful]
echo %keyecho% %~1 [Successful]
) else (
) else (
call : dk_color %Red% " Installing Generic Product Key %~1 [Failed] %keyerror% "
call : dk_color %Red% " %keyecho% %~1 [Failed] %keyerror% "
if not defined error (
if not defined error (
if defined altapplist call : dk_color %Red% " Activation ID not found for this key. "
if defined altapplist call : dk_color %Red% " Activation ID not found for this key. "
call : dk_color %Blue% " %_fixmsg% "
call : dk_color %Blue% " %_fixmsg% "
@ -1428,6 +1683,7 @@ set showfix=1
set error = 1
set error = 1
)
)
set generickey =
exit /b
exit /b
: : Get all products Activation IDs
: : Get all products Activation IDs
@ -1523,7 +1779,7 @@ exit /b
: dk_product
: dk_product
set d1 = %ref% $meth = $TypeBuilder.DefinePInvokeMethod('BrandingFormatString', 'winbrand.dll', 'Public, Static', 1, [String], @([String]), 1, 3);
set d1 = %ref% $meth = $TypeBuilder.DefinePInvokeMethod('BrandingFormatString', 'winbrand.dll', 'Public, Static', 1, [String], @([String]), 1, 3);
set d1 = %d1% $meth.SetImplementationFlags(128); $TypeBuilder.CreateType()::BrandingFormatString('%% WINDOWS_LONG%% ')
set d1 = %d1% $meth.SetImplementationFlags(128); $TypeBuilder.CreateType()::BrandingFormatString('%% WINDOWS_LONG%% ') -replace [string][char]0xa9, '(C)' -replace [string][char]0xae, '(R)' -replace [string][char]0x2122, '(TM)'
set winos =
set winos =
for /f " delims= " %% s in ( '" %psc% %d1% "' ) do if not errorlevel 1 ( set winos = %% s)
for /f " delims= " %% s in ( '" %psc% %d1% "' ) do if not errorlevel 1 ( set winos = %% s)
@ -1533,10 +1789,6 @@ if %winbuild% GEQ 22000 (
set winos = !winos:Windows 10=Windows 11!
set winos = !winos:Windows 10=Windows 11!
)
)
)
)
if %winbuild% LSS 7600 (
set " winos=!winos:VistaT=Vista! "
set " winos=!winos:Serverr=Server! "
)
exit /b
exit /b
@ -2128,15 +2380,69 @@ exit /b
: : 1st column = Office version number
: : 1st column = Office version number
: : 2nd column = Activation ID
: : 2nd column = Activation ID
: : 3rd column = Generic key. Preference is given in this order, Retail:TB:Sub > Retail > OEM:NONSLP > Volume:MAK > Volume:GVLK
: : 3rd column = For Office 2013 and later, the generated keys are listed. For Office 2010, the blocked keys sourced from the Internet are listed.
: : For Office 2013 and later, key preference is given in this order, Retail:TB:Sub > Retail > OEM:NONSLP > Volume:MAK > Volume:GVLK
: : For Office 2010, key preference is given in this order, Retail > Volume:MAK
: : 4th column = Last part of license description
: : 4th column = Last part of license description
: : 5th column = Edition
: : 5th column = Edition
: : 6th column = Other Edition IDs if they are part of the same primary product (For reference only)
: : Separator = "_"
: : Separator = "_"
: :===============
: : We couldn't find any keys (blocked/generic doesn't matter) for these Office 2010 products. If you have them, please share with us.
14_4eaff0d0-c6cb-4187-94f3-c7656d49a0aa_Retail________ExcelR_[HSExcelR]
14_7004b7f0-6407-4f45-8eac-966e5f868bde_Retail________GrooveR
14_fbf4ac36-31c8-4340-8666-79873129cf40_Retail________OutlookR
14_133c8359-4e93-4241-8118-30bb18737ea0_Retail________PowerPointR_[HSPowerPointR]
14_98677603-a668-4fa4-9980-3f1f05f78f69_Retail________PublisherR
14_db3bbc9c-ce52-41d1-a46f-1a1d68059119_Retail________WordR_[HSWordR]
14_dbe3aee0-5183-4ff7-8142-66050173cb01_Retail________SmallBusBasicsR_[SmallBusBasicsMSDNR]
: : These installers are not publicly available, so it doesn't matter if we don't have their keys.
14_19316117-30a8-4773-8fd9-7f7231f4e060_SubPrepid_____HomeBusinessSubR
14_4d06f72e-fd50-4bc2-a24b-d448d7f17ef2_SubPrepid_____ProjectProSubR
14_e98ef0c0-71c4-42ce-8305-287d8721e26c_SubPrepid_____ProPlusSubR
14_14f5946a-debc-4716-babc-7e2c240fec08_Retail________MondoR
14_533b656a-4425-480b-8e30-1a2358898350_MAK___________MondoVL
: ohookdata
: ohookdata
set f =
set f =
for %% # in (
for %% # in (
: : Office 2010
14_4d463c2c-0505-4626-8cdb-a4da82e2d8ed_7KTYC-XR43P-C3MRW-BJKFD-XB%f% YPG_Retail________AccessR
14_745fb377-0a59-4ca9-b9a9-c359557a2c4e_7XHPQ-BQMYG-YBP49-CY8B2-T8%f% CGQ_ByPass________AccessRuntimeR
14_95ab3ec8-4106-4f9d-b632-03c019d1d23f_89RTQ-MT4GK-6CPTX-WWP7C-J9%f% KXR_MAK___________AccessVL
14_71dc86ff-f056-40d0-8ffb-9592705c9b76_39TRR-C2F37-9WYJ2-MJQXH-B9%f% 38K_MAK___________ExcelVL
14_fdad0dfa-417d-4b4f-93e4-64ea8867b7fd_RCGT3-FPQDV-H49CD-PPDBF-TH%f% 47G_MAK___________GrooveVL
14_7b7d1f17-fdcb-4820-9789-9bec6e377821_3YR9B-D9W79-BY66R-R8XYP-QY%f% YYY_Retail________HomeBusinessR_[HomeBusinessDemoR]
14_09e2d37e-474b-4121-8626-58ad9be5776f_3X43R-HHHXX-FRHRW-2M2WJ-8V%f% PHD_Retail________HomeStudentR_[HomeStudentDemoR]
14_ef1da464-01c8-43a6-91af-e4e5713744f9_XDGJY-KFHW9-JWX9X-YM4GW-GC%f% 8WR_Retail________InfoPathR
14_85e22450-b741-430c-a172-a37962c938af_6GKT2-KMJPK-4RRBF-8VQKB-JB%f% 6G6_MAK___________InfoPathVL
14_3f7aa693-9a7e-44fc-9309-bb3d8e604925_2TG3P-9DB76-4YT99-8RXGD-CW%f% XBP_Retail________OneNoteR_[HSOneNoteR]
14_6860b31f-6a67-48b8-84b9-e312b3485c4b_CV64P-F4VRH-BJ33D-PH6MR-X6%f% 9RY_MAK___________OneNoteVL
14_a9aeabd8-63b8-4079-a28e-f531807fd6b8_J8C9M-YXMH2-9CX44-2C3YG-V7%f% 692_MAK___________OutlookVL
14_acb51361-c0db-4895-9497-1831c41f31a6_GMBWM-WVX26-7WHV4-DB43D-WV%f% DY2_Retail________PersonalR_[PersonalDemoR,PersonalPrepaidR]
14_38252940-718c-4aa6-81a4-135398e53851_HPBQP-RJHDR-Q3472-PT9Q6-PB%f% B72_MAK___________PowerPointVL
14_8b559c37-0117-413e-921b-b853aeb6e210_367X9-9HP9R-TKHY6-DH4QH-K9%f% PY7_Retail________ProfessionalR_[ProfessionalAcadR,ProfessionalDemoR,OEM-SingleImage]
14_725714d7-d58f-4d12-9fa8-35873c6f7215_6JD4G-KRW3J-48MGV-DM6FC-T9%f% WKR_Retail________ProjectProR_[ProjectProMSDNR]
14_1cf57a59-c532-4e56-9a7d-ffa2fe94b474_3XDTH-MMGJ6-F9MKX-THP8D-G9%f% BP7_MAK___________ProjectProVL
14_688f6589-2bd9-424e-a152-b13f36aa6de1_2W96V-RTQ9R-2BPVT-PT8H9-MV%f% 68T_Retail________ProjectStdR
14_11b39439-6b93-4642-9570-f2eb81be2238_4DTT4-D4MKX-23KFH-JKR6T-YK%f% G2J_MAK___________ProjectStdVL
14_71af7e84-93e6-4363-9b69-699e04e74071_2J9H6-H4D3G-PCXD2-96XVM-TR%f% R73_Retail________ProPlusR_[ProPlusAcadR,ProPlusMSDNR,Sub4R]
14_fdf3ecb9-b56f-43b2-a9b8-1b48b6bae1a7_6CD6C-9R8PB-T2D9Y-8RKKX-W7%f% DFK_MAK___________ProPlusVL_[ProPlusAcadVL]
14_3d014759-b128-4466-9018-e80f6320d9d0_32YG9-3VX77-YXJVV-PRVFW-TT%f% 8BV_MAK___________PublisherVL
14_8090771e-d41a-4482-929e-de87f1f47e46_7VKXH-9BWCG-RPTBB-JBRV3-GR%f% HYC_MAK___________SmallBusBasicsVL
14_b78df69e-0966-40b1-ae85-30a5134dedd0_H48K6-FB4Y6-P83GH-9J7XG-HD%f% KKX_ByPass________SPDR
14_b6d2565c-341d-4768-ad7d-addbe00bb5ce_W3BTX-H6BW7-Q6DFW-BXFFY-8R%f% VJP_Retail________StandardR_[StandardMSDNR][KeyisforMSDNR]
14_1f76e346-e0be-49bc-9954-70ec53a4fcfe_2XTQP-GDR7C-GTXPC-6W6PV-4R%f% XGC_MAK___________StandardVL_[StandardAcadVL]
14_2745e581-565a-4670-ae90-6bf7c57ffe43_VXHHB-W7HBD-7M342-RJ7P8-CH%f% BD6_ByPass________StarterR
14_66cad568-c2dc-459d-93ec-2f3cb967ee34_2RDPT-WPYQM-C2WXF-BTPDW-2J%f% 2HM_Retail________VisioSIR_Prem[Pro,Std]
14_36756cb8-8e69-4d11-9522-68899507cd6a_7PKFT-X2MKQ-GT6X2-8CB2W-CH%f% C9K_MAK___________VisioSIVL_Prem[Pro,Std]
14_98d4050e-9c98-49bf-9be1-85e12eb3ab13_6J3XK-DFKGK-X373V-QJHYM-V3%f% FC2_MAK___________WordVL
: : Office 2013
: : Office 2013
15_ab4d047b-97cf-4126-a69f-34df08e2f254_B7RFY-7NXPK-Q4342-Y9X2H-3J%f% X4X_Retail________AccessRetail
15_ab4d047b-97cf-4126-a69f-34df08e2f254_B7RFY-7NXPK-Q4342-Y9X2H-3J%f% X4X_Retail________AccessRetail
15_259de5be-492b-44b3-9d78-9645f848f7b0_X3XNB-HJB7K-66THH-8DWQ3-XH%f% GJP_Bypass________AccessRuntimeRetail
15_259de5be-492b-44b3-9d78-9645f848f7b0_X3XNB-HJB7K-66THH-8DWQ3-XH%f% GJP_Bypass________AccessRuntimeRetail
@ -2375,6 +2681,49 @@ exit /b
: msiofficedata
: msiofficedata
for %% # in (
for %% # in (
14_4d463c2c-0505-4626-8cdb-a4da82e2d8ed_0015_AccessR
14_745fb377-0a59-4ca9-b9a9-c359557a2c4e_001C_AccessRuntimeR
14_95ab3ec8-4106-4f9d-b632-03c019d1d23f_0015_AccessVL
14_4eaff0d0-c6cb-4187-94f3-c7656d49a0aa_0016_ExcelR_[HSExcelR]
14_71dc86ff-f056-40d0-8ffb-9592705c9b76_0016_ExcelVL
14_7004b7f0-6407-4f45-8eac-966e5f868bde_00BA_GrooveR
14_fdad0dfa-417d-4b4f-93e4-64ea8867b7fd_00BA_GrooveVL
14_7b7d1f17-fdcb-4820-9789-9bec6e377821_0013_HomeBusinessR_[HomeBusinessDemoR]
14_19316117-30a8-4773-8fd9-7f7231f4e060_011E_HomeBusinessSubR
14_09e2d37e-474b-4121-8626-58ad9be5776f_002F_HomeStudentR_[HomeStudentDemoR]
14_ef1da464-01c8-43a6-91af-e4e5713744f9_0044_InfoPathR
14_85e22450-b741-430c-a172-a37962c938af_0044_InfoPathVL
14_14f5946a-debc-4716-babc-7e2c240fec08_000F_MondoR
14_533b656a-4425-480b-8e30-1a2358898350_000F_MondoVL
14_c1ceda8b-c578-4d5d-a4aa-23626be4e234_003D_ProfessionalR_[OEM-SingleImage]Exception
14_3f7aa693-9a7e-44fc-9309-bb3d8e604925_00A1_OneNoteR_[HSOneNoteR]
14_6860b31f-6a67-48b8-84b9-e312b3485c4b_00A1_OneNoteVL
14_fbf4ac36-31c8-4340-8666-79873129cf40_001A_OutlookR
14_a9aeabd8-63b8-4079-a28e-f531807fd6b8_001A_OutlookVL
14_acb51361-c0db-4895-9497-1831c41f31a6_0033_PersonalR_[PersonalDemoR,PersonalPrepaidR]
14_133c8359-4e93-4241-8118-30bb18737ea0_0018_PowerPointR_[HSPowerPointR]
14_38252940-718c-4aa6-81a4-135398e53851_0018_PowerPointVL
14_8b559c37-0117-413e-921b-b853aeb6e210_0014_ProfessionalR_[ProfessionalAcadR,ProfessionalDemoR]
14_725714d7-d58f-4d12-9fa8-35873c6f7215_003B_ProjectProR_[ProjectProMSDNR]
14_4d06f72e-fd50-4bc2-a24b-d448d7f17ef2_011F_ProjectProSubR
14_1cf57a59-c532-4e56-9a7d-ffa2fe94b474_003B_ProjectProVL
14_688f6589-2bd9-424e-a152-b13f36aa6de1_003A_ProjectStdR
14_11b39439-6b93-4642-9570-f2eb81be2238_003A_ProjectStdVL
14_71af7e84-93e6-4363-9b69-699e04e74071_0011_ProPlusR_[ProPlusAcadR,ProPlusMSDNR,Sub4R]
14_e98ef0c0-71c4-42ce-8305-287d8721e26c_011D_ProPlusSubR
14_fdf3ecb9-b56f-43b2-a9b8-1b48b6bae1a7_0011_ProPlusVL_[ProPlusAcadVL]
14_98677603-a668-4fa4-9980-3f1f05f78f69_0019_PublisherR
14_3d014759-b128-4466-9018-e80f6320d9d0_0019_PublisherVL
14_dbe3aee0-5183-4ff7-8142-66050173cb01_008B_SmallBusBasicsR_[SmallBusBasicsMSDNR]
14_8090771e-d41a-4482-929e-de87f1f47e46_008B_SmallBusBasicsVL
14_b78df69e-0966-40b1-ae85-30a5134dedd0_0017_SPDR
14_d3422cfb-8d8b-4ead-99f9-eab0ccd990d7_0012_StandardR
14_1f76e346-e0be-49bc-9954-70ec53a4fcfe_0012_StandardVL_[StandardAcadVL]
14_2745e581-565a-4670-ae90-6bf7c57ffe43_0066_StarterR
14_66cad568-c2dc-459d-93ec-2f3cb967ee34_0057_VisioSIR_Prem[Pro,Std]Exception
14_36756cb8-8e69-4d11-9522-68899507cd6a_0057_VisioSIVL_Prem[Pro,Std]Exception
14_db3bbc9c-ce52-41d1-a46f-1a1d68059119_001B_WordR_[HSWordR]
14_98d4050e-9c98-49bf-9be1-85e12eb3ab13_001B_WordVL
: : Office 2013
: : Office 2013
15_ab4d047b-97cf-4126-a69f-34df08e2f254_0015_AccessRetail
15_ab4d047b-97cf-4126-a69f-34df08e2f254_0015_AccessRetail
15_259de5be-492b-44b3-9d78-9645f848f7b0_001C_AccessRuntimeRetail
15_259de5be-492b-44b3-9d78-9645f848f7b0_001C_AccessRuntimeRetail
@ -2491,6 +2840,7 @@ if "%oVer%"=="%%A" (
reg query " %1 \Registration\{ %% B} " /v ProductCode %nul2% | find /i " - %% C- " %nul% && (
reg query " %1 \Registration\{ %% B} " /v ProductCode %nul2% | find /i " - %% C- " %nul% && (
reg query " %1 \Common\InstalledPackages " %nul2% | find /i " - %% C- " %nul% && (
reg query " %1 \Common\InstalledPackages " %nul2% | find /i " - %% C- " %nul% && (
if defined _oIds ( set _oIds = !_oIds! %% D) else ( set _oIds = %% D)
if defined _oIds ( set _oIds = !_oIds! %% D) else ( set _oIds = %% D)
if /i 003D== %% C set SingleImage = 1
)
)
)
)
)
)
@ -2507,7 +2857,7 @@ exit /b
: oh_extractdll
: oh_extractdll
set b =
set b =
%psc% " $f=[io.file]::ReadAllText('!_batp!') -split ': %_hook% \:.*';$encoded = ($f[1]) -replace '-', 'A' -replace '_', 'a';$bytes = [Con %b% vert]::FromBas %b% e64String($encoded); $PePath=' %1 '; $offset=' %2 '; $m=[io.file]::ReadAllText('!_batp!') -split ':hexedit\:.*';iex ($m[1]); " %nul2% | find /i " Error found " %nul1% && set hasherror = 1
%psc% " $f=[io.file]::ReadAllText('!_batp!') -split ': %_hook% \:.*';$encoded = ($f[1]) -replace '-', 'A' -replace '_', 'a';$bytes = [Con %b% vert]::FromBas %b% e64String($encoded); $PePath=' %1 '; $offset=' %2 '; $m=[io.file]::ReadAllText('!_batp!') -split ':hexedit\:.*';iex ($m[1]) " %nul2% | find /i " Error found " %nul1% && set hasherror = 1
exit /b
exit /b
: hexedit :
: hexedit :
@ -2546,7 +2896,7 @@ $Writer.Write($unixTimestamp)
$Writer.Flush()
$Writer.Flush()
# Write the current state of the MemoryStream to a temporary file
# Write the current state of the MemoryStream to a temporary file
$tempFilePath = [System.IO.Path]::Combine($env:windir, " Temp " , [System.IO.Path]::GetRandomFileName())
$tempFilePath = " $env:windir\Temp\$([System.IO.Path]::GetRandomFileName()) "
[System.IO.File]::WriteAllBytes($tempFilePath, $MemoryStream.ToArray())
[System.IO.File]::WriteAllBytes($tempFilePath, $MemoryStream.ToArray())
# Update hash using the temporary file
# Update hash using the temporary file