尝试在 2008 r2 上安装 32 位 delphi 服务时崩溃

尝试在 2008 r2 上安装 32 位 delphi 服务时崩溃

我有一个旧的 32 位 delphi 应用程序(没有源代码),用作 Windows 服务。它在 Windows 2003 32 位上运行良好。

我不知道它最初是作为服务创建的,还是后来转换为服务。它应该使用/install命令行上的标志安装到服务器上。

当尝试在 Windows 2008 R2 虚拟机上安装它时,我在事件日志中收到 APPCRASH 事件。

该服务应该从远程 SQL Server 实例读取 blob 并将其写入本地 HD。它还会从注册表读取一些初始化数据。

有什么方法可以将此应用程序作为服务安装到 Windows 2008 R2 64 位上?

如果没有,有什么解决方法我可以尝试吗?

你有什么建议?

答案1

我们自己编写了不少 Delphi 32 位服务,唯一真正能帮助我们“调试”运行在服务器上(包括 64 位)而无需源代码的服务是Sysinternal(现为 Microsoft Technet)的进程监视器

针对您的具体情况,我会下载 Process Monitor(它是一个简单的可执行文件)并运行它,然后将其设置为仅过滤您服务的 .exe 应用程序。查看它的文档,但这实际上是一个非常简单的过滤器。

启动服务时,让 Process Monitor 在两台机器上运行(过滤)。比较 Process Monitor 的结果。我敢打赌,您有类似缺少注册表项、缺少目录或权限之类的问题,这会导致 Delphi 应用程序引发异常。这应该很容易在 Process Monitor 上发现。如果您有一台可以比较的机器,那就更容易了。

答案2

我遇到了同样的问题,但 Ricardo Pardini 的 Process Monitor 提示解决了这个问题,我发现该服务(即使在刚安装时)正在寻找不在应用程序目录或搜索路径中的 dbExpress DLL。将 DLL 复制到同一文件夹中解决了该问题。

答案3

在无法访问该应用程序或无法追踪其崩溃原因的情况下,我只能提供一些可能有帮助的一般想法。

如果它只是一个 POS(普通老式服务 ;)),你可以按照此处的说明进行操作http://support.microsoft.com/kb/251192手动将其安装为服务。这样,如果应用程序本身可以工作,您就可以避免安装失败的情况。

您也可以尝试使用兼容模式运行它。旧的 Delphi 应用程序可以从中受益匪浅。

答案4

它可能试图从 64 位版本的 Windows 而不是 32 位版本的 Windows 读取某些内容。请确保您已安装 32 位 SQL Server 客户端并且该客户端正常运行。除此之外,发布 appcrash 应该会告诉您将哪个 DLL 放入 wow32 中。

相关内容