You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安装Windows KB5018410后Delphi TRestRequest的TLS故障求助

解决Windows 10 KB5018410更新后Delphi REST组件TLS访问问题

KB5018410更新会调整系统Schannel配置,导致Delphi的TRESTClient/TRESTRequest组件默认TLS协商逻辑失效,即使设计时勾选SecureProtocols也可能不生效,以下是几种可行的修复方案:

1. 代码中强制指定TLS版本并刷新组件设置

不要依赖设计时的属性设置,在请求发起前通过代码强制配置并刷新组件底层:

// 适用于Delphi 10.1及以上版本
RESTClient1.SecureProtocols := [THTTPSecureProtocol.TLS1_2];
// 重置并更新底层客户端配置
RESTClient1.ResetToDefault;
RESTClient1.Update;

如果是XE8及更早的旧版本,THTTPSecureProtocol枚举没有TLS1_2选项,手动指定标志位:

const
  TLS1_2 = $00000800;
begin
  RESTClient1.SecureProtocols := RESTClient1.SecureProtocols + [TLS1_2];
  RESTClient1.ResetToDefault;
  RESTClient1.Update;
end;

2. 修改系统注册表强制启用TLS 1.2

KB5018410可能在Schannel层默认禁用了TLS1.2,通过注册表恢复系统层面的支持:

  • 打开regedit.exe,导航到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client
  • 若不存在对应键值,手动创建:
    • 依次新建项TLS 1.2和其子项Client
    • 在Client项下添加两个DWORD值:
      • DisabledByDefault:设为0
      • Enabled:设为1
  • 重启电脑后生效

3. 切换REST组件的底层HTTP客户端实现

Delphi的REST组件支持多种底层客户端(Indy/WinHTTP),更新后可能某一底层出现兼容性问题,尝试切换:

// Delphi 10.3+版本支持切换
RESTClient1.ClientImplementation := TRESTClient.TClientImplementation.ciWinHTTP;
// 或切换为ciIndy,测试哪种实现能正常访问
RESTClient1.SecureProtocols := [THTTPSecureProtocol.TLS1_2];

4. 调整应用程序兼容性设置

右键应用程序的.exe文件,打开属性窗口:

  • 切换到“兼容性”标签页
  • 勾选“以兼容模式运行这个程序”,选择Windows 8或更早版本
  • 同时勾选“以管理员身份运行此程序”
  • 保存设置后测试访问

内容的提问来源于stack exchange,提问作者Andrew Spencer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 18:05:33