summaryrefslogtreecommitdiff
path: root/MAS/Separate-Files-Version/Extract_OEM_Folder.cmd
diff options
context:
space:
mode:
authorWindowsAddict2023-09-25 13:46:19 +0000
committerWindowsAddict2023-09-25 13:46:19 +0000
commite81490b89c55d7b0477da6e72db36e13f2b15f63 (patch)
treef023e744df4fd0d940036b41bed45b1a7ee337bb /MAS/Separate-Files-Version/Extract_OEM_Folder.cmd
parent306372d5a252ab705282ba7c69985031badcae1f (diff)
downloadMicrosoft-Activation-Scripts-e81490b89c55d7b0477da6e72db36e13f2b15f63.zip
1.91.9
Diffstat (limited to 'MAS/Separate-Files-Version/Extract_OEM_Folder.cmd')
-rw-r--r--MAS/Separate-Files-Version/Extract_OEM_Folder.cmd319
1 files changed, 270 insertions, 49 deletions
diff --git a/MAS/Separate-Files-Version/Extract_OEM_Folder.cmd b/MAS/Separate-Files-Version/Extract_OEM_Folder.cmd
index 0883f24..4b07b57 100644
--- a/MAS/Separate-Files-Version/Extract_OEM_Folder.cmd
+++ b/MAS/Separate-Files-Version/Extract_OEM_Folder.cmd
@@ -7,16 +7,22 @@
::
:: This script is a part of 'Microsoft_Activation_Scripts' (MAS) project.
::
-:: Homepage: mass grave.dev
+:: Homepage: mass grave[.]dev
:: Email: [email protected]
::
::============================================================================
-
::========================================================================================================================================
+:: Set Path variable, it helps if it is misconfigured in the system
+
+set "PATH=%SystemRoot%\System32;%SystemRoot%\System32\wbem;%SystemRoot%\System32\WindowsPowerShell\v1.0\"
+if exist "%SystemRoot%\Sysnative\reg.exe" (
+set "PATH=%SystemRoot%\Sysnative;%SystemRoot%\Sysnative\wbem;%SystemRoot%\Sysnative\WindowsPowerShell\v1.0\;%PATH%"
+)
+
:: Re-launch the script with x64 process if it was initiated by x86 process on x64 bit Windows
:: or with ARM64 process if it was initiated by x86/ARM32 process on ARM64 Windows
@@ -24,6 +30,10 @@ set "_cmdf=%~f0"
for %%# in (%*) do (
if /i "%%#"=="r1" set r1=1
if /i "%%#"=="r2" set r2=1
+if /i "%%#"=="-qedit" (
+reg add HKCU\Console /v QuickEdit /t REG_DWORD /d "1" /f %nul1%
+rem check the code below admin elevation to understand why it's here
+)
)
if exist %SystemRoot%\Sysnative\cmd.exe if not defined r1 (
@@ -40,22 +50,34 @@ start %SystemRoot%\SysArm32\cmd.exe /c ""!_cmdf!" %* r2"
exit /b
)
-:: Set Path variable, it helps if it is misconfigured in the system
+::========================================================================================================================================
-set "PATH=%SystemRoot%\System32;%SystemRoot%\System32\wbem;%SystemRoot%\System32\WindowsPowerShell\v1.0\"
-if exist "%SystemRoot%\Sysnative\reg.exe" (
-set "PATH=%SystemRoot%\Sysnative;%SystemRoot%\Sysnative\wbem;%SystemRoot%\Sysnative\WindowsPowerShell\v1.0\;%PATH%"
+set "blank="
+set "mas=mass%blank%grave.dev"
+
+:: Check if Null service is working, it's important for the batch script
+
+sc query Null | find /i "RUNNING"
+if %errorlevel% NEQ 0 (
+echo:
+echo Null service is not running, script may crash...
+echo:
+echo:
+echo Help - https://%mas%/troubleshoot.html
+echo:
+echo:
+ping 127.0.0.1 -n 10
)
+cls
:: Check LF line ending
pushd "%~dp0"
->nul findstr /rxc:".*" "%~nx0"
-if not %errorlevel%==0 (
+>nul findstr /v "$" "%~nx0" && (
echo:
-echo Error: Script either has LF line ending issue, or it failed to read itself.
+echo Error: Script either has LF line ending issue or an empty line at the end of the script is missing.
echo:
-ping 127.0.0.1 -n 6 > nul
+ping 127.0.0.1 -n 6 >nul
popd
exit /b
)
@@ -67,27 +89,44 @@ cls
color 07
title Extract $OEM$ Folder
-set winbuild=1
+set _args=
+set _elev=
+
+set _args=%*
+if defined _args set _args=%_args:"=%
+if defined _args (
+for %%A in (%_args%) do (
+if /i "%%A"=="-el" set _elev=1
+)
+)
+
+set "nul1=1>nul"
+set "nul2=2>nul"
+set "nul6=2^>nul"
set "nul=>nul 2>&1"
+
set psc=powershell.exe
+set winbuild=1
for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G
set _NCS=1
if %winbuild% LSS 10586 set _NCS=0
-if %winbuild% GEQ 10586 reg query "HKCU\Console" /v ForceV2 2>nul | find /i "0x0" 1>nul && (set _NCS=0)
+if %winbuild% GEQ 10586 reg query "HKCU\Console" /v ForceV2 %nul2% | find /i "0x0" %nul1% && (set _NCS=0)
if %_NCS% EQU 1 (
for /F %%a in ('echo prompt $E ^| cmd') do set "esc=%%a"
set "Red="41;97m""
+set "Gray="100;97m""
set "Green="42;97m""
-set "Magenta="45;97m""
+set "Blue="44;97m""
set "_White="40;37m""
set "_Green="40;92m""
set "_Yellow="40;93m""
) else (
set "Red="Red" "white""
+set "Gray="Darkgray" "white""
set "Green="DarkGreen" "white""
-set "Magenta="Darkmagenta" "white""
+set "Blue="Blue" "white""
set "_White="Black" "Gray""
set "_Green="Black" "Green""
set "_Yellow="Black" "Yellow""
@@ -100,7 +139,7 @@ set "eline=echo: &call :ex_color %Red% "==== ERROR ====" &echo:"
if %winbuild% LSS 7600 (
%nceline%
-echo Unsupported OS version detected.
+echo Unsupported OS version detected [%winbuild%].
echo Project is supported only for Windows 7/8/8.1/10/11 and their Server equivalent.
goto done2
)
@@ -115,27 +154,20 @@ goto done2
:: Fix for the special characters limitation in path name
-set desktop=
-for /f "skip=2 tokens=2*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop') do call set "desktop=%%b"
-if not defined desktop for /f "delims=" %%a in ('%psc% "& {write-host $([Environment]::GetFolderPath('Desktop'))}"') do call set "desktop=%%a"
-
set "_work=%~dp0"
if "%_work:~-1%"=="\" set "_work=%_work:~0,-1%"
set "_batf=%~f0"
set "_batp=%_batf:'=''%"
-set "_pdesk=%desktop:'=''%"
set _PSarg="""%~f0""" -el %_args%
set "_ttemp=%temp%"
-set "_dir=%desktop%\$OEM$\$$\Setup\Scripts"
-
setlocal EnableDelayedExpansion
::========================================================================================================================================
-echo "!_batf!" | find /i "!_ttemp!" 1>nul && (
+echo "!_batf!" | find /i "!_ttemp!" %nul1% && (
if /i not "!_work!"=="!_ttemp!" (
%eline%
echo Script is launched from the temp folder,
@@ -150,8 +182,8 @@ goto done2
:: Elevate script as admin and pass arguments and preventing loop
->nul fltmc || (
-if not defined _elev %nul% %psc% "start cmd.exe -arg '/c \"!_PSarg:'=''!\"' -verb runas" && exit /b
+%nul1% fltmc || (
+if not defined _elev %psc% "start cmd.exe -arg '/c \"!_PSarg:'=''!\"' -verb runas" && exit /b
%eline%
echo This script require admin privileges.
echo To do so, right click on this script and select 'Run as administrator'.
@@ -160,12 +192,39 @@ goto done2
::========================================================================================================================================
-if not exist "!desktop!\" (
+:: This code disables QuickEdit for this cmd.exe session only without making permanent changes to the registry
+:: It is added because clicking on the script window pauses the operation and leads to the confusion that script stopped due to an error
+
+for %%# in (%_args%) do (if /i "%%#"=="-qedit" set quedit=1)
+
+reg query HKCU\Console /v QuickEdit %nul2% | find /i "0x0" %nul1% || if not defined quedit (
+reg add HKCU\Console /v QuickEdit /t REG_DWORD /d "0" /f %nul1%
+start cmd.exe /c ""!_batf!" %_args% -qedit"
+rem quickedit reset code is added at the starting of the script instead of here because it takes time to reflect in some cases
+exit /b
+)
+
+::========================================================================================================================================
+
+setlocal DisableDelayedExpansion
+
+:: Check desktop location
+
+set desktop=
+for /f "skip=2 tokens=2*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop') do call set "desktop=%%b"
+if not defined desktop for /f "delims=" %%a in ('%psc% "& {write-host $([Environment]::GetFolderPath('Desktop'))}"') do call set "desktop=%%a"
+
+set "_pdesk=%desktop:'=''%"
+set "_dir=%desktop%\$OEM$\$$\Setup\Scripts"
+
+if exist "!desktop!\" (
%eline%
echo Desktop location was not detected, aborting...
goto done2
)
+setlocal EnableDelayedExpansion
+
::========================================================================================================================================
mode con cols=78 lines=30
@@ -181,7 +240,9 @@ goto done2
set HWID_Activation.cmd=Activators\HWID_Activation.cmd
set KMS38_Activation.cmd=Activators\KMS38_Activation.cmd
set Online_KMS_Activation.cmd=Activators\Online_KMS_Activation.cmd
-
+set Ohook_Activation.cmd=Activators\Ohook_Activation\Ohook_Activation.cmd
+set sppc32.dll=Activators\Ohook_Activation\BIN\sppc32.dll
+set sppc64.dll=Activators\Ohook_Activation\BIN\sppc64.dll
pushd "!_work!"
set _nofile=
@@ -189,6 +250,9 @@ for %%# in (
%HWID_Activation.cmd%
%KMS38_Activation.cmd%
%Online_KMS_Activation.cmd%
+%Ohook_Activation.cmd%
+%sppc32.dll%
+%sppc64.dll%
) do (
if not exist "%%#" set _nofile=1
)
@@ -213,29 +277,38 @@ echo:
echo:
echo:
echo:
-echo:
echo: Extract $OEM$ folder on the desktop
echo: ________________________________________________________
-echo:
+echo:
echo: [1] HWID
-echo: [2] KMS38
-echo: [3] Online KMS
-echo:
-echo: [4] HWID ^(Windows^) ^+ Online KMS ^(Office^)
-echo: [5] KMS38 ^(Windows^) ^+ Online KMS ^(Office^)
-echo:
-echo: [0] Exit
+echo: [2] Ohook
+echo: [3] KMS38
+echo: [4] Online KMS
+echo:
+echo: [5] HWID ^(Windows^) ^+ Ohook ^(Office^)
+echo: [6] HWID ^(Windows^) ^+ Online KMS ^(Office^)
+echo: [7] KMS38 ^(Windows^) ^+ Ohook ^(Office^)
+echo: [8] KMS38 ^(Windows^) ^+ Online KMS ^(Office^)
+echo: [9] Online KMS ^(Windows^) ^+ Ohook ^(Office^)
+echo:
+call :ex_color2 %_White% " [R] " %_Green% "ReadMe"
+echo: [0] Exit
echo: ________________________________________________________
echo:
-call :ex_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard [1,2,3,4,5,0]"
-choice /C:123450 /N
+call :ex_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard :"
+choice /C:123456789R0 /N
set _erl=%errorlevel%
-if %_erl%==6 exit /b
-if %_erl%==5 goto:kms38_kms
-if %_erl%==4 goto:hwid_kms
-if %_erl%==3 goto:kms
-if %_erl%==2 goto:kms38
+if %_erl%==11 exit /b
+if %_erl%==10 start https://%mas%/oem-folder.html &goto :Menu
+if %_erl%==9 goto:kms_ohook
+if %_erl%==8 goto:kms38_kms
+if %_erl%==7 goto:kms38_ohook
+if %_erl%==6 goto:hwid_kms
+if %_erl%==5 goto:hwid_ohook
+if %_erl%==4 goto:kms
+if %_erl%==3 goto:kms38
+if %_erl%==2 goto:ohook
if %_erl%==1 goto:hwid
goto :Menu
@@ -271,6 +344,40 @@ cd \
::========================================================================================================================================
+:ohook
+
+cls
+md "!desktop!\$OEM$\$$\Setup\Scripts\BIN"
+pushd "!_work!"
+copy /y /b "%Ohook_Activation.cmd%" "!_dir!\Ohook_Activation.cmd" %nul%
+copy /y /b "%sppc32.dll%" "!_dir!\BIN\sppc32.dll" %nul%
+copy /y /b "%sppc64.dll%" "!_dir!\BIN\sppc64.dll" %nul%
+popd
+call :export ohook_setup
+
+set _error=
+if not exist "!_dir!\Ohook_Activation.cmd" set _error=1
+if not exist "!_dir!\BIN\sppc32.dll" set _error=1
+if not exist "!_dir!\BIN\sppc64.dll" set _error=1
+if not exist "!_dir!\SetupComplete.cmd" set _error=1
+if defined _error goto errorfound
+
+set oem=Ohook
+goto done
+
+:ohook_setup:
+@echo off
+
+fltmc >nul || exit /b
+
+start /b /wait cmd /c "%~dp0Ohook_Activation.cmd" /Ohook
+
+cd \
+(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
+:ohook_setup:
+
+::========================================================================================================================================
+
:kms38
cls
@@ -331,6 +438,44 @@ cd \
::========================================================================================================================================
+:hwid_ohook
+
+cls
+md "!desktop!\$OEM$\$$\Setup\Scripts\BIN"
+pushd "!_work!"
+copy /y /b "%HWID_Activation.cmd%" "!_dir!\HWID_Activation.cmd" %nul%
+copy /y /b "%Ohook_Activation.cmd%" "!_dir!\Ohook_Activation.cmd" %nul%
+copy /y /b "%sppc32.dll%" "!_dir!\BIN\sppc32.dll" %nul%
+copy /y /b "%sppc64.dll%" "!_dir!\BIN\sppc64.dll" %nul%
+popd
+call :export hwid_ohook_setup
+
+set _error=
+if not exist "!_dir!\HWID_Activation.cmd" set _error=1
+if not exist "!_dir!\Ohook_Activation.cmd" set _error=1
+if not exist "!_dir!\BIN\sppc32.dll" set _error=1
+if not exist "!_dir!\BIN\sppc64.dll" set _error=1
+if not exist "!_dir!\SetupComplete.cmd" set _error=1
+if defined _error goto errorfound
+
+set oem=HWID [Windows] + Ohook [Office]
+goto done
+
+:hwid_ohook_setup:
+@echo off
+
+fltmc >nul || exit /b
+
+start /b /wait cmd /c "%~dp0HWID_Activation.cmd" /HWID
+
+start /b /wait cmd /c "%~dp0Ohook_Activation.cmd" /Ohook
+
+cd \
+(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
+:hwid_ohook_setup:
+
+::========================================================================================================================================
+
:hwid_kms
cls
@@ -365,6 +510,44 @@ cd \
::========================================================================================================================================
+:kms38_ohook
+
+cls
+md "!desktop!\$OEM$\$$\Setup\Scripts\BIN"
+pushd "!_work!"
+copy /y /b "%KMS38_Activation.cmd%" "!_dir!\KMS38_Activation.cmd" %nul%
+copy /y /b "%Ohook_Activation.cmd%" "!_dir!\Ohook_Activation.cmd" %nul%
+copy /y /b "%sppc32.dll%" "!_dir!\BIN\sppc32.dll" %nul%
+copy /y /b "%sppc64.dll%" "!_dir!\BIN\sppc64.dll" %nul%
+popd
+call :export kms38_ohook_setup
+
+set _error=
+if not exist "!_dir!\KMS38_Activation.cmd" set _error=1
+if not exist "!_dir!\Ohook_Activation.cmd" set _error=1
+if not exist "!_dir!\BIN\sppc32.dll" set _error=1
+if not exist "!_dir!\BIN\sppc64.dll" set _error=1
+if not exist "!_dir!\SetupComplete.cmd" set _error=1
+if defined _error goto errorfound
+
+set oem=KMS38 [Windows] + Ohook [Office]
+goto done
+
+:kms38_ohook_setup:
+@echo off
+
+fltmc >nul || exit /b
+
+start /b /wait cmd /c "%~dp0KMS38_Activation.cmd" /KMS38
+
+start /b /wait cmd /c "%~dp0Ohook_Activation.cmd" /Ohook
+
+cd \
+(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
+:kms38_ohook_setup:
+
+::========================================================================================================================================
+
:kms38_kms
cls
@@ -399,6 +582,44 @@ cd \
::========================================================================================================================================
+:kms_ohook
+
+cls
+md "!desktop!\$OEM$\$$\Setup\Scripts\BIN"
+pushd "!_work!"
+copy /y /b "%Online_KMS_Activation.cmd%" "!_dir!\Online_KMS_Activation.cmd" %nul%
+copy /y /b "%Ohook_Activation.cmd%" "!_dir!\Ohook_Activation.cmd" %nul%
+copy /y /b "%sppc32.dll%" "!_dir!\BIN\sppc32.dll" %nul%
+copy /y /b "%sppc64.dll%" "!_dir!\BIN\sppc64.dll" %nul%
+popd
+call :export kms_ohook_setup
+
+set _error=
+if not exist "!_dir!\Online_KMS_Activation.cmd" set _error=1
+if not exist "!_dir!\Ohook_Activation.cmd" set _error=1
+if not exist "!_dir!\BIN\sppc32.dll" set _error=1
+if not exist "!_dir!\BIN\sppc64.dll" set _error=1
+if not exist "!_dir!\SetupComplete.cmd" set _error=1
+if defined _error goto errorfound
+
+set oem=Online KMS [Windows] + Ohook [Office]
+goto done
+
+:kms_ohook_setup:
+@echo off
+
+fltmc >nul || exit /b
+
+start /b /wait cmd /c "%~dp0Online_KMS_Activation.cmd" /KMS-ActAndRenewalTask /KMS-Windows
+
+start /b /wait cmd /c "%~dp0Ohook_Activation.cmd" /Ohook
+
+cd \
+(goto) 2>nul & (if "%~dp0"=="%SystemRoot%\Setup\Scripts\" rd /s /q "%~dp0")
+:kms_ohook_setup:
+
+::========================================================================================================================================
+
:errorfound
%eline%
@@ -407,15 +628,14 @@ goto :done2
:done
-set -=
echo ______________________________________________________________
echo:
-call :ex_color %Magenta% "%oem%"
+call :ex_color %Blue% "%oem%"
call :ex_color %Green% "$OEM$ folder is successfully created on the Desktop."
echo "%oem%" | find /i "38" %nul% && (
echo:
echo To KMS38 activate Server Cor/Acor editions ^(No GUI Versions^),
-echo Check this page https://mass%-%grave.dev/oem-folder
+echo Check this page https://%mas%/oem-folder
)
echo ______________________________________________________________
@@ -423,7 +643,7 @@ echo ______________________________________________________________
echo:
call :ex_color %_Yellow% "Press any key to exit..."
-pause >nul
+pause %nul1%
exit /b
::========================================================================================================================================
@@ -432,7 +652,7 @@ exit /b
:export
-%nul% %psc% "$f=[io.file]::ReadAllText('!_batp!') -split \":%~1\:.*`r`n\"; [io.file]::WriteAllText('!_pdesk!\$OEM$\$$\Setup\Scripts\SetupComplete.cmd',$f[1].Trim(),[System.Text.Encoding]::ASCII);"
+%psc% "$f=[io.file]::ReadAllText('!_batp!') -split \":%~1\:.*`r`n\"; [io.file]::WriteAllText('!_pdesk!\$OEM$\$$\Setup\Scripts\SetupComplete.cmd',$f[1].Trim(),[System.Text.Encoding]::ASCII);"
exit /b
::========================================================================================================================================
@@ -455,4 +675,5 @@ if not exist %psc% (echo %~3%~6) else (%psc% write-host -back '%1' -fore '%2' '%
)
exit /b
-::======================================================================================================================================== \ No newline at end of file
+::========================================================================================================================================
+:: Leave empty line below