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。
# 检查并切换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/