找回密码
 加入
搜索
楼主: 卫和谐

[系统综合] [已解决]将一个程序注册成服务后,运行过程中会自动退出是怎么回事?

 火... [复制链接]
 楼主| 发表于 2011-5-19 17:08:05 | 显示全部楼层
服务要与scm(services.exe)通讯,如果缺少这部份就会出现不可控制,就如LZ你前面说的“没有及时响应启动或控制 ...
ceoguang 发表于 2011-5-19 10:57



    服务要与scm(services.exe)通讯
这个如何做?

允许与桌面交互
这个已经设置了!
 楼主| 发表于 2011-5-20 21:07:58 | 显示全部楼层
没有帮助解决这个问题的吗?
发表于 2011-5-20 21:37:17 | 显示全部楼层
 楼主| 发表于 2011-5-21 06:44:44 | 显示全部楼层
P版这个不是我所需要的,
我将程序注册成服务后,开机时可以正常启动,但启动后约10秒后会自动退出,难道服务不能够支持有界面的程序?????????????
发表于 2011-5-21 10:54:19 | 显示全部楼层
看看学历了!
发表于 2011-5-21 10:58:18 | 显示全部楼层
看看学历了!
 楼主| 发表于 2011-5-22 05:44:13 | 显示全部楼层
希望有人继续给出解决办法!
发表于 2011-5-22 08:28:06 | 显示全部楼层
应该是代码的问题吧,我以前做的服务就没有这种现象。
 楼主| 发表于 2011-5-24 12:46:27 | 显示全部楼层
回复 23# m765555

代码没有问题,服务可以正常启动只是会自己中断~!
发表于 2011-5-24 14:48:09 | 显示全部楼层
回复 19# 卫和谐


    还是那句话,肯定是不符合规则,所以会启动后不到十秒自动停止,我也测试了,不是任何一个exe文件都可以作为服务器启动,切一直正常循环运行的
请教P版吧,或者好好看看P版的关于服务的代码
发表于 2011-5-24 14:52:47 | 显示全部楼层
回复 1# 卫和谐


     在基于Nt的系统中,全部服务任务都是由服务控制管理器(SCM)系统管理。SCM维持注册表中已知服务列表,打开各项服务(即可以是开机时自动打开,也可以使用户请求打开)。SCM把服务列表和它们的打开状态保存在注册表中,新服务项在安装时加入此列表中。另外也可以删除服务项目。
        作为服务任务的程序是一个普通的exe文件,但是必须满足特定的要求才能确切地与SCM连接。微软已经详细编制了这些函数的程序流,必须紧密依据此流程表,否则服务项目就不能运行。要求如下:
        1.服务项目的exe文件必须有一个普通的main或WinMain函数,此函数必须立即(特定情况下是在30秒之内)调用函数StartServiceCrtlDispatcher。调用之后,EXE文件就在SCM中注册,并且给出一个调用函数ServiceMain(在启动服务时调用)的指针。可以更改函数ServiceMain的函数名,然后就能在ServiceMain下面的记录文本中找到所用函数名的描述。main函数应该在注册ServiceMain之后返回。
        不能用命令行方式运行服务的exe文件。而应该在SCM知道的服务列表中安装,SCM会调用main函数,打开EXE文件。偶然用命令行方式执行服务时一定会出错,因为它不能连接SCM。
        2.SCM在打开服务时将调用函数ServiceMain。例如,当管理员选择“控制面板”上“服务”的start按钮时,SCM将在一个工作线程中执行函数ServiceMain。
        函数ServiceMain完成多项工作。其中最为主要的是立即调用函数RegisterServiceCtrlHandler,该函数能用SCM注册一个函数Handler以调用控制要求。此函数的函数名可以随便更改,但大会在Handler下面的记录文本中列出。函数RegisterServiceCtrlHandler返回一个句柄,服务在给SCM发送状态信息时将用到该句柄。
        函数ServiceMain还开始将完成实际服务任务的工作现程。一旦线程开始,函数ServiceMain就等待一个事件的发生。直道服务停止,函数ServiceMain才返回。之后,重新调用函数ServiceMain,SCM将重新开始该项服务。
        3.函数Handler包含一个转换语句,用于分析来自SCM的控制请求。默认时,SCM发送以下控制常数:
        SERVICE_CONTROL_STOP                 通知服务停止
        SERVICE_CONTROL_PAUSE               通知服务暂停
        SERVICE_CONTROL_CONTINUE         通知服务重新开始
        SERVICE_CONTROL_INTERROGATE   通知服务立即报告当前状态
        SERVICE_CONTROL_SHUTDOWN         通知服务紧急关闭
        用户也可以创建自定义常数(128~255之间),通过SCM把它们发送到服务项。
        当创建一个包含上述main、ServiceMain和Handler等函数的EXE文件以及一个包含服务线程的函数时,就得到了一个完整的服务任务。


请参考,我本人不是很懂
发表于 2011-5-24 15:32:15 | 显示全部楼层
同时希望和谐兄弟早日解决这个问题, 因为这个问题好像很多人需要,我也需要,搞定后上来分享下啊
发表于 2011-5-24 17:00:02 | 显示全部楼层
路过观望学习~~
 楼主| 发表于 2011-5-24 20:38:49 | 显示全部楼层
回复 27# wsfda


    也不太明白,下面是我通过注册表添加服务的代码,有识之士请指教:
;注册服务
Func Installserver()
        RegWrite('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PcLimit')
        RegWrite('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PcLimit', 'Type', 'REG_DWORD', '0x00000110')
        RegWrite('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PcLimit', 'Start', 'REG_DWORD', '0x00000002')
        RegWrite('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PcLimit', 'ErrorControl', 'REG_DWORD', '0x00000001')
        RegWrite('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PcLimit', 'ImagePath', 'REG_EXPAND_SZ', @ScriptFullPath)
        RegWrite('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PcLimit', 'DisplayName', 'REG_SZ', @ScriptName)
        RegWrite('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PcLimit', 'ObjectName', 'REG_SZ', 'LocalSystem')
        RegWrite('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PcLimit', 'Description', 'REG_SZ', '防止上网沉迷系统')
        RegWrite('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PcLimit\Enum')
        RegWrite('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PcLimit\Enum', '0', 'REG_SZ', 'Root\LEGACY_PCLIMIT\0000')
        RegWrite('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PcLimit\Enum', 'Count', 'REG_DWORD', '0x00000001')
        RegWrite('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PcLimit\Enum', 'NextInstance', 'REG_DWORD', '0x00000001')
EndFunc   ;==>Installserver
发表于 2011-5-24 21:01:14 | 显示全部楼层
回复 29# 卫和谐


这个周末也好好研究研究,大家一起加油,OK了都上来分享啊
你的服务是注册成功了,关键还是exe程序...我也去再研究研究
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-16 19:25 , Processed in 0.089365 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表