作者:手机用户2702935720 | 来源:互联网 | 2022-12-01 17:34
我编写了一个无人值守的HTTPS上传客户端,该客户端不需要用户交互。
一切都是完美无缺的,直到我盲目地将其部署到没有远程桌面访问权限的远程系统上。该工具在日志中报告说缺少SSL库。
好吧,我部署LIBEAY32.dll
和SSLEAY32.dll
远程系统上的应用程序文件夹,但随后的工具挂,我无法弄清楚发生了什么事情,直到我写了一个工具,这使得远程屏幕截图。
在屏幕截图上,我看到了来自csrss.exe
过程的模态窗口,并显示了一条消息:
该程序无法启动,因为您的计算机缺少MSVCR120.dll。
尽管有很多try except
块和Application.OnException
处理程序,窗口还是出现了。
我希望在这种情况下,应用程序不会被搁置,因此可以向日志报告失败。
如何实现呢?
在当前的实现中,TIdHttp.Post
调用只是挂起。
PS我通过将DLL复制到应用程序文件夹中解决了DLL的缺失,但是我的问题是捕获此类错误。
1> mjn42..:
为避免此错误,您可以使用https://indy.fulgan.com/SSL/上可用的OpenSSL DLL。
他们不依赖于MSVCRT。
或者,使用TNetHTTPClient。
从这个答案:
TNetHTTPClient是在Delphi XE8中引入的。
TNetHTTPClient的最重要的好处是它允许您的应用程序支持HTTPS,而不必提供自己的SSL / TLS支持。TNetHTTPClient依赖于操作系统提供的SSL / TLS支持。