* Library downloads and parses symbols in order to determine
function hooking offsets at runtime and saves the data in a
"settings.ini" file located in the application folder for future
use; the file is invalidated when a new OS build is detected
* The main executable attempts to determine the location where a
jump has to be patched out so that Explorer remains on the 'show
old taskbar' code path; it will systematically patch each jz/jnz
instruction and will check whether Explorer still runs fine, and,
if it does so and does not crash, whether the old taskbar got
actually shown; once the offset is determined, it is saved in the
"settings.ini" file for future use
* Please have an unmetered active working Internet connection when
running for the first time
* Messages from the patcher (i.e. install/uninstall successful
message, symbol downloading message) will now display in a toast
(Windows 10 notification) if possible; when Explorer is not
running, it falls back to using standard MessageBox'es
* Disabled the pre/post build command that restarted sihost.exe in
Debug builds
@ -5,14 +5,12 @@ Explorer Patcher is a patcher that enables various stuff in Explorer. For the mo
* enables the power user menu (Win+X) when using the classic taskbar in Windows 11
* enables the power user menu (Win+X) when using the classic taskbar in Windows 11
* shows the Start menu on the monitor containing the cursor when invoked with the Windows key
* shows the Start menu on the monitor containing the cursor when invoked with the Windows key
This has been tested only on Windows 11 build 22000.1. It probably does not work on other builds due to different offsets in explorer.exe and its libraries. Once this matures, a solution will be offered for dynamically determining the necessary offsets. As it stands, the application is more in a proof of concept phase.
This has been tested only on Windows 11 build 22000.1. ~~It probably does not work on other builds due to different offsets in explorer.exe and its libraries. Once this matures, a solution will be offered for dynamically determining the necessary offsets. As it stands, the application is more in a proof of concept phase.~~ It should work on higher builds, provided that the OS components' structure has not changed too drastically. The library is able to automatically download symbols and determine the offsets for correctly hooking the functions.
A detailed description of how this works is available on my web site [here](https://valinet.ro/2021/08/09/Restore-Windows-11-to-working-Windows-10-UI.html).
A detailed description of how this works is available on my web site [here](https://valinet.ro/2021/08/09/Restore-Windows-11-to-working-Windows-10-UI.html).
Precompiled binaries are available in [Releases](https://github.com/valinet/ExplorerPatcher/releases).
Precompiled binaries are available in [Releases](https://github.com/valinet/ExplorerPatcher/releases).
Please help me fix the known issues described below in order to get feature parity with regular Windows 10 releases. As it stands, the application works but it is not perfect, yet.
## Installation
## Installation
To install, save the executable in a safe directory, run it once as an administrator to have it register as [Taskman](https://www.geoffchappell.com/notes/windows/shell/explorer/taskman.htm) for Explorer and just restart Explorer or reboot.
To install, save the executable in a safe directory, run it once as an administrator to have it register as [Taskman](https://www.geoffchappell.com/notes/windows/shell/explorer/taskman.htm) for Explorer and just restart Explorer or reboot.
@ -58,13 +56,20 @@ Steps:
md build
md build
cd build
cd build
cmake -G "Visual Studio 16 2019" -A x64 ..
cmake -G "Visual Studio 16 2019" -A x64 ..
cmake --build . --config Release
```
```
If "cmake" is not found as a command, type its full path, or have its folder added to PATH.
If "cmake" is not found as a command, type its full path, or have its folder added to PATH.
Type "Win32" instead of "x64" above, if compiling for x86. The command above works for x64.
Type "Win32" instead of "x64" above, if compiling for x86. The command above works for x64.
Now, in the `libs\funchook\build` folder, open the file `funchook-static.vcxproj` with any text editor, search and replace all occurences of `<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>` with `<RuntimeLibrary>MultiThreaded</RuntimeLibrary>`.
Once done, you can now compile funchook:
```
cmake --build . --config Release
```
3. Compile ExplorerPatcher
3. Compile ExplorerPatcher
* Double click the ExplorerPatcher.sln to open the solution in Visual Studio. Choose Release and your processor architecture in the toolbar. Press F6 to compile.
* Double click the ExplorerPatcher.sln to open the solution in Visual Studio. Choose Release and your processor architecture in the toolbar. Press F6 to compile.