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

标签 delphi ssl exception msvcr120.dll

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

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

好的,我将 LIBEAY32.dllSSLEAY32.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/

相关文章:

Delphi 非阻塞 ShowModal

sql - FireDac添加下划线1以区分具有相同名称的2个列名称

ruby-on-rails - 从 www 重定向到非 www 的 Nginx HTTPS 问题

soap - "Don' t Fragment”对TCP数据包的好处?

java.lang.outofmemoryerror android.graphics.BitmapFactory.nativeDecodeAsset(本地方法)

Java客户端服务器-异常处理(线程)

delphi - SQLite 和 DISQLite 如何比较大型简单数据库?

delphi - 对 'Create` 的不明确重载调用(但不是 'Foo' )

java - 尝试连接到 Web 套接字服务器时不断收到 No X509TrustManager implementation available 错误

c++ - 如何安全地处理容器类中的异常/异常?