急,在线等~~~~~~WINDOWS服务程序如何让他自动启动~~~~急急急急急急急急急急急

时间:2023-02-21 23:55:00
我写了一个服务,打算开机自动运行,StartType=Automatic,Account=LocalSystem,可开机后看到服务是启动状态,然后过了会儿又变成停止状态了,也就是说他开了又关了,但是如果我现在手工把他开起来,则不会再变成停止状态,这通常是什么原因造成的

另问一个问题,如何把这个服务程序打包到其他机器上去,因为如果手工部署用INSTALLUTIL的话,只有我们做程序的才知道怎么用啊

急,在线等,大家帮忙拉

9 个解决方案

#1


既然可以看到服务是启动状态那,说明他是自动启动了。那么可能是你的程序可能那里又中断了服务,那么,你应该好好检查你的程序,我想不是StartType=Automatic的问题。

#2


但是我自己手工点启动,却不会中断啊,

#3


保持关注
俺现在也在做服务

#4


第一个问题解决了,我加了延时,等计算机启动完毕后再执行,就可以了,估计我用自己写的服务去检测系统自带的服务的时候,服务没开启,估计系统服务也有先后的关系的,所以程序出错,服务有错就自动停止了。但是第2个问题怎么解决,就是安装的问题,我在这里抛砖,希望有经验的兄弟给块玉啊

#5


用.NET自带的工具打包,不过要在ProjectInstaller中加入下面的语句让它安装完后自动启动服务
    Private Sub ServiceInstaller1_AfterInstall(ByVal sender As Object, ByVal e As System.Configuration.Install.InstallEventArgs) Handles ServiceInstaller1.AfterInstall
        Dim myService As New ServiceProcess.ServiceController(ServiceInstaller1.ServiceName)
        myService.Start()
        myService.Dispose()
    End Sub

#6


请问高手怎么注册windows服务啊 ???我自己写了一个服务,根据帮助中的installutil 服务名
但是不知道在哪里输入installutil 命令啊 ???
急....

#7


第二个问题有很多种方法,介绍个最简单的吧
程序安装完成后,取得要作为服务的程序所在的路径,然后在注册表
HKLMSOFTWAREMicrosoft WindowsCurrentVersionRunServices
下新建字串,其值为那个程序的路径就可以了!

#8


对了,补充一点,没写完整,程序运行时先查找有无那个健值,如果有则跳过,没有则添加,这是最简单的,可以在代码中实现,但性能和效率不是最好的!

#9


用这个API也可以注册为系统服务
Public Declare Function RegisterServiceProcess Lib "kernel32" (ByVal
ProcessID As Long, ByVal ServiceFlags As Long) As Long
Public Declare Function GetCurrentProcessId Lib "kernel32" () As Long
你可以把程序打包,用什么都可以,最好是INSTALLANYWHERE,不错的一个软件。然后在程序中写我上面介绍的代码,让它自动注册就可以了~

#1


既然可以看到服务是启动状态那,说明他是自动启动了。那么可能是你的程序可能那里又中断了服务,那么,你应该好好检查你的程序,我想不是StartType=Automatic的问题。

#2


但是我自己手工点启动,却不会中断啊,

#3


保持关注
俺现在也在做服务

#4


第一个问题解决了,我加了延时,等计算机启动完毕后再执行,就可以了,估计我用自己写的服务去检测系统自带的服务的时候,服务没开启,估计系统服务也有先后的关系的,所以程序出错,服务有错就自动停止了。但是第2个问题怎么解决,就是安装的问题,我在这里抛砖,希望有经验的兄弟给块玉啊

#5


用.NET自带的工具打包,不过要在ProjectInstaller中加入下面的语句让它安装完后自动启动服务
    Private Sub ServiceInstaller1_AfterInstall(ByVal sender As Object, ByVal e As System.Configuration.Install.InstallEventArgs) Handles ServiceInstaller1.AfterInstall
        Dim myService As New ServiceProcess.ServiceController(ServiceInstaller1.ServiceName)
        myService.Start()
        myService.Dispose()
    End Sub

#6


请问高手怎么注册windows服务啊 ???我自己写了一个服务,根据帮助中的installutil 服务名
但是不知道在哪里输入installutil 命令啊 ???
急....

#7


第二个问题有很多种方法,介绍个最简单的吧
程序安装完成后,取得要作为服务的程序所在的路径,然后在注册表
HKLMSOFTWAREMicrosoft WindowsCurrentVersionRunServices
下新建字串,其值为那个程序的路径就可以了!

#8


对了,补充一点,没写完整,程序运行时先查找有无那个健值,如果有则跳过,没有则添加,这是最简单的,可以在代码中实现,但性能和效率不是最好的!

#9


用这个API也可以注册为系统服务
Public Declare Function RegisterServiceProcess Lib "kernel32" (ByVal
ProcessID As Long, ByVal ServiceFlags As Long) As Long
Public Declare Function GetCurrentProcessId Lib "kernel32" () As Long
你可以把程序打包,用什么都可以,最好是INSTALLANYWHERE,不错的一个软件。然后在程序中写我上面介绍的代码,让它自动注册就可以了~