Download

Unzip and run, or install

Version 0.5.0. The archives need no installer and write nothing to the registry, and looking needs no administrator rights. A signed installer puts both programs on the whole machine instead. Free and open source under GPL-3.0.

What is in the release

FileWhat it is
BetterWindowsServices-win-x64.zipThe window: BetterWindowsServices.exe, one self-contained executable with its own .NET runtime inside
bws-cli-win-x64.zipThe command line: bws.exe, one self-contained executable, for scripts, scheduled tasks and CI
BetterWindowsServices-win-x64.msiThe installer: both programs in Program Files for every account on the machine, the window in the Start menu and bws on the machine's PATH

Take one or both - they are two clients of the same engine and neither needs the other. On a server, the command line is the smaller of the two and does everything the window does.

The installer carries exactly what the two archives hold. It installs silently with msiexec /i BetterWindowsServices-win-x64.msi /qn, a newer version installs over an older one, and it closes nothing that is running - so close the window and any running bws before you upgrade, because a copy left running can stop with an error. Uninstalling from Settings, Apps removes the programs, the Start menu entry and the PATH entry, and leaves your own files alone.

The executables carry an Authenticode signature, so Windows names the publisher instead of warning about an unknown one.

Requirements

  • Windows 10 version 1809 or later, or Windows Server 2019 or later. 64-bit only - a 32-bit process reads redirected paths and registry keys, which would quietly produce wrong answers.
  • No .NET to install. Both executables carry their own .NET runtime.
  • Administrator rights to change anything. Reading, searching, snapshots and diffs work without, with fewer entries visible and the tool saying so at the top rather than pretending the list is the whole machine.

The window keeps one file of its own - the layout you left the list in - under %APPDATA%\BetterWindowsServices. A snapshot goes where you tell bws snapshot create to put it, and into the current directory when you do not.

The program speaks English. The window reads a language file, languages\gui.<code>.json, placed beside it and chosen by the language of Windows, with no switch. A translation is therefore a contribution that can be added without rebuilding - CONTRIBUTING.md says how.

Antivirus and EDR

This tool does what an administrator does with services, and some of that is what security software watches for.

It stops and starts services, it can end the process behind one, and it reads every service's security descriptor and required privileges. An EDR that flags a process ending svchost.exe is doing its job, and a forced stop here can look exactly like that.

What it does not do, so you can check the claim: it injects nothing into any process, it packs or obfuscates nothing, it installs no service and no driver and leaves nothing running, and it opens no network connection. It is open source under GPL-3.0 and you can build both executables yourself.

If your policy needs an exclusion, exclude the two executables by file rather than a folder. The one thing worth treating with the same care as the tool itself is a snapshot file: it describes the whole machine.

Building from source

.NET 10 SDK, on Windows.

git clone https://github.com/donislawdev/BetterWindowsServices
cd BetterWindowsServices
dotnet build BetterWindowsServices.slnx -c Release
dotnet test BetterWindowsServices.slnx -c Release

Some tests read the real service control manager of the machine they run on and compare what this tool says against what sc.exe says. They are read-only. The single-file executables the releases carry are these two publishes, each one file with the runtime inside:

dotnet publish src/Bws.Cli/Bws.Cli.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
dotnet publish src/Bws.Gui/Bws.Gui.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true

They land as bws.exe and BetterWindowsServices.exe under each project's bin/Release/.../win-x64/publish/. The .pdb files beside them are debugging symbols, and nothing needs them to run.

What it costs to run

Measured on one machine with 804 services. Your figures will differ - the number of services, the disk and the processor all move them.

About a fifth of a second

for bws list to read the whole machine.

About 19 MB

for the command line over the same machine.