另问一个问题,如何把这个服务程序打包到其他机器上去,因为如果手工部署用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
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 命令啊 ???
急....
但是不知道在哪里输入installutil 命令啊 ???
急....
#7
第二个问题有很多种方法,介绍个最简单的吧
程序安装完成后,取得要作为服务的程序所在的路径,然后在注册表
HKLMSOFTWAREMicrosoft WindowsCurrentVersionRunServices
下新建字串,其值为那个程序的路径就可以了!
程序安装完成后,取得要作为服务的程序所在的路径,然后在注册表
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,不错的一个软件。然后在程序中写我上面介绍的代码,让它自动注册就可以了~
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
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 命令啊 ???
急....
但是不知道在哪里输入installutil 命令啊 ???
急....
#7
第二个问题有很多种方法,介绍个最简单的吧
程序安装完成后,取得要作为服务的程序所在的路径,然后在注册表
HKLMSOFTWAREMicrosoft WindowsCurrentVersionRunServices
下新建字串,其值为那个程序的路径就可以了!
程序安装完成后,取得要作为服务的程序所在的路径,然后在注册表
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,不错的一个软件。然后在程序中写我上面介绍的代码,让它自动注册就可以了~
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,不错的一个软件。然后在程序中写我上面介绍的代码,让它自动注册就可以了~