让Windows程序在后台静默运行的方法

发布于 2021-11-04  30 次阅读


在Windows系统中,程序默认是要有窗口显示的,而且运行中的任务一般还要在任务栏上有所反应,这样便于切换操作。不过有些时候我们可能只想它默默地在后台运行,那么该如何隐藏程序的运行界面呢?

第一种方法:vbs方式隐藏

新建一个vbs后缀的空白文件,然后粘贴以下代码:

Dim WShell
Set WShell = CreateObject("WScript.Shell")
WShell.Run "background.exe", 0
Set WShell = Nothing

替换以上background.exe为需要后台运行的可执行文件/程序(如:exe)路径,如把此vbs和需运行的文件放在同一文件夹,则只需指定文件名称即可。
保存此vbs,双击执行,指定的可执行文件的进程将在后台默默运行,可在任务管理器中看到该程序进程。

第二种方法:注册为服务

要把应用程序添加为服务,你需要两个小软件:Instsrv.exe和Srvany.exe。Instsrv.exe可以给系统安装和删除服务,Srvany.exe可以让程序以服务的方式运行。这两个软件都包含在Windows NT Resource Kit里。
srvany.exe可用于将任何EXE程序作为Windows服务运行。也就是说srvany只是其注册程序的服务外壳,这个特性对于我们来说非常实用,我们可以通过它让我们的程序以SYSTEM账户启动,或者实现随机器启动而自启动,也可以隐藏不必要的窗口,比如说控制台窗口等等。
注意:如果是WINDOWS64位的操作系统需要将这两个EXE拷贝至C:\Windows\SysWOW64,不是C:\Windows\System32\

如何使用

当你获取到srvany后并决定将某程序作为服务启动后,请先将srvany安装为系统服务,具体的安装方法有很多,这里使用instsrv,语法如下:

安装:instsrv ServiceName C:\Windows\System32\srvany.exe
卸载:instsrv ServiceName remove

(ServiceName 即你自己定义的服务名称,可以是要作为系统服务启动的应用程序的名称。)
安装完毕后,我们需要对srvany.exe进行配置,以便于能够加载我们指定的程序,配置的方法是,开始 - 运行 - regedit,打开注册表,定位到下面的路径。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ServiceName
如果该服务名下没有Parameters项目,则对服务名称项目右击新建项,名称为Parameters,然后定位到Parameters项,新建以下几个字符串值。
名称 Application 值为你要作为服务运行的程序地址。
名称 AppDirectory 值为你要作为服务运行的程序所在文件夹路径。
名称 AppParameters值为你要作为服务运行的程序启动所需要的参数。