-
Notifications
You must be signed in to change notification settings - Fork 78
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
Updated the readme instruction for triggering early / system start of Windhawk service, which is necessary to ensure that classic theme is properly applied before any programs including Taskbar run. The mod code is same, only readme instruction has changed. Also added one more classic theme related mod to the recommended mods list in the readme. #917
Updated the readme instruction for triggering early / system start of Windhawk service, which is necessary to ensure that classic theme is properly applied before any programs including Taskbar run. The mod code is same, only readme instruction has changed. Also added one more classic theme related mod to the recommended mods list in the readme. #917
Conversation
…e enable mod classic-theme-enable-with-extended-compatibility.wh.cpp
…th 1ms polling in case the conditions require to retry applying the classic theme.
…ince classic theme supports only that.
… Windhawk service, which is necessary to ensure that classic theme is properly applied before any programs including Taskbar run. The mod code is same, only readme instruction has changed. Also added one more classic theme related mod to the recommended mods list in the readme.
FYI, I saw somebody on Discord recommending to make ProfSvc depend on Windhawk. I didn't try it, but it worked for them.
I'm not sure how an antivirus is a problem in this case. Why is it different from adding it via a schedued task? I like the dependency way more because it's more predictable - the service that depends on Windhawk will wait for Windhawk to run. With a scheduled task, Windhawk starts asynchronously, which means that the load order is not guaranteed and may wary between boots.
Explorer launches much later than services, most of which start even before the user logs in. |
If you want to start anything before the shell, you should replace userinit in registry, as said in point 6 in this tutorial: valinet/ExplorerPatcher#167 |
@m417z I now added an additional instruction for making a service dependent on Windhawk. I chose a service that seemed least disrupting, in case Windhawk does not start. Bear in mind, if Windhawk does not start then the dependent service will not start either. ProfSvc not starting means the user will not be able to log in. With some services failing the system will not connect to internet, or will even reboot. Right now I chose Plug and Play service. I hope with that addition the instruction is sufficient both for more conservative people as well as for more risk tolerant ones.
If Windhawk is a scheduled task then failure of Windhawk will not affect any services.
|
@Anixx This is interesting. I imagine, if we used this method, then Windhawk or classic theme mod would still need to support it. The thing is that if Windhawk starts from this script, then I imagine that the script will continue loading the shell process immediately after starting Windhawk, since currently the script does not know when the Windhawk actually started up and is ready to do its work. Am I correct? In order to avoid this race condition, Windhawk itself would have to trigger the start of explorer when it is actually ready. But this means Windhawk or for example the classic theme mod in Windhawk would need to support such a chain. The upside of your proposed approach is that the code of Windhawk does not have to be necessarily changed, the change could be done also inside the mod code. |
@m417z Hey, discovered an additional detail about making services dependent on Windhawk, which you might want to keep in mind when you use this strategy yourself. Namely, if I need to manually stop Windhawk service temporarily, then that will automatically shut down the dependent service as well. Manually stopping Windhawk happens more often than antivirus removing it. Because of that it is even more important that the stopping of dependent service does not break anything immediately. My current choice of Plug and Play service seems to be quite safe choice in that regard as well. In contrast, for example stopping ProfSvc might be problematic. (Also, I did not mention it before, Plug and Play service as a dependent service makes Windhawk start before any services start). |
Good to know, thanks for the update. I'm not too familiar with the services to judge which is more troublesome to have broken, but "does not break anything immediately" is something :) |
Shouldn't disabling plug-and-play service also break external devices? That could be quite a problem, especially if you had an external wifi card or similar essential devices externally. Stopping ProfSvc only prevents logins to non-admin accounts, which isn't too bad. Additionally, Windows will wait for ProfSvc before beginning the login process, ensuring windhawk can start as early as possible. |
Stopping Plug and Play only prevents installation of new devices. Existing devices continue working. I think it is subjective to say that blocking non-admin accounts is unimportant. Your grandma may disagree :P And some people say that running users under admin accounts is generally less safe practice. Also, I have not personally verified that this is true that only non-admin accounts are blocked. I am wondering, why would that be the case that admin accounts still continue working? Unfortunately I have no time to verify this at the moment. Definitely an interesting detail to keep in mind though. |
Windows has a special case to ensure admins can log on even if the user profile service breaks, since someone needs to be able to log in to fix it. It does give you a balloon about the issue telling you to fix it when you log in though. |
Notes for the current solution:
There are then two different potential use cases with this approach: