SOS!在作NT Service程序时遇的一个问题,请大家来提些意见啊。

xuyun11141 2005-07-12 06:17:26
最近写了一个NT Service主要是用于调用另一个COM组件的接口来达到一下的目的,运行的时候后:在WINDOWS 的服务管理程序不能启动它,出现这样的提示:本地计算机无法启动MassEasy服务。 错误1053:服务并未及时响应启动或控制请求。

请问各位这是什么原因造成的啊?谢谢了。
...全文
104 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuyun11141 2005-07-29
  • 打赏
  • 举报
回复
呵呵,在用InstallShieldX写安装的时候没把它注册,所以出这样的问题。
idAnts 2005-07-13
  • 打赏
  • 举报
回复
不知道你的服务是怎么写的,大概应该是服务规定的例程没有处理好。
xuyun11141 2005-07-13
  • 打赏
  • 举报
回复
主要是在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));

//Starting MassEasy
StartMassEasy(); //////////这就是启动服务调用的函数。

LogEvent(_T("Service started"));
if (m_bService)
SetServiceStatus(SERVICE_RUNNING);

MSG msg;
while (GetMessage(&msg, 0, 0, 0))
DispatchMessage(&msg);


_Module.RevokeClassObjects();

OutputDebugString("Service will stop sending the email in function run.");
//Stopping MassEasy
EndMassEasy();
CoUninitialize();
}
idAnts 2005-07-13
  • 打赏
  • 举报
回复
你用调试信息看看程序运行到了什么地方

另外你把SetServiceStatus(SERVICE_RUNNING);放到StartMassEasy(); 前面看看

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧