首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Windows Mobile >

WinCE 下的服务程序无法用 RegisterService()函数注册,也无法用 ActivateService() 函数来启动解决办法

2012-03-11 
WinCE 下的服务程序无法用 RegisterService()函数注册,也无法用 ActivateService() 函数来启动我按照微软

WinCE 下的服务程序无法用 RegisterService()函数注册,也无法用 ActivateService() 函数来启动
我按照微软的文档说明上写了一个非常简单的服务程序:

extern "C" DWORD PASCAL EXPORT XHW_Init(DWORD dwData)
{
 AFX_MANAGE_STATE(AfxGetStaticModuleState());
 DWORD dwThreadID = 0;
 CreateThread ( NULL, 0, ProcThread, NULL, 0, &dwThreadID );
 dwData = 1;

 return 1;
}

其他导出函数都按照微软的例子没有做任何修改,但是我用 RegisterService() 注册服务时返回 代码5“访问被拒绝”的错误,我又按照文档说明在注册表中加入了服务注册项如下:
REGEDIT4

[HKEY_LOCAL_MACHINE\Services\XHWSVR]
"Order"=dword:00000008
"Dll"="XhwSvr.dll"
"Prefix"="XHW "
"DisplayName"="XHW Service"
"Description"="XieHongWei's Service"
"IsEnabled"=dword:00000001
"Keep"=dword:00000001
"Index"=dword:00000000

我将 SmartPhone 系统重启后用 ActivateService() 函数激活服务却返回错误代码2(文件找不到),代码如下:

HANDLE hd = ActivateService(L"BTAGSVC", 0) ;
  if ( hd != NULL )
  {
  AfxMessageBox ( L" 成功启动服务" );
  }
  else
  {
  TCHAR szBuf[80]; 
  wsprintf(szBuf, L"Failed with error %d", GetLastError() );
  AfxMessageBox(szBuf);
  return FALSE;
  }


我已经将“XhwSvr.dll”文件拷贝到 “\Windows”目录下了,实在没办法,我将“XhwSvr.dll”文件拷贝到系统根目录下,但是问题依旧,请高手指点。



[解决办法]
你注册表的配置的路径错误了:
"Dll"="\Windows\XhwSvr.dll"
[解决办法]
Wince下的service的概念和desktop上的不一样。
先看看msdn上关于wince service的文档吧。

[解决办法]
应该这个和语言的版本没有关系的,呵呵,我在英文版本试过的是没有问题的
[解决办法]
请确认dll文件是不是加了数字签名!另外注册表应该还有一项:DWORD content = 0

热点排行