历史
我正在构建一个Windows Service
作为我Platform Application
处理更新和服务器功能的一部分,因此它可以安装在与安装位置不同的机器上Client Application
。它使用 UDP 发送和接收广播消息,使用 TCP 处理更敏感和最重要的消息。
客观的
我希望最终用户可以轻松地安装我的应用程序,只需在计算机中复制可执行文件并在执行它们时即可。主应用程序应该验证用户是否是管理员,创建配置文件,然后安装 Windows 服务并运行它,因此当非管理员用户登录时,他们不会收到我的应用程序关于管理权限的任何错误。目标是在不需要现有技术人员的情况下进行大多数配置,因为数据库将是远程的。
问题
我的服务正在使用该命令正常安装,MyService.exe /install
但它没有自动启动。启动它的唯一方法是继续Control Panel > Admin Tools > Services
手动操作。我试图通过我的应用程序调用,但我在 shell 中net start MyService
收到。invalid service name
我尝试了服务的executable name
, thedisplay name
和 the object name
,但没有一个起作用。这是我的 TService 的对象:
object ServiceMainController: TServiceMainController
OldCreateOrder = False
OnCreate = ServiceCreate
DisplayName = 'PlatformUpdateService'
Interactive = True
AfterInstall = ServiceAfterInstall
AfterUninstall = ServiceAfterUninstall
OnShutdown = ServiceShutdown
OnStart = ServiceStart
OnStop = ServiceStop
Height = 210
Width = 320
问题
我应该怎么做才能通过代码而不是用户手来启动我的服务?如果我可以在我的客户端应用程序中执行此操作,或者在OnServiceAfterInstall
调用后自行执行,那将是最好的。