Run only one program on Windows at startup without any other services

Modify the following registry value to start a program other than Windows Explorer.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\shell

As for the services, use the services.msc.

Warning: You may run into various issues without many of the services running.


You cannot disable all services. Many services are critical to the basic functions of your system, including Explorer.

The good news is that the services that CAN be disabled are easy to disable.

Open Services and go to each one in turn and attempt to set its startup state to Disabled.

Restart your computer frequently to make sure the computer loads OK with the new batch of disabled services.

Repeat until you've cleaned everything out that can be cleaned out.

A good resource for determined services that CAN be disabled is BlackViper: http://www.blackviper.com/service-configurations/black-vipers-windows-7-service-pack-1-service-configurations/

A lot of careful research and feedback goes into BlackViper, and the advice there can save you lots of effort and pain.


Most of the services (if not all) can be controlled via value Start under registry key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<service name> Please note that CurrentControlSet in aforementioned registry key is link to either ControlSet001 or ControlSet002 as described here.

Now the value "Start" can have values from 0 to 4 (sc config for reference):

  • 0 - boot - Specifies a device driver that is loaded by the boot loader.
  • 1 - system - Specifies a device driver that is started during kernel initialization.
  • 2 - auto - Specifies a service that automatically starts each time the computer is restarted and runs even if no one logs on to the computer.
  • 3 - demand (manual) - Specifies a service that must be started manually. This is the default value if start= is not specified.
  • 4 - disabled - Specifies a service that cannot be started. To start a disabled service, change the start type to some other value.

While going to that mad service disabling spree, first check service start value and mark it down, prepare yourself with alternative booting media (any Windows installation media will do) in case system becomes unbootable due to necessary service disabled.

If shit happens, boot from external media, switch to console (shift+F10 IIRC) > regedit > point to HKEY_LOCAL_MACHINE and "load hive" > <systemdrive>:\Windows\System32\config\SYSTEM. Now locate under loaded hive ControlSet001\Services and you can undo previous mistakes with setting Start values to defaults.

Here is a little batch script to list all services "default" (default until modified by user, which then becomes "default") values under HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services:

@echo off
setlocal enabledelayedexpansion
set KEY=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
for /f "tokens=5 delims=\" %%a in ('reg query !KEY! /s /v "start"') do     (
set SERVICE=%%a
for /f "tokens=3" %%b in ('reg query !KEY!\!SERVICE! /v "start" ^| findstr /i "start"') do (
        echo !KEY!\!SERVICE! - "Start" %%d
    )
)
endlocal

Paste the above code to defaultservices.bat and run it as defaultservices.bat > defaultservices.txt to generate text file, which can be utilized later to see service default values.