Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

Do away with Classic Shell Service!

2012-10-10
2012-10-29
  • 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.

     
  • Ivo Beltchev
    Ivo Beltchev
    2012-10-10

    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
    stopping you.

    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.

     
    1. 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
      not.)

    2. Certainly, but I am sure that many users also want a smaller memory footprint and would prefer it.

    3. 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:
      http://stackoverflow.com/questions/767490/windows-service-or-scheduled-task-
      which-one-do-we-prefer

      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
      already written...

     
  • xpclient
    xpclient
    2012-10-11

    @antikapitalista,
    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?

     
  • Ivo Beltchev
    Ivo Beltchev
    2012-10-12

    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
    program.

    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.

     
  • xpclient
    xpclient
    2012-10-12

    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.