1
0
mirror of https://github.com/valinet/ExplorerPatcher.git synced 2024-11-28 09:21:02 +01:00
Commit Graph

743 Commits

Author SHA1 Message Date
Valentin Radu
4212e357b7 Start11: Center menu on screen also works when taskbar is not at the bottom 2022-11-17 02:51:32 +02:00
Valentin Radu
d262c41850 Version: 22621.608.51.6 2022-11-17 01:32:06 +02:00
Valentin Radu
d7a038564b All: Protect against crashes caused by failure to patch the IAT
Impact: A recent bug report on the Mozilla Firefox issue tracker
(https://bugzilla.mozilla.org/show_bug.cgi?id=1798707) identifies a
crash in the Firefox browser caused by an invalid memory access
performed by ExplorerPatcher (https://crash-stats.mozilla.org/signature/?signature=explorerpatcher.amd64.dll%20|%20%3Cunknown%20in%20Windows.UI.FileExplorer.dll%3E%20|%20explorerpatcher.amd64.dll%20|%20RtlpFindEntry%20|%20RtlpAllocateHeap%20|%20RtlpAllocateHeapInternal%20|%20explorerpatcher.amd64.dll%20|%20RtlDosApplyFileIsolationRedirection_Ustr%20|%20LdrpApplyFileNameRed...&date=%3E%3D2022-11-02T20%3A44%3A00.000Z&date=%3C2022-11-16T20%3A44%3A00.000Z).
This might happen only when the "Register as shell extension: option
is used, and ExplorerPatcher is injected in other processes. Testing
was unable to reproduce the issue, but looking on the crash logs it
was determined that it likely happens in "VnPatchDelayIAT", where
the memory is patched regardless of whether the protection level
actually succeeded changing or not. The call is suspected to fail
when certain antivirus solutions are used, although a clear test case
with this scenario could not be determined.

Also, code review determined that a race condition might happen in both
"VnPatchIAT" and "VnPatchDelayIAT", where some other thread might
unload the module while the code works with it, attempting to patch the
requested function.

Description: The issue has been addressed by improved checks and
ensuring the module is not unloaded while the functions work with it.
The program only attempts to patch the memory if the previous
protection change call actually succeeded. Additionally, the module
reference count is increased prior to working with it when attempting
the patch, in order to prevent other threads from successfully
unloading it. The proposed changes should harden the code against
unexpected behavior and should address the crashes experienced when
the code runs in other processes, including Firefox.
2022-11-17 01:28:31 +02:00
Valentin Radu
6190fd2278 Version: 22621.608.51.5 2022-11-15 15:37:46 +02:00
Valentin Radu
2572a802db Start11: Respect "Layout" settings on 22621-based builds
Impact: The actual layout setting from Windows Settings -
Personalization - Start is ignored and the "Default" layout setting is
always used when displaying the Windows 11 Start menu on 22621-based
builds when the setting to disable the "Recommended" section is NOT
used in ExplorerPatcher Properties.

Description: The issue has been addressed by remembering the current/
previous setting and using that when setting the height of the pinned
area when the setting to disable the "Recommended" section is NOT
used in ExplorerPatcher Properties, as opposed to the previous behavior
where a hardcoded value was being used.
2022-11-15 15:35:33 +02:00
Valentin Radu
5048a4f76f Version: 22621.608.51.4 2022-11-13 00:00:54 +02:00
Valentin Radu
a6a88b1b87 Taskbar11: Fixed a bug that could crash explorer.exe when right clicking certain system tray icons on 22621-based builds
Impact: Failure to check against a NULL value and dereferencing it
leads to a crash in `explorer.exe` with fault offset 0xfc69 on
22621-based OS builds. This happens when right clicking certain system
tray icons, like "Epic Games Launcher" when using the Windows 11
taskbar.

Description: The issue has been addressed with improved checks: a check
against NULL values is performed before attempting to work with the
data the variables might point to.
2022-11-12 23:56:19 +02:00
Valentin Radu
3717aefdaa Version: 22621.608.51.3 2022-10-12 18:30:45 +03:00
Valentin Radu
5cef3b12c3 GUI: Expose sws scroll wheel behavior option 2022-10-12 18:30:04 +03:00
Valentin Radu
9d64a8c3a5 sws: Fixed a bug that could prevent correct reload of settings when entries were deleted from the registry 2022-10-12 18:29:44 +03:00
Valentin Radu
f285371de0 Version: 22621.608.51.2 2022-10-12 03:04:59 +03:00
Valentin Radu
d4cae8106b All: Fix taskbar cascade and tile windows options 2022-10-12 03:01:28 +03:00
Valentin Radu
3fe00cb138 sws: Support for changing selection in window list using the mouse wheel 2022-10-12 02:51:59 +03:00
Valentin Radu
e4e3c61ade Version: 22621.608.51.1 2022-10-03 00:19:27 +03:00
Valentin Radu
0833f513f8 General: Fix network and battery flyouts on OS build 22621 2022-10-02 23:52:37 +03:00
Valentin Radu
556aeb5aae General: Fixed a bug that could prevent the battery or network flyouts from showing 2022-10-02 23:29:59 +03:00
Valentin Radu
33d1518977 General: Support EP as version 22621
The final Windows 11 22H2 that is shipped to users is OS build 22621.

Unfortunately, I updated EP some time ago to 22622. This creates a
discrepancy between the OS build most people have and the version of
EP that they might have installed. Furthermore, I currently test EP
against OS build 22621. To make things more clear, the next version of
EP will have the major build number set to 22621.

In order to have EP use version 22621 from now on and not prevent
updating from EP 22622... to EP 22621..., I devised this workaround
where the EP version is kept to 22622 as far as updates are concerned,
but the internal build number of EP really is set to 22621.

In the future, if we want to bump the EP version to 22622 again, a
regular change in `version.h` will have the setup patcher insert a `!`
as the first character in the hash part of the version string, which
tells the updater to display that version as a real 22622 build and not
artificially decrement it to 22621.

The only slight inconvenience is that, when the next update arrives,
people will be told they upgrade to EP 22622... still, but they will
receive an EP 22621... build. But at least the updater will work and
detect the new version. From there on, subsequent versions will be
shown as 22621 in the notification if the build number for that version
really is 22621.
2022-10-02 23:03:16 +03:00
Valentin Radu
4cfc2cea4b Updates: Check remote hash against locally computed hash 2022-10-02 22:49:43 +03:00
Valentin Radu
50f3a709c0 Weather: Fixed wrong left padding of the widget
Google seems to have updated the web page and the widget is now 14px
more to the right, so the code had to account for this.
2022-09-28 14:36:27 +03:00
Valentin Radu
fe071230ab Version: 22622.450.50.3 2022-09-11 13:28:12 +03:00
Valentin Radu
35046cd91a ep_dwm: Fixed use-after-free bug; fixed incorrect check for running dwm instances 2022-09-11 13:27:59 +03:00
Valentin Radu
5de2eb0044 Version: 22622.450.50.2 2022-08-07 21:29:08 +03:00
Valentin Radu
d55f3c73c9 GUI: Support disabling File Explorer modern search bar in 32-bit applications 2022-08-07 20:44:55 +03:00
Valentin Radu
8fd7c46db0 All: Substitute RegDeleteKeyW with RegDeleteTreeW
This is because the keys should be deleted regardless of whether they
contain subkeys or not.
2022-08-07 20:40:36 +03:00
Valentin Radu
ddeaa2e538 Main: Fix typo 2022-08-07 20:28:30 +03:00
Valentin Radu
9fe862ed38 Version: 22622.450.50.1 2022-08-07 02:44:05 +03:00
Valentin Radu
0c2f287d57 GUI, Main: Support for File Explorer - Control interface setting on OS builds 22621+ 2022-08-07 02:30:47 +03:00
Valentin Radu
c96aebee11 Explorer: Option to shrink address bar height (thanks @krlvm) 2022-08-07 00:55:44 +03:00
Valentin Radu
a3cd2a33a9 GUI: Show Widgets button toggle for Taskbar11 on OS builds 22621+ 2022-08-07 00:18:45 +03:00
Valentin Radu
0a42d5559f Taskbar11: Fix right click menu and double click to auto-hide on OS builds 22621+ 2022-08-07 00:07:04 +03:00
Valentin Radu
25660c908a GUI, Main: Disable non-functional Snap Assist style option on OS builds 22621+ 2022-08-06 23:38:22 +03:00
Valentin Radu
cb951df606 Alt-Tab: Enable Windows 10 style in OS builds 22621+ 2022-08-06 23:34:52 +03:00
Valentin Radu
7d6b0933e1 ep_dwm: Compatibility with OS builds 22621+ 2022-08-06 22:05:02 +03:00
Valentin Radu
7b7cf6195d Taskbar10: Fix redraw problem on OS builds 22621+ 2022-08-06 18:59:21 +03:00
Valentin Radu
5ee6e3508d Main: Fixed a bug that crashed explorer at PC startup on OS builds 22621+ 2022-08-06 05:49:31 +03:00
Valentin Radu
619d9caf21 GUI: Fixed a bug that crashed when displaying the File Explorer section on older builds 2022-08-06 04:50:35 +03:00
Valentin Radu
aeeb362045 HideExplorerSearchBar: Fixed on OS builds 22621+ 2022-08-06 04:39:04 +03:00
Valentin Radu
a90439d096 Main: Fix Windows Spotlight integration on OS builds 22621+ 2022-08-06 04:14:20 +03:00
Valentin Radu
92a3da12c0 GUI: Remove Other - Show Command Prompt instead of PowerShell in Win+X menu 2022-08-06 03:57:27 +03:00
Valentin Radu
258d35c4a0 GUI: Fix language switcher on OS builds 22621+ 2022-08-06 03:54:41 +03:00
Valentin Radu
de44754c42 Main: Fixed a bug that crashed Explorer when a folder window was opened after a first one was closed on OS builds 22621+ 2022-08-06 03:12:59 +03:00
Valentin Radu
aa922410f4 GUI: Hide File Explorer - title bar related options on OS builds 22621+ 2022-08-05 21:43:22 +03:00
Valentin Radu
6feeba1cd1 GUI: Hide File Explorer - Control interface setting on OS builds 22621+ 2022-08-05 21:39:57 +03:00
Valentin Radu
baecdcc191 GUI: Enable search button in Windows 10 taskbar by default on OS builds 22621+ 2022-08-05 21:31:13 +03:00
Valentin Radu
ce6fb8d8f9 GUI: Hide Taskbar - Location in Windows 11 style on OS builds 22621+ 2022-08-05 21:13:12 +03:00
Valentin Radu
2e7a175537 GUI: Mark Taskbar - Start button style as requiring a restart 2022-08-05 21:12:35 +03:00
Valentin Radu
9239e56172 GUI: Hide Cortana button options on OS builds 22621+ 2022-08-05 21:12:23 +03:00
Valentin Radu
092edc10be Version: 22000.795.48.2 2022-08-05 15:33:49 +03:00
Valentin Radu
9ec44832dd Weather: Fixed a bug that could hang the host process and explorer
A nasty bug was sometime occurring where both explorer and the widget
host process could hang; this often happened when explorer was
restarted. The reason this happened was because the widget host
process could hang waiting for the "Lock_EPWeather_Instance" lock. This
was a global lock that made sure only one instance of the widget could
be created.

The idea of the global "Lock_EPWeather_Instance" lock was, of course,
pretty bad, but I chose it because I couldn't figure out/didn't want to
deal with passing an EPWeather "this" instance to WebView2 or
NetworkListManagerEvents functions. Bad decision.

This patch addresses this bug, by providing a generic object
which holds a reference to EPWeather "this" on which I build event
handlers for WebView2 and so on. Since these now contain this
reference, they cannot be static anymore, thus I switched to dynamically
allocating them and managing them throughout their lifetime using,
of course, reference counting. This is the proper solution.

Thus, this bug and any similar ones should now be fixed.
2022-08-05 15:31:36 +03:00
Valentin Radu
1c31c1c281 Weather: Free widget from a single place 2022-08-05 15:31:24 +03:00