我有一个旧的32位delphi应用程序(没有源代码),用作Windows服务。 它在Windows 2003 32位上运行良好。
我不知道它最初是作为服务创build的,还是以后转换为服务。 它应该在命令行中使用/install标志安装到服务器。
当试图在Windows 2008 R2虚拟机上安装它时,我正在事件日志中收到一个APPCRASH事件。
该服务应该从远程SQL Server实例读取一个blob,并将其写入本地HD。 它还从registry读取一些初始化数据。
有没有什么办法可以安装这个应用程序作为一个服务在Windows 2008 R2 R2 64位?
如果没有,我可以尝试一些解决办法吗?
你有什么build议?
我有同样的问题,但里卡多·帕尔迪尼与Process Monitor的提示是解决scheme,我发现该服务(即使在安装它的时候)正在寻找一个dbExpress DLL不在应用程序目录中,也不在searchpath。 将DLL复制到相同的文件夹解决了问题。
如果不能访问应用程序或者为什么可能会崩溃,我只能提供一些可能有用的一般性思想。
如果它只是一个POS(普通旧服务;)),您可以按照http://support.microsoft.com/kb/251192中的说明手动安装它作为服务。 这样,如果应用程序本身工作,你将绕过一个失败的安装例程。
您也可以尝试使用兼容模式运行它。 旧的Delphi应用程序可以从中受益良多。
也有ms有几个应用程序兼容性更新r2,所以如果你还没有打窗户更新和下载。
你也可以直接运行应用程序,而无需安装参数?
它可能试图从64位版本的Windows中读取一些内容,而不是32位版本的Windows。 确保你已经安装了32位的sql server客户端,并且运行正常。 除此之外,应该告诉你哪个DLL放在wow32中的appcrash。
我们已经自己编写了很多Delphi 32位服务,唯一实际上帮助我们在没有源代码的情况下“debugging”运行在服务器(包括64位)上的服务的唯一东西是Sysinternal(现在是Microsoft Technet)过程监视器 。
在你的具体情况下,我会下载进程监视器(这是一个简单的可执行文件)并运行它,然后将其设置为只筛选您的服务的.exe应用程序。 看看它的文件,但这实际上是一个非常简单的filter。
在启动服务时,让Process Monitor在两台机器上运行(过滤)。 比较Process Monitor的结果。 我敢打赌,你有像缺less的registry项或缺less的目录或权限,导致delphi应用程序引发和exception。 这应该很容易在Process Monitor上find。 甚至更多,如果你有一台工作机器比较。
我们决定继续在32位操作系统上运行,并在.NET中重写这个应用程序。
你没有提到任何关于UAC的事情。 完全禁用UAC并再次尝试。