Windows 10:即使设置为自动(延迟启动),服务似乎也不会在启动时执行

Windows 10:即使设置为自动(延迟启动),服务似乎也不会在启动时执行

我已经注册了一个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状态为正在运行。为什么会发生这种情况?


我的发现

  1. 问题发生时,在事件日志 > Windows 日志 > 应用程序中,没有产生任何错误。最后记录的日志来自MSSQLSERVER信息级别和事件 ID 为 8128 的服务。已经过去了整整 15 分钟。
  2. services.msc>customService状态中显示正在运行。当我右键单击它时,我至少有 3 个选项:停止、暂停和重新启动。当我单击时,该服务已成功运行(即创建了 1.txt)Restart
  3. services.msc>customService属性 > 依赖项选项卡中,显示无依赖性
  4. 我完全没有问题重新开始我的电脑(即创建了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将使其在您退出登录后运行。当您退出登录后,它将不会运行锁定你的计算机

相关内容