我用vc++6.0自动生成了一个服务程序,我什么都没有改动,我的操作是new-->project-->ATL Com AppWizard-->Service(Exe)-->完成,然后我只是在run函数里面写了我要做的操作,直接双击运行,很正常,可以实现我要的功能,可是我注册成服务之后,通过服务管理器就启动不起来了,启动的时候报告1053错误。不知道这是怎么回事,我除了改了run函数,其它的什么都没有改啊,是不是默认生成的这些代码还有什么别的地方要改啊。
调试欢乐多
{
SERVICE_TABLE_ENTRY st[] =
{
{ m_szServiceName, _ServiceMain },
{ NULL, NULL }
};
if (m_bService && !::StartServiceCtrlDispatcher(st))
{
m_bService = FALSE;
}
if (m_bService == FALSE)
Run();
}void CServiceModule::Run()
{
_Module.dwThreadID = GetCurrentThreadId(); HRESULT hr = CoInitialize(NULL);
// If you are running on NT 4.0 or higher you can use the following call
// instead to make the EXE free threaded.
// This means that calls come in on a random RPC thread
// HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED); _ASSERTE(SUCCEEDED(hr)); // This provides a NULL DACL which will allow access to everyone.
CSecurityDescriptor sd;
sd.InitializeFromThreadToken();
hr = CoInitializeSecurity(sd, -1, NULL, NULL,
RPC_C_AUTHN_LEVEL_PKT, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, NULL);
_ASSERTE(SUCCEEDED(hr)); hr = _Module.RegisterClassObjects(CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER, REGCLS_MULTIPLEUSE);
_ASSERTE(SUCCEEDED(hr)); LogEvent(_T("Service started"));
if (m_bService)
SetServiceStatus(SERVICE_RUNNING);
MSG msg;
//*
while (GetMessage(&msg, 0, 0, 0))
DispatchMessage(&msg);
//*/
_Module.RevokeClassObjects(); CoUninitialize();
}
//都是vc自动生成的,我都没有改,可就是启动不起来,我把我自己写的代码都去掉了,还是不行。