ActiveSync错误号85010014故障排除实践

这两天在摆弄刚刚到手的夏新E850,哈哈,总算有机会体验一下Windows Mobile编程了,当然一开始总是从最基础的开始——学习如何使用ActiveSync。厂商提供的版本是4.1的,似乎有点早,但一开始也没有注意,就安装在机器上了,尝试同步通讯录,可是每次总是不成功,而且报的错误比较怪,见下:

中文版
ActiveSync在台式机上遇到问题,支持代码:85010014
英文版
ActiveSync encountered a problem on the desktop. Support Code: 85010014

平时其他客户的机器上出问题我倒不是很在乎,如今自己机器遇到这种问题,这个case不做也不行了,唉,只能硬着头皮上阿。

先请教了一位同事,同事说可能需要重建parnership,就是说把Desktop和Mobile上原来建的Profile都删掉,然后重新跟着向导再建一遍Profile,但试了好几次都不行,同事也没啥办法了,于是开始在网上寻找信息。

很幸运,找到了一篇Troubleshooting的帖子: http://kb.palm.com/SRVS/CGI-BIN/WEBCGI.EXE?New,Kb=PalmSupportKB,ts=Palm_External2001,Case=obj(41810)

在这篇帖子中,有好几种workaround,于是我只能一个一个试。

首先,我注意到了一个叫做wceslog.log的文件,位于%temp%目录下,打开这个文件一看,发现了如下信息:
04 / 12 / 2007   08 : 02 : 38.015  p( 4932 ) t( 2280 ) DbApi -> CDb::_Open - hr  =  0x80004005 - db.cpp( 439
04 / 12 / 2007   08 : 02 : 38.015  p( 4932 ) t( 2280 ) DbApi -> CDb::_Open(0x46d614 ,  &C:\Documents and Settings\Tony Qu\Application Data\Microsoft\ActiveSync\Profiles\WM_Tony_Qu\user.sdf ,   0 ) - returning 0x80004005 - db.cpp( 469
04 / 12 / 2007   08 : 02 : 38.015  p( 4932 ) t( 2280 ) DbApi -> CDb::OpenDatabase - hr  =  0x80004005 - db.cpp( 678
04 / 12 / 2007   08 : 02 : 38.015  p( 4932 ) t( 2280 ) DbApi -> CDb::OpenDatabase(&C:\Documents and Settings\Tony Qu\Application Data\Microsoft\ActiveSync\Profiles\WM_Tony_Qu\user.sdf ,   0 ,  0x461f76c) - returning 0x80004005 ,  *ppDb  ==  0x0 - db.cpp( 717
04 / 12 / 2007   08 : 02 : 48.281  p( 4932 ) t( 2124 ) TraceToFile -> ERROR in COomSession::DoInitOOMSession : hr  =  0x80004005 - OomSession.cpp( 175
04 / 12 / 2007   08 : 02 : 48.281  p( 4932 ) t( 2280 ) TraceToFile -> ERROR in CProfileSession::_CreateNewProfile : hr  =  0x80004005 - ProfileSession.cpp( 778
04 / 12 / 2007   08 : 02 : 51.359  p( 4932 ) t( 2280 ) TraceToFile -> ERROR in CProfileSession::GetChangeTrackingVariables : hr  =  0x80004005 - ProfileSession.cpp( 933
04 / 12 / 2007   08 : 02 : 51.359  p( 4932 ) t( 2280 ) TraceToFile -> ERROR in CMsgProcessor::ProcessMessage : hr  =  0x80004005 - MsgProcessor.cpp( 577
04 / 12 / 2007   08 : 02 : 51.359  p( 4932 ) t( 2280 ) TraceToFile -> ERROR in CService::_HttpPostMethod : hr  =  0x80004005 - Service.cpp( 1259
04 / 12 / 2007   08 : 02 : 51.359  p( 4932 ) t( 2280 ) SyncEngPerf -> Sync Statistics: Finished processing request - Service.cpp( 1176

可以看到有多个函数报 0x80004005错误,即Access Denied(拒绝访问),看来权限方面有问题,根据这一信息,找到了那篇帖子中的一个相关方法:(以下是翻译,有部分修改)

   1. 断开Windows Mobile设备
   2. 在桌面PC上:点击 开始菜单 > 所有程序(或程序) > 附件 > 写字板
   3. 在写字板的文件菜单中,选择“打开”
   4. 在Open窗口的底部,将文件类型设置为"所有文件"
   5. 在文件名文本框中,输入%temp%. 这将会显示你的系统临时目录
   6. 定位并打开WCESLog.log
   7. 从编辑菜单中选择“查找”
   8. 输入DoInitOOMSession,按查找
   9. 你是否发现以下信息?
          * 没有: 继续搜索
          * 是: 如果找到,你会看到如下信息
            02/28/2006 19:29:29.755 p(432) t(3320) TraceToFile -> ERROR in COomSession::DoInitOOMSession : hr = 0x80004005 - OomSession.cpp(175)
  10. 退出写字板,但请不要保存文件。
  11. WCESLOG文件中的"DoInitOOMSession"表示你的防病毒软件阻止了ActiveSync进行同步。请确认你的反病毒软件是否允许你禁用script blocking
  12. 你是否可以禁用反病毒软件中的script blocking?
          * 是: 禁用脚本阻止。尝试同步smartphone.
          * 否: 如果你的防病毒软件不允许你禁用script blocking, 你可以卸载一个DLL来禁用该功能。
  13. 现在我们打算删除可能阻止同步的那个DLL,但仅在你无法禁用script blocking的情况下使用接下来的步骤
  14. 在开始菜单中, 选择运行
  15. 输入regedit点击确定
  16. 在注册表编辑器中,打开HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{0006F03A-0000-0000-C000-000000000046}\InprocServer32.
  17. 当你点击InprocServer32, 右面的栏中将会显示一个列表. 第一条就是(Default).
  18. 右击(Default)项,选择删除
  19. 尝试同步你的smartphone.

但用了以上方法之后还是不行。。。

之后发现原来可以通过修复Outlook安装来解决这个问题,于是就抱着试试看的心理试了一把。。。奇迹出现了,安装程序运行完之后,一切都好了,哈哈。后来回过头来想想,可能问题出在这里——我的机器上既安装了Office 2007又安装了Office 2003,而且Office 2003是在Office 2007之后安装的,所以可能覆盖了一些相关的DLL,所以会导致出现问题。

希望以上经验对大家有用,当然具体问题具体分析,我个人还是比较推荐大家看http://kb.palm.com/SRVS/CGI-BIN/WEBCGI.EXE?New,Kb=PalmSupportKB,ts=Palm_External2001,Case=obj(41810)

你可能感兴趣的:(Active)