在Delphi中捕获MSVCR120丢失的错误消息

Pau*_*aul 2 delphi ssl exception-handling msvcr120.dll

我编写了一个无人值守的HTTPS上传客户端,该客户端不需要用户交互。

一切都是完美无缺的,直到我盲目地将其部署到没有远程桌面访问权限的远程系统上。该工具在日志中报告说缺少SSL库。

好吧,我部署LIBEAY32.dll和SSLEAY32.dll远程系统上的应用程序文件夹,但随后的工具挂,我无法弄清楚发生了什么事情,直到我写了一个工具,这使得远程屏幕截图。

在屏幕截图上,我看到了来自csrss.exe过程的模态窗口,并显示了一条消息:

该程序无法启动,因为您的计算机缺少MSVCR120.dll。

尽管有很多try except块和Application.OnException处理程序,窗口还是出现了。

我希望在这种情况下,应用程序不会被搁置,因此可以向日志报告失败。

如何实现呢?

在当前的实现中,TIdHttp.Post调用只是挂起。

PS我通过将DLL复制到应用程序文件夹中解决了DLL的缺失,但是我的问题是捕获此类错误。

mjn*_*n42 5

为避免此错误,您可以使用https://indy.fulgan.com/SSL/上可用的OpenSSL DLL。

他们不依赖于MSVCRT。

或者,使用TNetHTTPClient。

从这个答案:

TNetHTTPClient是在Delphi XE8中引入的。

TNetHTTPClient的最重要的好处是它允许您的应用程序支持HTTPS,而不必提供自己的SSL / TLS支持。TNetHTTPClient依赖于操作系统提供的SSL / TLS支持。