关于编写windows服务的问题

来源:互联网 发布:淘宝助理下载与安装5.7 编辑:程序博客网 时间:2024/05/16 02:01

关于编写windows服务的问题
2008-07-16 20:39:09   来源:论坛整理   作者:   【大 中 小】 评论:0 条   收藏本文
 


我编写的windows服务程序可以安装,但安装后无法start,当我启动时弹出一个对话框,说在本地电脑上无法启动您的服务,这是什么原因,不知道有什么办法可以解决,都没start起来所有,还没法调试。
网友回复:无法start后面没有注明原因吗?通常是初始化步骤有问题,具体代码。
网友回复:你有没有按照服务的方式来写呢?进程中有没有把服务的启动例程注册上去?
网友回复:你使用下面的方法,启动服务,每个函数都有出错返回,假如下面的StartService起不起来的时候,去看GetLastError

SC_HANDLE schService = OpenService(
schSCManager, // SCManager database
_pServiceConfig->service_name(),// name of service
SERVICE_ALL_ACCESS // desired access
);

if (schService != NULL) {
LPCTSTR svc_param[] = {_SVC_START_PWD
};
if (!StartService(
schService, // handle to service
1, // number of arguments
svc_param) ) // no arguments
{
_pLogHelper->winerr("start_thddfw: StartService");
}
网友回复:先在 startservice 的位置判定是否成功

假如失败了 用 GetLastError获取错误号 看看为什么失败
网友回复:我是按照服务的方式写的,我参考的是一个vcbase上的例程
D:/New Folder/VC知识库文章 - 用 C 语言编写 Windows 服务程序的五个步骤.htm
这个例程我试验了是很好用的,但是我把例程上的代码格式加入自己的服务程序,安装后服务就无法启动了。我加入的是一个下载的程序
网友回复:我的例程没有用到startservice这个函数
网友回复:在线等
网友回复:
引用 6 楼 lsk_30516 的回复:

我的例程没有用到startservice这个函数


我的意思是既然你的服务已经安装好了,那么就可以调用OpenService,StartService这2个函数把服务起起来,就是说你再做个程序,用这2个函数把你的服务起一下,然后看出错代码。
网友回复:我的服务是在命令行手动安装的用的vc的tool: sc
网友回复:
引用 9 楼 lsk_30516 的回复:

我的服务是在命令行手动安装的用的vc的tool: sc

你自己再做个测试程序嘛,把下面的代码拷贝到这个测试工程,就可以启动你的服务了,然后调试这个测试程序嘛。


SC_HANDLE schService = OpenService(
schSCManager, // SCManager database
_pServiceConfig->service_name(),// name of service
SERVICE_ALL_ACCESS // desired access
);

if (schService != NULL) {
LPCTSTR svc_param[] = {_SVC_START_PWD
};
if (!StartService(
schService, // handle to service
1, // number of arguments
svc_param) ) // no arguments
{

}
网友回复:我在Vista里调试系统服务,一直没成功,最后发现是UAC搞的~~~郁闷
网友回复:确定你服务的名字是否正确!!!
如:我用VC写个程序来起动Secondary Logon服务,但它时得用seclogon!

原创粉丝点击