Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo
Why don't you do away with the ClassicShellService.exe on Windows 8?!
Instead of running an otherwise useless service all the time, you could use
the Task Scheduler (taskschd.msc) to start ClassicStartMenu.exe at user logon.
A service is the fastest way to respond to a logon event. Programs launched
through the Run registry key, the Startup folder, or the task scheduler take
few seconds to launch. They are delayed on purpose to prevent multiple
processes from competing for OS resources at the same time.
Many users want the fasterst response possible. If you are not one of them,
kill the service and run ClassicStartMenu.exe any way you see fit. Nothing is
Also the scheduler service is not guaranteed to be enabled. In the general
case I can't depend on it. If you are confident it is enbaled in your case, of
course you are free to use it.
Perhaps yes, although the difference in speed is negligible and hardly noticeable (although it may have been caused by very few programs launched from the Run registry keys or the StartUp folders). However, I doubt that they are purposely delayed; I believe that Windows launches them in parallel and lets them compete for OS resources.
Have you measured the difference yourself?
(I do not know how the this project started; maybe you considered it, maybe
Certainly, but I am sure that many users also want a smaller memory footprint and would prefer it.
Ugh... I would say that you could bet more on the Task Scheduler running than Classic Shell Service running. Not only is the Task Scheduler set to run by default, but it is also set to restart on failure twice (but give up on subsequent failures), unlike Classic Shell Service, and its settings are clearly meant not to be changed by the user (from the Services snap-in (services.msc); they can be changed only in the registry). In fact, at least in Windows 8, quite a lot of the functionality of the OS depends on it, many system components rely on it. (To give you an idea of how important it is, just open a command prompt (cmd.exe) and run "Schtasks.exe /Query".)
Also, the suggestion is not so crazy, as many of the people surveyed here:
would also recommend using the Task Scheduler for such a thing... however, I
understand that the main difference is that the Classic Shell Service is
1. A service is a very right choice made by Ivo. On Windows 8, desktop and loading of startup items are delayed even more than Windows 7 or Vista. Probably, because desktop is secondary to MS now. Yes, the delay is considerably large and easily noticeable. With a service, the desktop can be shown as fast as possible.
2. You could simply create a shortcut to "net stop classicshellservice" in your Task Scheduler to stop it in fact if you think it's taking up unnecessary resources.
3. One limitation of Task Scheduler is start tasks started with it are with Below Normal priority. You certainly wouldn't want your Classic Start Menu to always run at Below Normal priority, would you?
I did a few tests on Windows 8 RTM, and both the Run key and the Startup
folder are terribly slow - more than 10 seconds from login to starting the
The scheduler seems quite fast, so it may be a viable alternative to a
service. However my installer system (WiX) doesn't natively support the
scheduler, so it will be a lot of work to make it work reliably - like for
example to handle correctly all cases of Install/Uninstall/Repair, etc, as
well as incomplete installs.
To xpclient's point about the process priority. This doesn't matter because
the ClassicStartMenu.exe process doesn't do much. It simply hooks the Explorer
process. The start menu runs inside Explorer.
Bottom line, as you said, the service is already written and well tested. It
is dormant most of the time and wakes up for a short time during log on. It
doesn't use any system resources to speak of.
Of course you can manually create a task that launches ClassicStartMenu.exe on
logon and kill the service if you wish so.
Another issue is reliably showing the desktop. When I had set up Classic Shell
to start using Task Scheduler at startup before the service was written, half
of the times, it failed to show the desktop, sometimes it worked. I use auto
logon so maybe it was logging in too fast. But the service makes it work 100%
of the times.