Visual Code 应用程序的终端中不断弹出此警告
Warning: PowerShell detected that you might be using a screen reader and has
disabled PSReadLine for compatibility purposes.
If you want to re-enable it, run 'Import-Module PSReadLine'.
即使我通过注册表将值更改为
0
,警告仍然显示。
您的症状的含义是:
Windows 处于屏幕阅读器模式(针对视障人士的 Windows 辅助功能)。
您正在使用常规 PowerShell 会话,无论是在控制台窗口/Windows 终端还是在 Visual Studio Code 的集成终端中。
相比之下,如果您将 Visual Studio Code 与 PowerShell 扩展一起使用,可以提供更丰富的 PowerShell 代码编写体验,则不会出现该问题,因为扩展在所谓的PowerShell Integrated Console do not 执行此检查(从版本
2021.2.2
开始),因此 do 加载 PSReadLine
(提供丰富命令行编辑体验的模块)并且不发出一个警告。目前尚不清楚这种无条件覆盖是有意为之还是疏忽。
虽然您可以按照错误消息中的建议并添加
Import-Module PSReadLine
到您的 $PROFILE
文件,这样做将重新启用 PSReadLine 以获得丰富的命令行编辑体验,但是 您仍然会在启动时看到警告,因为它是由 PowerShell before 发出的 $PROFILE
文件已加载。也就是说,如果您的系统上通过设计启用了屏幕阅读器模式,那么这是正确的解决方案。
如果此模式(意外)持续打开,通过注册表,您可以按如下方式将其关闭:
Set-ItemProperty 'registry::HKEY_CURRENT_USER\Control Panel\Accessibility\Blind Access' On 0
注意:
Get-ItemPropertyValue 'registry::HKEY_CURRENT_USER\Control Panel\Accessibility\Blind Access' On
如果此模式在 in-OS-session 中意外打开,且应用程序行为不当,无法再次关闭该模式,或者在执行此操作之前已崩溃,您可以临时关闭该模式,以便同一操作系统用户会话中的未来PowerShell会话不再看到警告:
以下内容改编自此 GitHub 评论,是一个 PowerShell 命令,它通过
Add-Type
和临时编译的 C# 代码(执行 P/Invoke 调用所必需的)来执行此操作:
# Run in PowerShell
(Add-Type -PassThru -Name ScreenReaderUtil -Namespace WinApiHelper -MemberDefinition @'
const int SPIF_SENDCHANGE = 0x0002;
const int SPI_SETSCREENREADER = 0x0047;
[DllImport("user32", SetLastError = true, CharSet = CharSet.Unicode)]
private static extern bool SystemParametersInfo(uint uiAction, uint uiParam, IntPtr pvParam, uint fWinIni);
public static void EnableScreenReader(bool enable)
{
var ok = SystemParametersInfo(SPI_SETSCREENREADER, enable ? 1u : 0u, IntPtr.Zero, SPIF_SENDCHANGE);
if (!ok)
{
throw new System.ComponentModel.Win32Exception(Marshal.GetLastWin32Error());
}
}
'@)::EnableScreenReader($false)
你也可以试试这个(刚刚为我醒来)
第1步:打开“运行”(WIN + R)
第 2 步:输入“regedit”
第三步:左侧有一个文件夹,名为“HKEY_CURRENT_USER”;点击它。
第 4 步:单击名为 “控制面板” 的子文件夹,然后单击名为 “盲访问” 的子文件夹或按照此路径 Computer\HKEY_CURRENT_USER\Control Panel\Accessibility\Blind Access
第5步:右键单击选项“打开”,选择选项“修改”,然后将值设置为0。
现在重新启动您的计算机,问题就解决了!