win7系统vscode插件功能无法启用,报错“error while fetching extensions.XHR failed”
chatgpt给的回复是:在 Windows 7 系统上出现这种错误,通常是由于网络问题或不兼容的 TLS 协议导致的。VS Code 的扩展市场需要通过 HTTPS 协议访问,而 Windows 7 默认不支持 TLS 1.2,需要安装最新的 Windows。是 Windows 7 的最高版本,它是 Windows Management Framework (WMF) 5.1 的一部分,我们直接
文章目录
一、安装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
-
打开注册表编辑器:
- 按
Win + R
,输入regedit
,然后回车。
- 按
-
定位到 TLS 配置路径:
-
找到以下路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
-
-
创建 TLS 1.2 配置键:
- 如果
Protocols
下没有TLS 1.2
,右键Protocols
,选择 新建 -> 键,命名为TLS 1.2
。 - 在
TLS 1.2
下创建两个子键:Client
和Server
。- 右键
TLS 1.2
,选择 新建 -> 键,分别命名为Client
和Server
。
- 右键
- 如果
-
配置
Client
和Server
的值:- 点击
Client
键,在右侧空白处右键,选择 新建 -> DWORD (32 位) 值:- 名称:
DisabledByDefault
,值设置为0
。 - 名称:
Enabled
,值设置为1
。
- 名称:
- 重复上述步骤,在
Server
键中添加相同的两个值:- 名称:
DisabledByDefault
,值设置为0
。 - 名称:
Enabled
,值设置为1
。
- 名称:
- 点击
-
确认配置。最终注册表路径应如下:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client
DisabledByDefault = 0
Enabled = 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
- 将文件保存后重命名为
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)
-
打开 PowerShell。
-
编辑配置文件(如果该文件不存在,以下命令可以创建它):
notepad.exe $PROFILE
-
在配置文件中添加以下内容, 保存并关闭文件。
[Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12
-
重新启动 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
- 安装.NET Framework
如果版本过低,点此下载最新的 .NET Framework(支持 Windows 7 的最高版本为 4.8)。
powershwll中显示启用TLS 1.2
后,打开vscode,插件功能可以正常使用了:
三、vscode终端输出lua时出现中文乱码
点击状态栏的UTF-8,选择"通过编码重新打开",选择GB18030
(下面终端显示的是已经处理好的效果,没有乱码)。
此时代码中中文乱码,按ctrl+z恢复。
另外代码文件也要保存为gb18030编码。
更多推荐
所有评论(0)