一个关于NT服务程序的问题,巨奇怪!!

christianhua 2005-10-21 02:21:49
以下是我用于获取远程机器注册表的代码:
DWORD CHostArray::ConnectRegistry(CString host, PHKEY hKey)
{
PTHREAD_VAL val = NULL;
val = new THREAD_VAL;

val->hkey = hKey; // = NULL;
sprintf(val->host, "%s", host);

DWORD threadID;
HANDLE hThread = CreateThread( NULL, 0, (LPTHREAD_START_ROUTINE)ThreadFunc, (LPVOID)val, 0, &threadID );
DWORD result = WaitForSingleObject(hThread, WAIT_TIME);

DWORD status = 53; // TIME_OUT
if ( result == 0 ) status = val->status;
CloseHandle(hThread);
delete val;

return status;
}

DWORD WINAPI CHostArray::ThreadFunc(LPVOID pParam)
{
PTHREAD_VAL val;
val = (PTHREAD_VAL)pParam;
val->status = ::RegConnectRegistry(val->host, HKEY_LOCAL_MACHINE, val->hkey);

return 0;
}


此代码在debug模式下运行正常,但是一作为NT服务运行,获取远程机器的注册表就失败(但是自己机器的注册表可以获取),好像报A specified logon session does not exist. It may already have been terminated.错。

服务创建的代码如下:
schService = CreateService(
schSCManager, // SCManager database
TEXT(theApp.m_SZSERVICENAME), // name of service
TEXT(theApp.m_SZSERVICEDISPLAYNAME), // name to display
SERVICE_ALL_ACCESS, // desired access
SERVICE_WIN32_OWN_PROCESS|SERVICE_INTERACTIVE_PROCESS, // service type
SERVICE_AUTO_START, // start type
SERVICE_ERROR_NORMAL, // error control type
szPath, // service's binary
NULL, // no load ordering group
NULL, // no tag identifier
TEXT(theApp.m_SZDEPENDENCIES),// dependencies
NULL, // LocalSystem account
NULL); // no password


请搞首赐教,感谢,分数献上。
...全文
65 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
icuc88 2005-10-21
  • 打赏
  • 举报
回复
A specified logon session does not exist. It may already have been terminated
^^^^^^^^^^^^^^^^^^^^^^^^^^
这个说明,在此之前,本地计算机需要有一个活动的连接,连接到远程计算机。

6,871

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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