c++写的服务,能安装、卸载,但是启动的时候出现异常1067,进程意外终止

c++写的服务,能安装、卸载,但是启动的时候出现错误1067,进程意外终止
#include "StdAfx.h"
//#include "Resource.h"
#include ".\ntservice.h"


DWORD CNTService::dwThreadId;
LPTSTR CNTService::m_lpServiceName; //服务程序内部名称,名字不能有空格
LPTSTR CNTService::m_lpServiceDisplayName; //SERVICE程序在管理器中的显示名称,任意字符
LPTSTR CNTService::m_lpServiceDescription; //服务在管理器中的描述
LPTSTR CNTService::m_lpDependencies; //服务依赖
DWORD CNTService::m_dwServiceType; //服务类别
TCHAR CNTService::m_lpServicePathName[512]; //SERVICE程序的EXE文件路径
CNTService * CNTService::m_pService;
SERVICE_STATUS CNTService::m_ssServiceStatus; //SERVICE程序的状态struct
SERVICE_STATUS_HANDLE CNTService::m_sshServiceStatusHandle; //SERVICE程序状态的HANDLE

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CNTService::CNTService() 
{
GetModuleFileName(NULL, m_lpServicePathName, 512); //取当前执行文件路径
m_lpServiceName = _T("HWService"); //服务名称
m_lpServiceDisplayName = _T("HWService"); //显示的名称
m_lpServiceDescription = _T(""); //服务描述
m_lpDependencies = NULL; //服务依赖
m_dwServiceType = SERVICE_WIN32_OWN_PROCESS; //服务类别
m_pService = this;
m_ssServiceStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
m_ssServiceStatus.dwServiceSpecificExitCode = 0;
}

CNTService::~CNTService()
{
}

BOOL CNTService::InstallService()  
{
SC_HANDLE schSCManager; //打开SCM用的句柄
SC_HANDLE schService; //建立SERVICE用的句柄

schSCManager = OpenSCManager( //调用打开SERVICE管理器API
NULL, //机器名称,设置NULL为本地机器
NULL, //数据库名称,NULL为缺省数据库
SC_MANAGER_CREATE_SERVICE //或 SC_MANAGER_ALL_ACCESS
);//希望打开的操作权限,详见MSDN

if(schSCManager) // 如果打开SERVICE管理器成功
{
schService = CreateService( //调用建立SERVICE的API
schSCManager, //SERVICE管理器数据库的句柄
m_lpServiceName, //服务名称
m_lpServiceDisplayName, //显示的名称
SERVICE_ALL_ACCESS, //希望得到的运行权限
m_dwServiceType, //SERVICE的类型
SERVICE_AUTO_START, //启动的方式
SERVICE_ERROR_NORMAL, //错误控制类型
m_lpServicePathName, //可执行文件的路径名
NULL, //一组服务装入时的顺序
NULL, //检查人标记
m_lpDependencies, //从属
NULL, //本地USER名
NULL); //密码

if(schService) //如果建立SERVICE成功
{
SERVICE_DESCRIPTION description;
description.lpDescription = m_lpServiceDescription;
ChangeServiceConfig2(schService,SERVICE_CONFIG_DESCRIPTION,&description); //修改描述
CloseServiceHandle(schService); //释放SERVICE句柄,准备退出
}
else
{
CloseServiceHandle(schSCManager); //释放SERVICE管理器句柄
return FALSE; //建立SERVICE失败返回
}
CloseServiceHandle(schSCManager); //释放SERVICE管理器句柄
}
else
{
return FALSE; //打开管理器失败返回
}
return TRUE; //一切正常返回
}



------解决方案--------------------
服务属性里面的语句能不能在 cmd 下单独运行成功?
------解决方案--------------------
那就证明你的运行程序本身有问题,或者是参数没有传对,
你先把那段的命令运行成功再来看,
并不是启动服务代码的问题,
服务的启动就是调用那段命令,
连那段命令都无法运行成功, 更不用说服务调用了。
------解决方案--------------------
探讨

net start Myservice
Myservice服务无法启动
Myservice服务无法启动
系统出错
发生系统错误 1067
进程意外中止

------解决方案--------------------
我的主程序里是空的~!完全就是个框架~!