网管小贾 / sysadm.cc
最近碰上一个闹心事儿,用户电脑的某些注册表项老是自动变化,导致一些功能无法正常工作。
于是我做了个简单的程序,定时监视并修正注册表项。
不过这程序跑的有点心酸。
写在注册表的 Run 启动项中,但容易被删除。
写在任务计划中,程序进程同样容易被咔嚓。
最后能想到的,只能是将程序变成服务在后台跑了。
关于 Windows 服务不得不说的秘密
我们想要说明白 Windows 服务的一些特殊性,那就必须将它拿来与普通应用程序相比较,这样我们立刻就理解了。
首先,Windows 服务是在系统后台悄悄地运行的,从表面上你是看不到它的,它也没有界面。
其次,Windows 服务是以 SYSTEM 或其他系统用户运行的,普通用户不能直接关闭程序。
最后,Windows 服务必须注册到系统中才能正常使用,并且服务的启动、停止等操作都必须有专门的消息接口来操控,说白了就是服务有自己的一套操作规范。
有的小伙伴会问,那我随便拿一个程序过来,然后将它注册成服务不就可以了嘛!
在这里我想强调的是最后一点,实际上没那么简单,并不是随便一个应用程序就可以将它作为服务运行的。
即使你注册成功,这个程序也未必启动得起来。
Windows 有自带的 sc 命令,虽然绿色环保,操作起来也不是特别麻烦,但是被注册的应用程序必须要符合系统服务规范才行,这个门槛就有点高了,我这够不着。
还有 instsrv+srvany 这对黄金搭档,也还能用,不过就是不能守护进程,容易挂进程。
不过现在我们遇到了一个很牛叉的程序,它号称可以将任何程序当作服务来跑,它就是 nssm 。
那么这个 nssm 是不是在吹牛呢?
是业界奇迹,还是弥天大谎,接下来我们就一同见证!
服务助手界的扛把子 NSSM
除了号称可将任意应用程序作为服务运行之外,nssm 还怒怼了其他同行,比如 srvany 等。
说有时服务看起来跑得欢,实际早已是死翘翘,但助手程序却浑然不觉,等等诸如此类问题,反正这也不行那也不行,总之诟病无数。
反观 nssm 就没有这些个毛病,并且做得还更好,当程序挂了,它会自动重启服务,表现良好。
同时还有进度记录到系统事件日志,还提供图形服务等等。
虽然 nssm 的最终稳定版 2...