673 字
3 分钟
Windows 11 糟糕的平板模式修复

前言#

众所周知,Windows 11 会检测电脑是否连接键盘,来判断电脑是否属于平板,如果是平板,则会启用平板模式优化。会强制开启复选框,软件强制最大化,任务栏折叠等。这不符合大部分人的操作习惯,而且在我的电脑上,即使连接了键盘,还是会开启平板模式。虽然我在 https://rainview.net/posts/win11-padmode-switch/ 讲过关闭的方法,但是修改后下次重启平板模式自己又开了,需要再次修改注册表才能关掉。于是我便在上次文章的基础上,编写了一个脚本,让它在开机的时候自动帮我关闭平板模式。

开始折腾#

我让AI写了一个PowerShell脚本,可以自动检测 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl 中 ConvertibleSlateMode 的值,如果是1则改为0,是0则改为1。

Terminal window
# 检查并切换ConvertibleSlateMode注册表值的脚本
# 需要以管理员权限运行
# 定义注册表路径和值名称
$registryPath = "HKLM:\SYSTEM\CurrentControlSet\Control\PriorityControl"
$valueName = "ConvertibleSlateMode"
# 检查注册表路径是否存在
if (-not (Test-Path $registryPath)) {
Write-Host "注册表路径不存在: $registryPath"
exit 1
}
# 检查值是否存在并获取当前值
try {
$currentValue = Get-ItemProperty -Path $registryPath -Name $valueName -ErrorAction Stop
} catch {
Write-Host "注册表值不存在,将创建该值并设置为0"
Set-ItemProperty -Path $registryPath -Name $valueName -Value 0 -Type DWord
Write-Host "已创建 $valueName 并设置为 0"
exit 0
}
# 切换值
if ($currentValue.$valueName -eq 1) {
Set-ItemProperty -Path $registryPath -Name $valueName -Value 0
Write-Host "已将 $valueName 从 1 修改为 0"
} elseif ($currentValue.$valueName -eq 0) {
Set-ItemProperty -Path $registryPath -Name $valueName -Value 1
Write-Host "已将 $valueName 从 0 修改为 1"
} else {
Write-Host "当前值不是0或1,重置为0"
Set-ItemProperty -Path $registryPath -Name $valueName -Value 0
}
Write-Host "操作完成"

有了脚本之后,只需要让脚本开机自启动就行了。不过现在有一个问题,使用注册表设置开机自启动会导致用户注销再重进也会执行脚本,使用任务计划程序可能会导致执行的时机不对。于是我便使用了组策略里面的开机启动脚本功能。

要想让脚本在自启动的时候也能修改,需要修改注册表中 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl 的权限为所有人,这样就可以不需要管理员身份修改了。

具体使用组策略配置启动脚本的配置方法,就在组策略中的 Windows 设置→脚本(启动/关机)→启动→PowerShell 脚本。将上面的脚本放到电脑上任意位置,运行时机选择最后运行Windows PowerShell 脚本,并选择使用这个脚本即可。

Windows 11 糟糕的平板模式修复
https://rainview.net/posts/win11-pad-mode-fix/
作者
RainView
发布于
2025-09-28
许可协议
CC BY-NC-SA 4.0