The Non-Sucking Service Manager is a service helper that installs programs and custom scripts as services, allowing them to persistently run in the background. Its last stable release was timestamped on Aug. 31, 2014, yet it continues to be an indispensable tool in professional development and computing.
It’s used for more than installing services, too. NSSM can also shut down, delay, restart, and even uninstall services. It also provides configuration choices at all stages of service execution, allowing me to choose what happens when the service launches and exits.
I had actually used NSSM in one of my previous articles, but back then, I didn’t have the time to dig into it. And honestly, I didn’t think that a tool released as far back as 2007 would still be useful today. But if there’s anything that the internet has taught, it's thatancient Windows Commands can still be useful.
Services vs processes, how are they different?
In Windows, every service is a process, but not all processes are services
But why install things as services, and how are they different from processes? The simplest answer is that the process is any instance of a program that runs inside Windows. Every browser session (including its tabs), Steam, and Teams all have their own processes (or multiple processes, called process trees). The biggest difference between a process and a service is that a process may or may not interact directly with the user, whereas services run strictly in the background. Also, Windows manages services using a dedicated system called theWindows Service Control Manager (SCM), which often groups multiple services into a single process in Task Manager.
Why not just use the Windows Task Scheduler?
Installing a process as a service provides better uptime
If NSSM is just another way to automatically launch and run services, why not just use the Windows Task Scheduler, which seemingly performs the same function? That’s because while Task Scheduler’s capability runs tasks at specific events or schedules, it doesn’t have the permanence that services do.
Unlike Task Scheduler, NSSM installs services that integrate with the SCM to continuously run background services before login, after logout, and auto-restart if they crash. The services can also apply to all users, whereas Task Scheduler only operates on a per-user basis since it requires login. The most powerful aspect of NSSM, however, is its ability to allow users to install custom scripts and tools as services. The bottom line is that if a process needs to start once and run continuously (like a local server or file monitor), installing it as a service is a better bet. If you only need it to run once and exit on a per-user basis, then Task Scheduler is a better choice.
What does the set-up look like?
It’s way easier than you think

NSSM does not need any installation; just navigate to or enter its file path in the Windows Command Prompt to invoke its commands (to make its access global in my account, I’ve added it as an environment variable, so I can call on it from anywhere). While it can be completely managed through the Windows Command Prompt, I prefer using its graphical interface, which can be invoked using the “nssm install” command. However archaic the interface may be, its tabs, options, and text boxes make it feel less daunting.
When I set up my WindowsRustDesk server using my clients, I used NSSM to set up the receiving and sending servers. By setting the “service_auto_start” argument, the RustDesk server can always run in the background and auto-restart when it fails.
Additionally, for my remote servers, I have a watchdog script that continuously pings them and alerts me when they don’t reply to a certain number of pings. Installing the script as a service means I don’t have to run the script manually every time I boot up my PC. Since the script runs in the background, I can also copy the script’s output (in my case, the timestamps) to a log file using NSSM’s “AppStdout” command, as well as any error messages using the “AppStderr” command.
In an article I wrote a few weeks ago, I talked about how to use Task Scheduler to schedule cleanup and maintenance tasks. While the commands and scripts in that article can be turned into services, this is an instance where I believe Task Scheduler is superior, since all the cleanup operations run infrequently at specific time triggers. Because they’re designed to run and exit, Task Scheduler is better for that. However, if I needed to monitor a folder and continuously prune its contents, then installing that script as a service would definitely help.
A closing word on security
Some call it a riskware
There are so many more use cases where NSSM is helpful. Beyond personal automation, it’s widely present in everything from automated Windows deployments to point-of-sale systems. However, its powerful ability to install services is also its greatest weakness, as it’s been exploited by threat actors to deploy malware such as crypto miners, backdoors, and other not-so-fun payloads. Because of this, somesecurity vendors classify NSSM as riskware–legitimate software that can be easily misused. Additionally, since modified versions of NSSM exist for malicious purposes, it’s important to download it only from the official source.
I'm still figuring out new ways to use NSSM. If this tool is a part of your workflow, leave a comment and I'd love to give your suggestions a spin.








