我已经注册了一个customService
名为自动(延迟启动)作为其启动类型选项。它是使用国家安全监测中心使用以下命令
nssm install customService
它运行一个简单的批处理文件,customService.bat
包含两个简单的 Windows 命令
cd D:\To\Custom\Path
type NUL > 1.txt
该服务的作用是运行此批处理文件,它将在 \To\Custom\Path 文件夹中创建一个空文本文件 1.txt。
问题
当我关机和开机我的机器没有创建 1.txt。但是在 services.msc 中,它显示customService
状态为正在运行。为什么会发生这种情况?
我的发现
- 问题发生时,在事件日志 > Windows 日志 > 应用程序中,没有产生任何错误。最后记录的日志来自
MSSQLSERVER
信息级别和事件 ID 为 8128 的服务。已经过去了整整 15 分钟。 - 在
services.msc
>customService
状态中显示正在运行。当我右键单击它时,我至少有 3 个选项:停止、暂停和重新启动。当我单击时,该服务已成功运行(即创建了 1.txt)Restart
。 - 在
services.msc
>customService
属性 > 依赖项选项卡中,显示无依赖性 - 我完全没有问题重新开始我的电脑(即创建了1.txt。)
Windows 规格
运行命令时,我已Windows 10 Version 1607 (OS Build 14393.576)
看到如下内容winver
。此外,我已安装所有更新。
答案1
您如何定义这项服务? 文档建议您运行如下命令:
nssm set UT2003 Application C:\games\ut2003\System\UCC.exe
nssm set UT2003 AppDirectory C:\games\ut2003\System
(替换批处理文件的路径)
无论如何,NSSM 在这里听起来有点矫枉过正。为什么不直接使用任务计划程序呢?
答案2
免责声明:这只是一个粗略的解决方法,我希望它对其他人有用,而不是修复。解决方法是改用任务计划程序。
我非常怀疑这个问题是由于用户帐户问题造成的,尽管我没有任何具体的书面证据
当我尝试使用时,我产生了这种怀疑任务计划程序启动我的 .bat 文件而不是使用服务。当我将其设置为 时Run on system startup
,启动后,我创建的任务的“历史记录”选项卡中出现一条警告,提示Task Scheduler did not launch task because user "(NONE)" was not logged on when the launching conditions were met
。因此,我认为此问题与用户帐户问题有某种关联,尽管我可能错了,因为当我使用服务启动批处理文件时,事件日志中没有出现此类警告/错误。
所以我将它设置为运行after logged on
,在启动时运行此任务没有任何问题。我不确定这种设置是否也可以为服务设置。这也可能是人们倾向于使用该设置的原因自动(延迟启动)
请注意,将此任务设置为运行after logged on
将使其在您退出登录后运行。当您退出登录后,它将不会运行锁定你的计算机,