-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Taskbar10: Try to make fixes for 22621.2134+ #2097
Conversation
7b9bfa1
to
45da683
Compare
Hold on, I messed up the line endings on dllmain.c Edit: Fixed. |
- Fix Action Center, Control Center, and Toast Center placements. - Fix Task View refusing to appear. - Fix Win+B not working.
…th 22621.2359 Release Preview
…th 23545.1000 Beta - Added patterns for twinui.pcshell.dll as a backup when symbols are not available - Made LoadSymbols clear the returned symbol data when the version is mismatched - Failure of hooking functions should not prevent Explorer from loading at all anymore
This fixes that (again, the vtable for
I will commit this as well. |
I have merged this PR into
I checked this out, but have yet to find a solution. The Settings app still writes the settings to the same place it did in Windows 10, for example ( |
Thank you very much for merging and the Win11 taskbar context menu fix but why is this PR still open...? And about the Win10 taskbar on 22631+, as a preparation for 23H2 dropping next week, if you don't mind can you give me pointers on how did you make your method for 21H2 and 22H2? For the start menu buttons, they retained after I upgraded from 2134 to 2283 where starting from 2283 the changes from the settings app do not have any effect anymore and what you have is stuck "forever". Yeah I need to look into this as well. Also I've added some more issues that I found. |
PR is closed now :D I did not merge from here, I created a new branch locally from the PR, worked on that and then merged into
Hmm, interesting, so it seems that whatever datastore it uses, it's stuck and doesn't get the updates in the newer builds. If we identify the library that handles this, an option might be to try to load that older version instead of the current version and see if it starts to work again. Currently, EP does that for
What do you mean? As far as I remember, on 22H2 the taskbar worked on the build from the get go, so I did not have that hurdle. What I had to fix were a couple of problems, and I methodically solved each of them one by one. I made a thread where I tracked my issues then: #1082. Hopefully, the code for the Windows 10 taskbar is still there in |
The GUID of |
Okay, I understand. Pfff, long time, I don't remember exactly, but basically it looked and worked like this in previous versions of In That method looks like this: That Now, back in You can see it basically looks like a standard COM QueryInterface, with IID:
Now, back in vs Initially, in early 22000-based builds, things were a bit different, I described them here: https://valinet.ro/2021/08/09/Restore-Windows-11-to-working-Windows-10-UI.html I got info like this mostly from disassembling Microsoft's DLLs and What I used to sometimes do, back in the day, was to download the new version of StartAllBack and the version before that, that was broken on some newer build, and then extract |
I have build 22000 (Win11 22H2), the EP crashes, cannot start after this update. |
First off, 22000 is not 22H2. Second of all, we haven’t tested on 22000. As far as I looked, there are checks everywhere to enable the new behavior selectively only on newer builds, but maybe something slipped away. Idk. Compile a version locally while selectively rolling back commits until you find the one responsible, then selectively remove code there until you identify which portion exactly is causing it and report back. Thanks. |
Now that you mention it, apparently OS build 25921, a 24H2 build that's still in the Canary insider channel, removes the old taskbar according to XenoPanther |
Yeah, hidding something behind a featureId is sometimes the first step towards removing it altogether, as hinted by previous experiences (STTest). If the old taskbar code is removed altogether, I see 3 outcomes:
Keep in mind that, besides learning, my initial goals with this project were to have a stop gap solution before Windows 11’s implementation kind of gets at feature parity with the Windows 10 taskbar (i.e. until never combine, taskbar labels are brought back), which they did in one form or another. Plus, nowadays we also have things like Windhawk and its modules which performed alternative implementations of never combine, taskbar labels etc. |
Most users especially the ones who use wide monitors rely on 'move taskbar' functionality. It is also the most requested feature from Microsoft on Feedback Hub. I also use Explorer Patcher for this specific feature. I wonder if it will be possible to move it when the old one is completely gone. Since, it looks like Microsoft has no intention to add that feature. |
Hmm... Not good. Not good at all. This will reach the 23H2 stream maybe in January or March or something next year. But I am really down to do the 3rd option. Begin with the leaked Windows XP source code. Seriously. |
P.S: I observe less functions being inlined in insider builds. Which is a good thing (and bad thing too speaking about patterns but mostly good) for us. The code block in yellow has just got into 22H2 through 22621.2361 that was just released yesterday. |
Also the modded Win11 taskbar context menu is still crashing on these builds, even after your commit. Can you tell me the function that you referred from? I'll make patterns to retrieve the offsets. |
Now that the app is functional again, I suggest keeping new versions as pre-release for a while, so that side effects that might inadvertently slip, like the one @Anixx mentioned have a chance of being reported and fixed before the build reaches the bigger audiences. Once a new version "stabilizes" itself, i.e. no major reports for a few days/hours, we can then promote them as releases. This seemed to work best from my experiences here in the past, providing a good balance between thorough testing and quick access to new functionality. Regarding the Windows 11 context menu, what I firstly suggest is to take a look at that latest commit I made there ( ** That's what I did yesterday, it seemed to work. Now that I look, it doesn't work fully (Undo never appears), yet the menu doesn't crash on 22621.2283. Now I am actually looking on the disassembly, I still see a 640 there, which contradicts my 648... I am a bit stuck atm... And yeah, I admit, in the rush of coding, I skipped over the parts where I add comments to actually explain wth I am doing. I am sorry for that, yet I hope my explanations make up for it. Thanks for adding bits of explanations to the source code as well, you can also even add links that point to comments here or any other relevant places. |
My explanation above now I see was a bit erroneous, I corrected it after reading you notes. In nimpl1 I returned a pointer to an object with the It's been done back in my early days in the "game", a mix of dissembling with a much less capable freeware IDA of both I hope I didn't get in your way with my explanation more than I should. Tbh, I don't remember every detail and may not reckon exactly I took a certain path not the other in some situations, but I am trying my best to explain. I am still learning to this day, nowadays looking at this disassembly I wouldn't feel the need to check other sources to understand it properly, but back in the day I knew much less than I know today. With a lot of stuff like this, it’s the struggle to get to a working version, after which you hang o to that patch until it breaks. And tend to forget a lot about how stuff works, idk, at least for me. It’s interesting and challenging at the moment, but hard to keep on my mind for too long. |
It's all okay. I'm learning how the shell works under the hood as well as the ancient but reliable COM system. Despite having around 2 years of reversing experience (mostly on Fortnite and a remote desktop software I won't name) I still don't know much how the shell works 😅 |
All right, then I am glad that I made ExplorerPatcher’s source available to check out, and even though I admit, it’s not in the best shape, it could look much better, I still think it is a valuable resource worth looking onto, and if it helps you even a tiny tiny bit towards learning and developing your knowledge, then my “mission” is eventually accomplished and brings me the utmost joy knowing that I could be of assistance. Thanks. |
For all I know, the Win11 original build, 22000 is 22H2. |
No. It's 21H2. 22H2 is released the year after with build number 22621. |
No change. I don't know if I did this right, I couldn't delete that StartTileData.dll from 22621.1992, which means it should be loaded already. Edit: The Windows 11 Start menu is also in a partially sad state 😭 I don't see Microsoft Edge in that list but the Accessibility folder is there. That's insider builds for you but at least we can make sure that everyone can get the most stable EP experience when new builds drop, though. |
I defined the vtables in my local types for my 22621.1992 disassembly. This makes more sense now. In case you don't know: |
Fixed your EnsureXAML on 2134+. Only added the second GUID. Of course I tidied it up for future contributors to understand. And I guess when the Win11 command bar + tabs is not used, we have to disable the new WASDK views because they're still crashing. They're so bad either ways 🤷 Also, since yesterday I just realized that my |
Yeah, if it's a breaking bug, absolutely sure we can make a new release. Pick what version you think is suitable and flag it as release, sure. Or it doesn;t let you do it? |
Too tired now, it's 4 in the morning to think of a proper changelog message. I think 22621.2361 suits best as it's a very probable next GA cumulative update build which had the issues. |
Hi @valinet, is vali20#6568 (User ID |
Yup, that's me. I agree with the workflow described, once I get the links from you I will make sure to set them up. Thanks. |
@valinet I'm currently faithfully (trying to be 1:1) reimplementing the nuked CTrayNotify into EP, right now I've finished reimplementing ClockButton. But we need to talk about this because I don't know what will happen if we push the faithful reimplementation to this repo or such. I'm thinking options such as private DLL or something but that would break your commitment to security (all binaries are built on GitHub's machines). I think "zombifying" the |
This is an AHK script that more or less fixes the appearance of the Win11 taskbar under Windows Classic theme. It would be very nice if these fixes were made a part of the "Classic Theme Mitigations" option that currently mostly affects the Win10 taskbar.
Please, add these mitigations for Classic Theme. |
When using the Windows 10 taskbar on Windows 11 version 22621.2134+, I've made EP to:
As a bonus:
twinui.pcshell.dll
whose matches are used when symbols are not available or not yet downloaded.Remaining issues:
On 22621.2134+, with "Do not change the taskbar context menu" off, right clicking the empty spot on the Windows 11 taskbar crashes Explorer.fe78dcaWindows Ink Workspace button crashes Explorer after clicking it when the taskbar is placed at the bottom.On 22621.2283, No "Settings", "Documents", "Downloads", etc. buttons on Start10 on 22621.2283 #2108.Windows 10 taskbar doesn't work.On 23545.1000 (Dev) classic (non-UWP) start menu folders and shortcuts do not appear in the Windows 10 start menu. Both in the app list and pinned tiles.The fixes have been tested to work perfectly on:
Important note: My methods uses patterns with masks, therefore future updates might break my methods. I've added some safeguards before applying the patches when possible, to try to prevent unwanted effects.
Further explanations are in the code I have added. Feedback is welcome :)