|
Post by ihatemetro on Sept 22, 2022 16:00:55 GMT -8
A "DWM-off" mode on Windows 11 is actually possible without the mouse cursor disappearing and becoming unusable. Though there isn't any practical use for this anymore (maybe except fixing Aero/Win7 style wizards (like troubleshooting wizards) properly?), I think that it may be useful to some, or for people to do this just for fun.
Here are the basic steps: 1. Rename DWMInit.dll (Found in C:\Windows\System32)
2. Rename StartMenuExperienceHost.exe (It is in C:\WINDOWS\SystemApps\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyew) 3. Rename MiniSearchHost.exe, SearchHost.exe and TextInputHost.exe (All are in C:\Windows\SystemApps\MicrosoftWindows.Client.CBS_cw5n1h2txyewy) 4. Rename Windows.immersiveshell.serviceprovider.dll (Found in C:\Windows\System32)
5. Reboot
Though for it to actually become useful, you need to modify explorer (by using ExplorerPatcher, Open-Shell, etc.), rename Windows.UI.Logon.dll, and maybe modify some other Windows programs. If you are using ExplorerPatcher, note that the ExplorerPatcher Properties dialog will be UNUSABLE in DWM off mode without Classic Theme.
There are some "glitches" though (even after modifications): - A black window appearing, though this occurs in late Windows 10 versions as well. (Can be fixed by renaming Windows.immersiveshell.serviceprovider.dll) - A box appearing at the top-left corner of the desktop, which brings the active window to focus when clicked on. (Can be fixed by renaming Windows.immersiveshell.serviceprovider.dll)
- At the top of the desktop, there is an area where the wallpaper doesn't render and instead does effect where parts of the window get stick there after moving it. (Also fixed by renaming Windows.immersiveshell.serviceprovider.dll)
- RDP connections to the computer with DWM off doesn't work. It gets stuck on configuration of the remote computer. (Any fixes for this though?) - Explorer is unstable. (Potentially mostly fixed by renaming Windows.immersiveshell.serviceprovider.dll)
Third-Party Programs: - TightVNC: Client shows a black screen, cursor can get controlled but it's very laggy, and persists even after disconnect. - ExplorerPatcher: Properties dialog does not work without classic theme being enabled (due to it using Metro in themed mode and Win32 in non-themed/classic themed mode) - Firefox: Command prompt window can disappear if in front of the Firefox window, except for updates to the command prompt window (which will eventually disappear as well)
|
|
|
Post by OrthodoxWin32 on Sept 23, 2022 2:06:39 GMT -8
A "DWM-off" mode on Windows 11 is actually possible without the mouse cursor disappearing and becoming unusable. Though there isn't any practical use for this anymore, I think that it may be useful to some, or for people to do this just for fun.
Thanks you ihatemetro . Anyway, I think Microsoft can't forbid using Windows without DWM, because there are still Windows Server Core, WindowsPE and ValidationOS.
|
|
Alcatel
Freshman Member
Posts: 89
OS: Windows 10 Enterprise LTSC IoT 2021
Theme: Windows 7 Aero
CPU: i9-8950HK
RAM: 32GB DDR4
GPU: Nvidia Quadro P3200
|
Post by Alcatel on Oct 3, 2022 20:51:52 GMT -8
It is really strange that they care so much whether people want to use DWM. Is there any practical reason that they have to make it so difficult?
|
|
|
Post by ihatemetro on Oct 4, 2022 8:15:38 GMT -8
It is really strange that they care so much whether people want to use DWM. Is there any practical reason that they have to make it so difficult? Probably Metro/UWP apps, which requires DWM for whatever reason (blur and window frames?). Also fun fact: In early Windows 8 betas, metro worked fully without DWM. Don't know why they decided to make it work only with DWM on.
|
|
|
Post by windowman on Mar 27, 2023 12:39:49 GMT -8
Does this work on Windows 10 21h2?
|
|
|
Post by anixx on Mar 27, 2023 12:52:02 GMT -8
Explorer Patcher does not use Metro.
|
|
|
Post by anixx on Mar 27, 2023 12:53:27 GMT -8
Does the Logon screen work when DWM off on Windows 11?
|
|
|
Post by ihatemetro on Mar 27, 2023 16:17:31 GMT -8
Does the Logon screen work when DWM off on Windows 11? Yes, if you rename Windows.UI.Logon.dll in C:\Windows\System32. However, it will give you the console login screen and not the full GUI one. And about your other comment: Yes, ExplorerPatcher does use Metro, when you are not using Classic Theme. I am specifically referring to the ExplorerPatcher settings/properties dialog. Under Classic Theme, it uses Win32, but in themed mode, regardless of DWM being on or off, it uses Metro/UWP or whatnot.
|
|
|
Post by anixx on Mar 27, 2023 16:23:36 GMT -8
And about your other comment: Yes, ExplorerPatcher does use Metro, when you are not using Classic Theme. I am specifically referring to the ExplorerPatcher settings/properties dialog. Under Classic Theme, it uses Win32, but in themed mode, regardless of DWM being on or off, it uses Metro/UWP or whatnot. No, it does not use Metro or UWP in any form. Regardless of its visual layout it is a pure Win32 application (more precisely, a library). Win32 gives a lot of means to customize the appearance.
All Metro apps run in one process: ApplicationFrameHost.exe. ExplorerPatcher dialog gets started with rundll32.exe, while its resident part runs in explorer.exe.
|
|
|
Post by ihatemetro on Mar 27, 2023 18:34:26 GMT -8
And about your other comment: Yes, ExplorerPatcher does use Metro, when you are not using Classic Theme. I am specifically referring to the ExplorerPatcher settings/properties dialog. Under Classic Theme, it uses Win32, but in themed mode, regardless of DWM being on or off, it uses Metro/UWP or whatnot. No, it does not use Metro or UWP in any form. Regardless of its visual layout it is a pure Win32 application (more precisely, a library). Win32 gives a lot of means to customize the appearance.
All Metro apps run in one process: ApplicationFrameHost.exe. ExplorerPatcher dialog gets started with rundll32.exe, while its resident part runs in explorer.exe.
Obviously the hooking and DLL injection is all Win32 (as explorer is 95% Win32) but I am talking about the Properties dialog when themed. It might not use Metro/UWP, but at least some common libraries. An example of this is the login screen in Windows 8+. It might not exactly be full Metro/UWP, but it does use many libraries from it, which makes it incompatible with DWM-off mode. The ExplorerPatcher properties dialog does the same thing. Try it for yourself, visual styles enabled but DWM off, and open the ExplorerPatcher dialog. You will see that it is a black window, characteristic of Metro/UWP apps with DWM off. Even the screenshots of the properties dialog show this, where the window is slightly blurred with the Metro/UWP/whatever blur and no proper titlebar. Only when Classic Theme is applied, it reverts to the true Win32 dialog, with proper titlebar and window elements. It also starts to work with DWM off. Even if you look at the source code, under ExplorerPatcher/gui.c, it has references to "Immersive", which is pretty much the code name of Metro/UWP (such as the Metro Settings app being called "ImmersiveControlPanel" in C:\Windows). It also has references to dark mode, which is used solely for Metro/UWP apps with the exception of explorer.
|
|
|
Post by anixx on Mar 27, 2023 20:03:56 GMT -8
No, it does not use Metro or UWP in any form. Regardless of its visual layout it is a pure Win32 application (more precisely, a library). Win32 gives a lot of means to customize the appearance.
All Metro apps run in one process: ApplicationFrameHost.exe. ExplorerPatcher dialog gets started with rundll32.exe, while its resident part runs in explorer.exe.
Obviously the hooking and DLL injection is all Win32 (as explorer is 95% Win32) but I am talking about the Properties dialog when themed. It might not use Metro/UWP, but at least some common libraries. An example of this is the login screen in Windows 8+. It might not exactly be full Metro/UWP, but it does use many libraries from it, which makes it incompatible with DWM-off mode. The ExplorerPatcher properties dialog does the same thing. Try it for yourself, visual styles enabled but DWM off, and open the ExplorerPatcher dialog. You will see that it is a black window, characteristic of Metro/UWP apps with DWM off. Even the screenshots of the properties dialog show this, where the window is slightly blurred with the Metro/UWP/whatever blur and no proper titlebar. Only when Classic Theme is applied, it reverts to the true Win32 dialog, with proper titlebar and window elements. It also starts to work with DWM off. Even if you look at the source code, under ExplorerPatcher/gui.c, it has references to "Immersive", which is pretty much the code name of Metro/UWP (such as the Metro Settings app being called "ImmersiveControlPanel" in C:\Windows). It also has references to dark mode, which is used solely for Metro/UWP apps with the exception of explorer. EP uses window transparency, Mica effect... that's why it needs DWM but I do not think it uses any Metro libraries. Metro apps appear as empty windows without DWM because the window frame is ApplicationFrameHost, and the content is XAML-based. EP does not use XAML markup for dialogs nor ApplicationFrameHost which runs XAML window interrior.
|
|
|
Post by joe on Apr 5, 2023 23:22:23 GMT -8
After doing this, I can't delete files anymore. What should I do to get this fixed?
|
|
|
Post by ihatemetro on Apr 6, 2023 4:48:16 GMT -8
After doing this, I can't delete files anymore. What should I do to get this fixed? There are many ways to delete files, so which way doesn't work? Or, does it not even work at all? - Right click context menu has to be reverted to the old Win10 version using ExplorerPatcher. - Explorer toolbar has to be reverted to the Windows 10 ribbon/Windows 7 command bar using ExplorerPatcher. Note that to use the ExplorerPatcher settings dialog when DWM is off, you need to use Classic Theme. If you want a themed system, use ClassicThemeTray to temporarily enable it. That should be what you need in order to delete files, though if it somehow just doesn't work even after these modifications, I have no idea what happened. This tutorial was also written for the original release Windows 11, as that is only what I have (as any modifications that I made would just be reset if I upgrade).
|
|
Alcatel
Freshman Member
Posts: 89
OS: Windows 10 Enterprise LTSC IoT 2021
Theme: Windows 7 Aero
CPU: i9-8950HK
RAM: 32GB DDR4
GPU: Nvidia Quadro P3200
|
Post by Alcatel on Apr 6, 2023 8:32:54 GMT -8
It is really strange that they care so much whether people want to use DWM. Is there any practical reason that they have to make it so difficult? Probably Metro/UWP apps, which requires DWM for whatever reason (blur and window frames?). Also fun fact: In early Windows 8 betas, metro worked fully without DWM. Don't know why they decided to make it work only with DWM on. Yeah, I don't know the internals of metro but I strongly doubt it NEEDS DWM. Even titlebar transparency doesn't require a GPU to operate (you can use Aero Glass by Big Muscle with no graphics driver and I can still drag windows around at like 20 FPS not that bad tbh) but like, even if it did need DWM, cripple the entire system because a few non-critical parts don't work? They could make an error message saying that certain elements of the system failed to start because of an error starting DWM? They could do literally anything else except completely brick the computer
|
|
|
Post by joe on Apr 7, 2023 1:30:33 GMT -8
After doing this, I can't delete files anymore. What should I do to get this fixed? There are many ways to delete files, so which way doesn't work? Or, does it not even work at all? - Right click context menu has to be reverted to the old Win10 version using ExplorerPatcher. - Explorer toolbar has to be reverted to the Windows 10 ribbon/Windows 7 command bar using ExplorerPatcher. Note that to use the ExplorerPatcher settings dialog when DWM is off, you need to use Classic Theme. If you want a themed system, use ClassicThemeTray to temporarily enable it. That should be what you need in order to delete files, though if it somehow just doesn't work even after these modifications, I have no idea what happened. This tutorial was also written for the original release Windows 11, as that is only what I have (as any modifications that I made would just be reset if I upgrade). Nevermind, it fixed the issue itself.
|
|
|
Post by OrthodoxWin32 on Apr 10, 2023 1:34:55 GMT -8
Running classic theme only for ExplorerPatcher settings can help. Maybe with this mod: gitdab.com/Cynosphere/WindhawkMods/src/branch/main/classic-theme-windows.wh.cppBy changing : // @include * // @exclude wininit.exe // @exclude winlogon.exe // @exclude taskmgr.exe // @exclude dwm.exe // @exclude C:\Windows\System32\*.scr // @exclude svchost.exe // @exclude taskhostw.exe // @exclude dllhost.exe // @exclude sihost.exe // @exclude lsass.exe // @exclude C:\Program Files (x86)\Steam\* // @exclude msedge.exe // @exclude vmware.exe // @exclude vmware-vmx.exe // @exclude Spotify.exe // @exclude smartscreen.exe // @exclude RuntimeBroker.exe // @exclude ApplicationFrameHost.exe // @exclude SystemSettings.exe // @exclude SecHealthUI.exe // @exclude SecurityHealthHost.exe // @exclude PhoneExperienceHost.exe // @exclude SecurityHealthTray.exe // @exclude Window Detective.exe to : // @include C:\WINDOWS\dxgi.dll
|
|
|
Post by OrthodoxWin32 on Apr 10, 2023 1:48:31 GMT -8
You also need to delete the sections relating to BasicThemer, which is useless when DWM is disabled.
|
|
|
Post by ihatemetro on Apr 16, 2023 16:04:27 GMT -8
Running classic theme only for ExplorerPatcher settings can help. Maybe with this mod: gitdab.com/Cynosphere/WindhawkMods/src/branch/main/classic-theme-windows.wh.cppBy changing : // @include * // @exclude wininit.exe // @exclude winlogon.exe // @exclude taskmgr.exe // @exclude dwm.exe // @exclude C:\Windows\System32\*.scr // @exclude svchost.exe // @exclude taskhostw.exe // @exclude dllhost.exe // @exclude sihost.exe // @exclude lsass.exe // @exclude C:\Program Files (x86)\Steam\* // @exclude msedge.exe // @exclude vmware.exe // @exclude vmware-vmx.exe // @exclude Spotify.exe // @exclude smartscreen.exe // @exclude RuntimeBroker.exe // @exclude ApplicationFrameHost.exe // @exclude SystemSettings.exe // @exclude SecHealthUI.exe // @exclude SecurityHealthHost.exe // @exclude PhoneExperienceHost.exe // @exclude SecurityHealthTray.exe // @exclude Window Detective.exe to : // @include C:\WINDOWS\dxgi.dll Sadly, that doesn't seem to work. I tried it with the DLL (which didn't do anything) and rundll32.exe (which made the black window classic themed as well as CPL files). Their way of detecting it probably is quite complex and isn't as simple as just forcing classic theme on the settings DLL. Though, I might try with some of the EXEs and DLLs in the Program Files folder.
Edit: Nope, not working either. I checked the ExplorerPatcher source and it has references to IsThemeActive, which I think might be pertaining to Classic Theme systemwide. I have no C or C++ programming knowledge, so I am not really sure.
Edit 2: Tried adding winlogon to the list, and it made the window less tall, but it still thinks that there is a theme.
Edit 3: Figured out that IsThemeActive() is an API. I am not sure how to trick ExplorerPatcher to think that there is no theme though, by forcing this flag to always be false somehow.
|
|
|
Post by anixx on Apr 16, 2023 16:27:56 GMT -8
The dll is injected into the process explorer.exe. You cannot exclude or include a dll, only processes.
Also, this list in the mod is crazy, I do not know why this long list is needed:
// @include * // @exclude wininit.exe // @exclude winlogon.exe // @exclude taskmgr.exe // @exclude dwm.exe // @exclude C:\Windows\System32\*.scr // @exclude svchost.exe // @exclude taskhostw.exe // @exclude dllhost.exe // @exclude sihost.exe // @exclude lsass.exe // @exclude C:\Program Files (x86)\Steam\* // @exclude msedge.exe // @exclude vmware.exe // @exclude vmware-vmx.exe // @exclude Spotify.exe // @exclude smartscreen.exe // @exclude RuntimeBroker.exe // @exclude ApplicationFrameHost.exe // @exclude SystemSettings.exe // @exclude SecHealthUI.exe // @exclude SecurityHealthHost.exe // @exclude PhoneExperienceHost.exe // @exclude SecurityHealthTray.exe // @exclude Window Detective.exe
Why one would want to exclude services, scheduled tasks, dialogs launched with dllhost, taskmgr, steam, vmware, etc? Dwm.exe, wininit.exe and other system processes are not injected anyway.
A part of the list are UWP apps: SystemSettings.exe, SecHealthUI.exe, SecurityHealthHost.exe, PhoneExperienceHost.exe, for all them it is enough to exclude only ApplicationFrameHost.exe, because all of them are launched by this process.
|
|
|
Post by ihatemetro on Apr 16, 2023 16:45:21 GMT -8
The dll is injected into the process explorer.exe. You cannot exclude or include a dll, only processes.
Also, this list in the mod is crazy, I do not know why this long list is needed:
// @include * // @exclude wininit.exe // @exclude winlogon.exe // @exclude taskmgr.exe // @exclude dwm.exe // @exclude C:\Windows\System32\*.scr // @exclude svchost.exe // @exclude taskhostw.exe // @exclude dllhost.exe // @exclude sihost.exe // @exclude lsass.exe // @exclude C:\Program Files (x86)\Steam\* // @exclude msedge.exe // @exclude vmware.exe // @exclude vmware-vmx.exe // @exclude Spotify.exe // @exclude smartscreen.exe // @exclude RuntimeBroker.exe // @exclude ApplicationFrameHost.exe // @exclude SystemSettings.exe // @exclude SecHealthUI.exe // @exclude SecurityHealthHost.exe // @exclude PhoneExperienceHost.exe // @exclude SecurityHealthTray.exe // @exclude Window Detective.exe
Why one would want to exclude services, scheduled tasks, dialogs launched with dllhost, taskmgr, steam, vmware, etc? Dwm.exe, wininit.exe and other system processes are not injected anyway.
A part of the list are UWP apps: SystemSettings.exe, SecHealthUI.exe, SecurityHealthHost.exe, PhoneExperienceHost.exe, for all them it is enough to exclude only ApplicationFrameHost.exe, because all of them are launched by this process.
I am only trying to get the properties dialog to run under classic theme, as the properties dialog does not work when themed. I am not trying to get explorer to run under classic theme. The ExplorerPatcher settings dialog uses the IsThemeActive() API call, which uses UxTheme.dll, to tell when to enable the Win32 mode. Also, the properties dialog also runs under rundll32.exe and dxgi.dll, not explorer.exe (as you know). And no, including rundll32.exe does not make the ExplorerPatcher dialog work (it just classic themes the black window). And honestly, I would agree. There is no need to exclude any of these except metro/UWP apps. Especially since you can just use BasicThemer2-detours. Though I have injected into winlogon.exe (to try to get the properties dialog to run under DWM off themed) so it is somewhat possible to inject into system processes (and how do I know? The shape of the properties dialog changed from being super tall to its regular size under DWM off mode when winlogon.exe was added to the include list).
|
|