2017-08-16 49 views
0

我已经创建了一个小脚本文件来测试。无法使用NSSM在窗口10中启动服务

这是我的script.bat文件。

sc create myService binpath= C:\Users\Admin\Desktop\test.bat start= auto 

这是我test.bat的文件。

echo "Welcome to Wizard" 

问题陈述

我无法从控制面板服务节启动该服务。

我得到以下错误。

[SC] StartService失败1053: 该服务未及时响应启动或控制请求。

这就是为什么我使用nssm。

什么现在发生的事情是,当我运行下面的PowerShell上

命令。\ NSSM安装为myService,我会出现对话框。我给它的脚本文件的路径,然后单击安装服务。

成功安装服务后。我进入控制面板 - >服务 - >点击开始对为myService但它得到停下来,下面的对话框出现

enter image description here

  1. 我该如何解决这个问题?
  2. 是否有任何其他的方式来做到这一点,而无需手动操作,也不需要使用第三方工具。
  3. 我在窗口10上做了所有这些工作。我是否需要任何服务器来执行此任务?

注:我不能在我的情况下使用Always up或window scheduler。

+0

可能是因为您的脚本立即退出。你为“退出行动”配置了什么? –

+0

@HarryJohnston我还没有配置任何东西,我只是想创建一个基本的文件,因为我是批处理脚本中的新成员,但将来我想运行logstash作为后台服务。 –

+0

您是否看到有关需要使用特定版本的Windows 10用户的评论?:https://nssm.cc/download - “Windows 10创作者更新 2017-04-26:Windows 10创作者更新的用户应该使用为了避免服务无法启动的问题,如果由于某种原因您不能使用该版本,您还可以在注册表中设置AppNoConsole = 1,注意期望控制台窗口的应用程序可能会出现意外情况。 – andyb

回答

1

NSSM行为是由脚本几乎立即终止引起的。试试下面的脚本:

echo Hello World pause

这应使服务能够启动,但你不一定会看到一个控制台窗口。即使您勾选'允许服务与桌面互动',它也不会与您的桌面互动!

Windows实施“会话零隔离”作为安全功能,这基本上阻止了服务与终端用户桌面的交互。

就解决方案而言,可以使用Visual Studio很简单地编写Windows'服务'应用程序。它不在我的专业领域,但基于我熟悉的Windows应用程序,您通常会运行一个用户模式应用程序来提供桌面交互。用户模式应用程序可以与服务应用程序托管的服务进行交互。

+0

我已经添加了暂停语句,但行为相同:(我也试图运行exe文件而不是蝙蝠,但问题仍然是相同的。对于在VS中开发服务,现在没有选项,我会看到你给我的链接 –

+0

通过从Windows资源管理器启动批处理文件(双击它),验证批处理文件的行为是否符合预期,您应该看到一个控制台窗口,显示消息,然后按提示按钮按一个键,控制台窗口将关闭 – andyb

+0

当我按下某个键时,我添加了一个回显的批处理文件打开和关闭,但是我正在创建服务的文件没有打开(脚本。 bat)sc创建myService binpath = C:\ Users \ Admin \ Desktop \ test.bat start = auto –