Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法控制使用sc创建的Windows服务_Windows_Batch File_Service - Fatal编程技术网

无法控制使用sc创建的Windows服务

无法控制使用sc创建的Windows服务,windows,batch-file,service,Windows,Batch File,Service,我使用包含以下说明的批处理文件为我的应用程序创建了Windows服务: sc create <name> binPath= "C:\my\path\" DisplayName= "MyName" 或 净启动 这些命令失败,并显示类似的错误消息 这种情况在我测试的所有Windows(直到Windows 7)上都会持续发生。重新启动机器不会改变任何事情 成功创建并运行的服务无法启动或停止(甚至无法识别其状态)的任何原因?(包括问题注释中的信息。) Linux守护进程通过信号控制 Wi

我使用包含以下说明的批处理文件为我的应用程序创建了Windows服务:

sc create <name> binPath= "C:\my\path\" DisplayName= "MyName"

净启动
这些命令失败,并显示类似的错误消息

这种情况在我测试的所有Windows(直到Windows 7)上都会持续发生。重新启动机器不会改变任何事情

成功创建并运行的服务无法启动或停止(甚至无法识别其状态)的任何原因?

(包括问题注释中的信息。)

Linux守护进程通过信号控制

Windows服务有一个完整的模型。流程需要在启动时连接到服务控制管理器(SCM:
services.exe
流程),以提供回调。此回调是服务的主要条目,也是SCM发出重要事件信号的方式(例如,服务应该停止)

上介绍了这一点,并且.NET具有特定的支持(通过子类化)

也许可以找到一个提供SCM集成并启动您的程序的帮助程序,但它可能只是在SCM上终止您的进程(*Windows上不存在nix样式的信号)并发送停止。

(包括问题注释中的信息。)

Linux守护进程通过信号控制

Windows服务有一个完整的模型。流程需要在启动时连接到服务控制管理器(SCM:
services.exe
流程),以提供回调。此回调是服务的主要条目,也是SCM发出重要事件信号的方式(例如,服务应该停止)

上介绍了这一点,并且.NET具有特定的支持(通过子类化)


可能会找到一个提供SCM集成并启动您的程序的帮助程序,但它可能会在发送停止的SCM上终止您的进程(*Windows上不存在nix样式的信号)。

您可以包括程序接收SCM通知的代码吗?(即,如果是Win32,则传递给
RegisterServiceCtrlHandler的函数;如果是.NET,则传递给
OnStart
等的处理程序,在
ServiceBase
子类中。)我的程序不做这类事情。。。它是封装在.exe中的跨平台java应用程序。我的程序为什么要实现这样的处理程序方法呢?Linux机器可以在任何时候停止和启动任何服务,而根本不需要与该服务通信。要成为Windows的服务,您的应用程序需要与Windows SCM通信。您可能可以使用一个包装进程来代理您的内容。感谢您的回复,我不知道Windows上还有这个额外的通信层。我会调查的。同时,将以上内容作为答案发布,我将接受。助手程序的一个候选者:您能提供程序接收SCM通知的代码吗?(即,如果是Win32,则传递给
RegisterServiceCtrlHandler的函数;如果是.NET,则传递给
OnStart
等的处理程序,在
ServiceBase
子类中。)我的程序不做这类事情。。。它是封装在.exe中的跨平台java应用程序。我的程序为什么要实现这样的处理程序方法呢?Linux机器可以在任何时候停止和启动任何服务,而根本不需要与该服务通信。要成为Windows的服务,您的应用程序需要与Windows SCM通信。您可能可以使用一个包装进程来代理您的内容。感谢您的回复,我不知道Windows上还有这个额外的通信层。我会调查的。同时,将以上内容作为答案发布,我将接受。助手计划的一名候选人:
net stop <name>
net start <name>