我编写了一个无人值守的 HTTPS 上传客户端,它不需要用户交互。
一切都完美无缺,直到我盲目地将它部署到一个我没有远程桌面访问权限的远程系统。该工具在日志中报告缺少 SSL 库。
好的,我将 LIBEAY32.dll
和 SSLEAY32.dll
部署到远程系统上的应用程序文件夹,但随后工具挂起,我无法弄清楚是什么一直持续到我写了一个远程截图的工具。
在屏幕截图上,我看到了来自 csrss.exe
进程的模式窗口,其中包含一条消息:
The program can't start because MSVCR120.dll is missing from your computer.
尽管有很多 try except
block 和 Application.OnException
处理程序,该窗口还是出现了。
我希望在这种情况下应用程序不会被阻止,因此它可以向它的日志报告失败。
如何实现?
在当前的实现中,TIdHttp.Post
调用只是挂起。
附言我通过将 DLL 复制到应用程序文件夹来解决缺少 DLL 的问题,但我的问题是关于捕获此类错误。
最佳答案
为避免此错误,您可以使用 https://indy.fulgan.com/SSL/ 上提供的 OpenSSL DLL。
它们对 MSVCRT 没有这种依赖性。
或者,使用 TNetHTTPClient .
来自 this answer :
TNetHTTPClient was introduced in Delphi XE8.
The most important benefit of TNetHTTPClient is that it allows your application to support HTTPS without having to provide your own support for SSL/TLS. TNetHTTPClient relies on the SSL/TLS support provided by the operating system.
关于delphi - 在 Delphi 中捕获 MSVCR120 丢失的错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52928843/