delphi – 在d7 windows服务中使用0x0eedfade kernelbase.dll错误模块

我在D7写了一个Windows服务.直到今天它才完美无缺
不想发射.

在事件日志中我收到错误:

错误应用程序名称:XServ12.exe,版本:0.0.0.0,时间戳:0x2a425e19
错误模块名称:KERNELBASE.dll,版本:6.1.7600.16385,时间戳:0x4a5bdbdf
异常代码:0x0eedfade
故障偏移:0x0000b727
错误进程id:0xbb4
故障应用程序启动时间:0x01cca43b2aee203a

我在某处读到了它可能是单元初始化部分的问题.
好吧,我已经从项目中删除了几乎所有单位,并留下:Sysutils,CLasses,Dialogs.当Dialogs.pas单元存在时,我删除它时仍然出现错误,程序成功进入项目dpr部分的开头.

此外,即使我拥有所有这3个单位并且只需手动运行exe它就可以完全启动.当我尝试从系统服务运行服务时,只发生错误…

如果我重新启动计算机,一切正常. …

有任何想法吗?

解决方法

0x0eedfade可能是在Delphi进程外传播的 unhandled Delphi exception.
如果问题仅在Dialogs单元中链接时存在,则它的初始化或它所依赖的任何单元的初始化可能会引发一个未处理的异常并从Delphi进程中逃脱.

这可能与服务在隔离会话中运行(如this document中所述)并且无法再访问Windows UI子系统(站点,桌面,窗口)这一事实有关.换句话说,忘了interactive services.

相关文章

 从网上看到《Delphi API HOOK完全说明》这篇文章,基本上都...
  从网上看到《Delphi API HOOK完全说明》这篇文章,基本上...
ffmpeg 是一套强大的开源的多媒体库 一般都是用 c/c+&#x...
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和ED...
1 mov dst, src dst是目的操作数,src是源操作数,指令实现的...