vc++ 编写Windows服务 1053错误

53 篇文章 0 订阅
6 篇文章 0 订阅

http://xk861119.blog.163.com/blog/static/16327042010109102237317/


建立一个服务程序的最简单的方法是用VC中的ATL COM向导。主菜单中选择新建,然后选Projects中的ATL COM AppWizard,输入一个项目名,选择了所在目录后,点OK按钮,在出现的对话框中选择Service(EXE),点Finish即可。然后编译生成WinServer.exe。

用下面语句在命令提示符下进行安装

sc create WinServer binPath= "G:\01.MyProgram\WinServer\Bin\WinServer.exe" (binPath= 的后面有一个空格,我当时就郁闷了半天,后面就是.exe文件的所在路径)

安装以后 在启动总是提示:"错误1053:服务没有及时响应启动或控制请求。"

我后来重新在命令提示符下用下面的语句注册

G:\01.MyProgram\WinServer\Bin\WinServer.exe /RegServer

重新后安装以后 在启动还是提示:"错误1053:服务没有及时响应启动或控制请求。"

然后我在源码的每个函数里面添加了MessageBox弹出窗口作为调试信息,重新编译,重新注册、安装,怀着忐忑的心情等待着,可是等了半天,没有蹦出半个对话框,最终憋出一个还是:"错误1053:服务没有及时响应启动或控制请求。"

我失望的继续在网上查了一天的资料也没找到原因,再后来无意间找到了一个帖子,他的描述和我碰到的问题一样,当时真是太激动了,赶紧收起失望的心情,试一把,他的解决办法是:

   在project--->setting---->build中 把command中的

     "$(TargetPath)" /RegServer

修改成

      "$(TargetPath)" /Service

这次在编译的过程中就有很多的调试对话框弹出来,而且不需要再用上面的安装命令,在Windows服务已经安装了我编写的服务,一看心里高兴死了,这回终于有出路了,满怀信心的启动服务,我眼睛直勾勾的盯着进度条,过了一半多一点点,还没有弹出我预期的调试对话框,而且和以前一样停住了,我知道接下来会发生什么了,"错误1053:服务没有及时响应启动或控制请求。"的对话框再一次无情的弹了出来。

我想放弃了,但是理论上告诉我,不可能,别人的服务都能跑,为啥偏偏我的就不行呢,我继续在网上查找资料,黄天不负有心人,我又找到了一个帖子,按照其提供的方法解决了我的问题,按照下列步骤操作:

  1. 服务工具中单击想要启动,服务,然后单击 属性
  2. 用鼠标右键单击 登录 选项卡,然后单击以选中 允许服务与桌面交互 复选框。
  3. 单击 确定 退出 属性 对话框。

我启动服务,终于弹出了预期的对话框,服务启动成功。

我总结了一下,因为我在启动的过程中有对话框弹出,所以后面设置“允许服务与桌面交互”是必须的。我把调试对话框删除之后,用 "$(TargetPath)" /Service 的方法也是可以成功启动的。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值