在许多网络文章中,甚至在有关禁用 Windows 热键(例如Win
+P
或Win
+ )的问题的答案中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执行。重新启动计算机以使更改生效。