Download

Unzip anywhere and run

Version 0.1.0. No installer, nothing written to the registry, and no administrator rights needed to look. 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

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 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.
  • Nothing 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.

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 nothing 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 810 services. Your figures will differ - the number of services, the disk and the processor all move them.

About a quarter of a second

for bws list to read the whole machine.

About eight tenths of a second

from starting the window to the list being on screen.

About 100 MB

for the window - half of it the Windows user interface framework, before any of this tool's own code runs.

About 16 MB

for the command line over the same machine.