网站搜索

如何在 Windows 中将任何程序作为后台服务运行


如果您像大多数 Windows 用户一样,您会在启动 Windows 时运行许多很棒的小实用程序。虽然这适用于大多数应用程序,但有些应用程序甚至在用户登录 PC 之前就可以启动。为此,您需要将该应用程序作为 Windows 服务运行。

Windows 服务是一类特殊的程序,配置为在后台启动和运行,通常没有任何类型的用户界面,也不需要用户登录 PC。许多游戏玩家和高级用户都知道它们是您用来帮助加快系统速度而禁用的东西,尽管实际上已经没有必要了。

将应用作为服务运行的主要优势在于,您可以在用户登录之前启动程序。这对于提供您希望在离开计算机时可用的重要服务的应用尤为重要。

一个完美的例子是 Plex,这是一个媒体服务器应用程序,可以将本地内容流式传输到您拥有的几乎任何设备。当然,您可以让它像普通程序一样放在系统托盘中,但是如果计算机由于断电或计划更新而重新启动怎么办?在您重新登录 PC 之前,Plex 将不可用。如果你在爆米花变冷时不得不跑到另一个房间来启动 Plex,那会很烦人,如果你不在城里并试图通过互联网流式传输你的媒体,那会非常烦人。将 Plex 设置为服务可以解决该问题。

在开始之前,您应该了解将应用作为服务运行的几个重要注意事项:

  • 该应用不会在系统托盘中放置图标。如果您需要应用程序的定期可用界面,它可能不适合作为服务运行。
  • 当您需要进行配置更改或更新时,您需要停止服务,将程序作为常规应用运行,执行您需要执行的操作,停止程序,然后再次启动服务。
  • 如果该程序已设置为在 Windows 启动时运行,您需要禁用它,这样您就不会同时运行两个实例。大多数程序在界面中都有一个用于切换此设置的选项。其他人可能会将他们自己添加到您的“启动”文件夹,因此您可以从那里删除他们。

准备好了吗?让我们谈谈如何设置它。

第一步:安装 SrvStart

要将应用程序作为服务运行,您将需要一个小型的第三方实用程序。有几个,但我们最喜欢的是 SrvStart。它最初是为 Windows NT 设计的,并且可以与从 Windows XP 开始的任何版本的 Windows 一起使用。

要开始使用,请转到 SrvStart 下载页面并获取该实用程序。下载仅包含四个文件(两个 DLL 和两个 EXE 文件)。没有安装程序;相反,将这些复制到您计算机的 C:\Windows 文件夹中,将这些复制到您的主 Windows 文件夹中以“安装”SrvStart。

我们还将假设您已经安装并设置了任何您将要转变为服务的程序,但如果您还没有,现在也是这样做的好时机。

第二步:为新服务创建配置文件

接下来,您需要创建一个配置文件,SrvStart 将读取该文件以创建服务。您可以使用 SrvStart 做很多事情,您可以在文档页面上阅读所有配置选项的完整详细信息。对于这个例子,我们将只使用两个命令:startup,它指定要启动的程序,以及 shutdown_method,它告诉 SrvStart 如何在相应的时候关闭程序服务停止。

启动记事本并使用以下格式创建配置文件。在这里,我们使用的是 Plex,但您可以为任何要作为服务运行的程序创建一个文件。 startup 命令只是指定可执行文件所在的路径。对于 shutdown_method 命令,我们使用 winmessage 参数,它会导致 SrvStart 向该服务打开的任何窗口发送 Windows 关闭消息。

[Plex]
startup="C:\Program Files (x86)\Plex\Plex Media Server\Plex Media Server.exe"
shutdown_method=winmessage

显然,根据您要启动的程序调整路径和名称。

将新配置文件保存在任何您喜欢的位置,并将 .txt 扩展名替换为 .ini 扩展名。记下文件名,因为我们将在下一步中需要它。为了便于在命令提示符下键入,我们建议将此文件临时保存在您的 C: 驱动器上。

第三步:使用命令提示符创建新服务

下一步是使用 Windows 服务控制器 (SC) 命令根据配置文件中的条件创建新服务。通过右键单击“开始”菜单(或按 Windows+X)打开命令提示符,选择“命令提示符(管理员)”,然后单击“是”以允许它以管理权限运行。

在命令提示符下,使用以下语法创建新服务:

SC CREATE <servicename> Displayname= "<servicename>" binpath= "srvstart.exe <servicename> -c <path to srvstart config file>" start= <starttype>

该命令中有几件事需要注意。首先,每个等号 (=) 后面都有一个空格。这是必需的。此外,<servicename> 值完全由您决定。最后,对于 <starttype> 值,您需要使用 auto 以便服务随 Windows 自动启动。

因此,在我们的 Plex 示例中,命令将如下所示:

SC CREATE Plex Displayname= "Plex" binpath= "srvstart.exe Plex -c C:PlexService.ini" start= auto

是的,您没有看错:我使用了 C:PlexService.ini 而不是 C:\PlexService.ini 。该命令要求您删除斜杠。

当您运行该命令时,如果一切顺利,您应该会收到一条 SUCCESS 消息。

从现在开始,您的新服务将在 Windows 启动时运行。如果您打开 Windows 服务界面(只需单击“开始”并键入“服务”),您就可以像其他任何服务一样查找和配置新服务。

这就是它的全部。如果您有从 Windows 启动的应用程序,并且您希望它们在不需要用户登录的情况下启动,那么将任何应用程序变成一项服务就足够容易了。我们只是刚刚触及了创建和运行新服务的基本方法,但是您可以使用 SrvStart 做很多事情来微调服务的运行方式。如果您想了解更多信息,请务必查看文档。