一、安装Windows更新补丁 KB3140245并注册

  公司的用了好几年的电脑装的还是win7,这周刚装vscode准备学下lua。结果发现插件功能完全用不了。打开左侧边栏的插件按钮,直接显示'error while fetching extensions.XHR failed'

  chatgpt给的回复是:在 Windows 7 系统上出现这种错误,通常是由于网络问题或不兼容的 TLS 协议导致的。VS Code 的扩展市场需要通过 HTTPS 协议访问,而 Windows 7 默认不支持 TLS 1.2,需要安装最新的 Windows 更新补丁 KB3140245以启用此功能。

  按这个说法先检查。按下 Win + R后输入 powershell来打开powershell,输入命令:

[Net.ServicePointManager]::SecurityProtocol

如果显示Tls12表示系统支持 TLS 1.2。结果我的只显示Tls Ss13

  在 Microsoft 更新目录网站下载‘Atualização do Windows 7 (KB3140245)’,直接进行安装。安装完毕之后需要进行注册。

注册方式一:通过注册表启用 TLS 1.2

  1. 打开注册表编辑器

    • Win + R,输入 regedit,然后回车。
  2. 定位到 TLS 配置路径

    • 找到以下路径:

      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
      
  3. 创建 TLS 1.2 配置键

    • 如果 Protocols 下没有 TLS 1.2,右键 Protocols,选择 新建 -> 键,命名为 TLS 1.2
    • TLS 1.2 下创建两个子键:ClientServer
      1. 右键 TLS 1.2,选择 新建 -> 键,分别命名为 ClientServer
  4. 配置 ClientServer 的值

    • 点击 Client 键,在右侧空白处右键,选择 新建 -> DWORD (32 位) 值
      • 名称:DisabledByDefault,值设置为 0
      • 名称:Enabled,值设置为 1
    • 重复上述步骤,在 Server 键中添加相同的两个值:
      • 名称:DisabledByDefault,值设置为 0
      • 名称:Enabled,值设置为 1
  5. 确认配置。最终注册表路径应如下:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client
DisabledByDefault = 0
Enabled = 1

注册方式二:使用命令行导入注册表(推荐)

  1. 打开记事本,复制以下内容:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001
  1. 将文件保存后重命名为 enable_tls12.reg,双击注册完成。完成后需重启计算机。

  注册完之后,打开 控制面板,选择 Internet 选项,切换到 高级(advanced) 选项卡,在 安全 部分,勾选使用 TLS 1.2
在这里插入图片描述

二、升级PowerShell 和.NET Framework

  上一步已经正确安装了KB3140245补丁并注册完成,Internet 选项中已经显示启用了 TLS 1.2,但是在powershell中输入[Net.ServicePointManager]::SecurityProtocol,依旧只显示Tls Ss13。chatgpt给出的答案是:显式设置PowerShell启用 TLS 1.2,有2.1和2.2两种方式。

2.1 在 PowerShell 中强制启用 TLS 1.2

在 PowerShell 中运行以下命令:

[Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12

  这将强制应用程序(包括 PowerShell)使用 TLS 1.2 协议进行安全连接。但是我输完后报错 “设置SecurityProtocol发生异常,无法将空值转换为System.Net.SecurityProtocolType.可能的枚举值为Tls Ss13”

2.2 设置默认的 SecurityProtocol(启用 TLS 1.2)

  1. 打开 PowerShell。

  2. 编辑配置文件(如果该文件不存在,以下命令可以创建它):

    notepad.exe $PROFILE
    
  3. 在配置文件中添加以下内容, 保存并关闭文件。

    [Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12
    
  4. 重新启动 PowerShell。以后,每次启动 PowerShell 时,它都会默认启用 TLS 1.2。

我输完第一条命令就报错没有notepad.exe

2.3 更新PowerShell

  此时chatgpt提升可能是PowerShell版本太低。PowerShell 3.0 及以上版本才支持 TLS 1.2。在 PowerShell 中运行以下命令来查看 PowerShell 版本(Major值):

$PSVersionTable.PSVersion

  结果我显示的Major值是2。PowerShell 5.1 是 Windows 7 的最高版本,它是 Windows Management Framework (WMF) 5.1 的一部分,我们直接安装WMF5.1。
  点击WMF5.1下载页面,点击正中间的download按钮,在弹出页面中选择下载 Win7AndW2K8R2-KB3191566-x64.msu

在这里插入图片描述
解压后直接双击msu文件进行安装,完毕后重启计算机完成更新。之后在PowerShell中输入2.1中的命令:

[Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12

再输入[Net.ServicePointManager]::SecurityProtocol进行检查结果显示Tls12:
在这里插入图片描述

  另外,TLS 1.2.NET Framework 4.5 及以上版本中才得到完全支持。确保你的系统安装了至少 .NET Framework 4.5 或更高版本。

  • 检查版本:打开 PowerShell,运行以下命令:
Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -Recurse |
Get-ItemProperty -Name Version -ErrorAction SilentlyContinue |
Where-Object { $_.Version -match '^[0-9]' } |
Select-Object PSChildName, Version

输出将列出所有安装的 .NET Framework 版本。例如:

PSChildName Version
----------- -------
v2.0        2.0.50727.5420
v3.0        3.0.30729.5420
v3.5        3.5.30729.5420
v4          4.8.04084
  1. 安装.NET Framework
    如果版本过低,点此下载最新的 .NET Framework(支持 Windows 7 的最高版本为 4.8)。

在这里插入图片描述
powershwll中显示启用TLS 1.2 后,打开vscode,插件功能可以正常使用了:

在这里插入图片描述

三、vscode终端输出lua时出现中文乱码

  点击状态栏的UTF-8,选择"通过编码重新打开",选择GB18030(下面终端显示的是已经处理好的效果,没有乱码)。

在这里插入图片描述
在这里插入图片描述
此时代码中中文乱码,按ctrl+z恢复。
在这里插入图片描述
在这里插入图片描述
另外代码文件也要保存为gb18030编码。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐