无法通过注册表或组策略编辑器禁用 Windows 热键

无法通过注册表或组策略编辑器禁用 Windows 热键

在许多网络文章中,甚至在有关禁用 Windows 热键(例如Win+PWin+ )的问题的答案中A,总是提出以下三种解决方案:

我尝试了所有三种解决方案,但它们对我来说都不起作用,即使重新启动我的电脑也是如此。我尝试遵循第一个,我的电脑上此注册表项的导出示例是:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"NoWinKeys"=dword:00000001

注销后,Windows 快捷方式仍能正常工作。然后我尝试了第二种解决方案:

我再次重启电脑,所有快捷方式都可用。然后我尝试使用最后一个解决方案禁用单个快捷方式,在本例中为Win+ P。以下是我电脑上注册表项的导出示例:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Advanced]
"DisabledHotkeys"=hex(2):50,00,00,00

退出并重新登录后,Win+P快捷键继续有效。

我的电脑上已采用这三种解决方案,但 Windows 快捷键仍可正常工作。我原以为其中一些几乎不可能禁用,例如Win+ L,但我似乎甚至无法禁用任何快捷键。

这是一个常见问题吗?是否有其他设置可以覆盖这些设置?

我并不是在寻找 AutoHotkey 解决方案。

我在 Windows 11 Pro 上,有一个管理员帐户。

答案1

您可以通过将 Windows 键重新映射到无效的扫描码0x0000

根据文档,Windows 键的扫描码为:

钥匙 扫描码
左键 0xe05b
右键 0xe05c

由于您要创建的值将位于 HKLM 下,因此您已从提升的/管理员的 PowerShell 控制台运行以下命令:

$NullKey        = [byte[]]($null,$null)
$LeftWindows    = [byte[]](0x5b,0xe0)
$RightWindows   = [byte[]](0x5c,0xe0)

$RemapCount     = 2

$ReMap          = [byte[]](
                          [Byte[]]::new(8) +
   [BitConverter]::GetBytes(1+$RemapCount) +
                   $NullKey + $LeftWindows +
                  $NullKey + $RightWindows +
                          [Byte[]]::new(4)
)

$Splat = @{
    'Path'  = 'HKLM:\SYSTEM\CurrentControlSet\Control\Keyboard Layout'
    'Name'  = 'ScanCode Map'
    'Value' = $Remap
    'Force' = $True
}
New-ItemProperty @Splat

###   To supress output, use:
###   [Void]New-ItemProperty @Splat

您可以将上述代码作为单个块复制并粘贴到管理 PowerShell 控制台中,然后按Enter执行。重新启动计算机以使更改生效。

相关内容