KxngDemon
2024-06-15T11:34:51+00:00
接上贴[url=https://bbs.nga.cn/read.php?tid=40437498]关于AMD CPU和Intel CPU对Windows电源设置默认值的更改的初步调查[/url]
在每次全新安装Windows时,Windows会安装C:\Windows\Provisioning\Packages目录下的所有.ppkg文件。
这其中就包括了:
Power.Settings.Processor.Amd.ppkg
和Power.Settings.Processor.Intel.ppkg
[img]https://img.nga.178.com/attachments/mon_202406/15/9aQ19i-4rc0K1oT3cSz9-yc.png[/img]
Power.Settings.Processor.Amd.ppkg是AMD提供给微软的,其中包括了所有已发售的AMD处理器的电源设置应用规则。
Power.Settings.Processor.Intel.ppkg是Intel提供给微软的,其中包括了所有已发售的Intel处理器的电源设置应用规则。
这两个ppkg文件会随着新一代CPU的发售和上市而同步更新版本和规则内容。
安装这些ppkg时,系统会检测CPU厂商、CPU类型、PC平台类型(桌面端或笔记本端或平板端,是否AOAC平台),并根据这些属性,应用对应的provisioning设置,即覆盖Windows电源设置的默认值。
比如我的13代桌面平台,就同时符合"IntelSystem"、"ProcessorTypeNonMobileRaptorLake"、"ProcessorTypeNonMobileRaptorLakeS"这3个属性,会应用这些属性对应的provisioning设置。
[img]https://img.nga.178.com/attachments/mon_202406/15/9aQ19i-67dlK2qT3cSp7-107.png[/img]
ppkg安装完成后,注册表位置"计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\"的各个电源项目设置里会出现ProvAcSettingIndex和ProvDcSettingIndex。
ProvAcSettingIndex为AC电源即插电状态下的覆盖电源设置默认值,ProvDcSettingIndex为DC电源即电池状态下的覆盖电源设置默认值。
它们的优先级更高,在决定电源设置默认值时,会分别覆盖Windows默认的"ACSettingIndex"和"DCSettingIndex"。
以处理器性能核心放置最小核心数量/Processor performance core parking min cores/CPMinCores为例,
注册表位置"计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\0cc5b647-c1df-4637-891a-dec35c318583"
“平衡”电源计划(381b4222-f694-41f0-9685-ff5bb260df2e)的AC Windows默认值"ACSettingIndex"为100%,
AC 覆盖默认值"ProvAcSettingIndex"为4%。
[img]https://img.nga.178.com/attachments/mon_202406/15/9aQ19i-5md4KtT3cS1pc-8s.png[/img]
当我们使用同一个系统硬盘,从IU平台切换到AU平台,或者从AU平台切换到IU平台,或者从桌面平台切换到笔记本平台,会希望清除给旧CPU/旧平台用的覆盖默认值,然后重新生成给新CPU/新平台用的覆盖默认值。
除了全新重装系统外,我们先卸载对应ppkg,再重新安装ppkg也可以达到这一目标。
以从Intel平台切换到AMD平台为例:
1. 卸载Intel的ppkg,以清除给旧CPU/旧平台用的覆盖默认值。
使用带管理员权限的命令行终端,输入命令"Uninstall-ProvisioningPackage -PackagePath C:\Windows\Provisioning\Packages\Power.Settings.Processor.Intel.ppkg"
[img]https://img.nga.178.com/attachments/mon_202406/15/9aQ19i-j5ipKgT3cS13v-89.png[/img]
这种方法会删除对应.ppkg文件,建议先备份文件,万一以后还用得到呢
当然删除了也没关系,以后在网上问别人拿就是了
另一种方法:
使用带管理员权限的命令行终端,输入命令"(Get-ChildItem -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Power\PowerSettings" -Recurse).Name | ForEach-Object {Remove-ItemProperty -path Registry::$_ -Name "Prov*Index"}"
这种方法不会删除对应.ppkg文件,仅删除注册表值。
2. 重新安装AMD的ppkg,以重新生成给新CPU/新平台用的覆盖默认值。
像步骤1那样用"Install-ProvisioningPackage"命令来直接安装ppkg会报错并安装失败,需要利用Provisioning Tool才能安装成功。
先重启电脑,使用带管理员权限的命令行终端,输入命令"C:\Windows\system32\ProvTool.exe /turn 5 /source LogonIdleTask",这会把"C:\Windows\Provisioning\Packages"目录中的所有ppkg全部安装一遍。
[img]https://img.nga.178.com/attachments/mon_202406/15/9aQ19i-94xlKdT3cSxd-7a.png[/img]
其实啥也不干,重启后系统空闲时Provisioning Tool也会根据计划任务"\Microsoft\Windows\Management\Provisioning\Logon"自动执行上述操作,上述操作只是等效于手动触发该计划任务,不用等而已。
[img]https://img.nga.178.com/attachments/mon_202406/15/9aQ19i-kb0sZfT3cS1nj-15d.png[/img]
在事件查看器的"Microsoft-Windows-Provisioning-Diagnostics-Provider/Admin"日志里可以看到安装操作是否成功。如果第一次安装不成功,Provisioning Tool会自动生成一个计划任务,过几分钟再执行第二次安装。(我测试第一次安装总是部分不成功,第二次安装才全部成功)
[img]https://img.nga.178.com/attachments/mon_202406/15/9aQ19i-gto5ZeT3cS2dv-r6.png[/img]
最后感谢B站大佬[@二川二水的资料室],他的专栏很有帮助,并且还解答了我的具体疑问
在每次全新安装Windows时,Windows会安装C:\Windows\Provisioning\Packages目录下的所有.ppkg文件。
这其中就包括了:
Power.Settings.Processor.Amd.ppkg
和Power.Settings.Processor.Intel.ppkg
[img]https://img.nga.178.com/attachments/mon_202406/15/9aQ19i-4rc0K1oT3cSz9-yc.png[/img]
Power.Settings.Processor.Amd.ppkg是AMD提供给微软的,其中包括了所有已发售的AMD处理器的电源设置应用规则。
Power.Settings.Processor.Intel.ppkg是Intel提供给微软的,其中包括了所有已发售的Intel处理器的电源设置应用规则。
这两个ppkg文件会随着新一代CPU的发售和上市而同步更新版本和规则内容。
安装这些ppkg时,系统会检测CPU厂商、CPU类型、PC平台类型(桌面端或笔记本端或平板端,是否AOAC平台),并根据这些属性,应用对应的provisioning设置,即覆盖Windows电源设置的默认值。
比如我的13代桌面平台,就同时符合"IntelSystem"、"ProcessorTypeNonMobileRaptorLake"、"ProcessorTypeNonMobileRaptorLakeS"这3个属性,会应用这些属性对应的provisioning设置。
[img]https://img.nga.178.com/attachments/mon_202406/15/9aQ19i-67dlK2qT3cSp7-107.png[/img]
ppkg安装完成后,注册表位置"计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\"的各个电源项目设置里会出现ProvAcSettingIndex和ProvDcSettingIndex。
ProvAcSettingIndex为AC电源即插电状态下的覆盖电源设置默认值,ProvDcSettingIndex为DC电源即电池状态下的覆盖电源设置默认值。
它们的优先级更高,在决定电源设置默认值时,会分别覆盖Windows默认的"ACSettingIndex"和"DCSettingIndex"。
以处理器性能核心放置最小核心数量/Processor performance core parking min cores/CPMinCores为例,
注册表位置"计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\0cc5b647-c1df-4637-891a-dec35c318583"
“平衡”电源计划(381b4222-f694-41f0-9685-ff5bb260df2e)的AC Windows默认值"ACSettingIndex"为100%,
AC 覆盖默认值"ProvAcSettingIndex"为4%。
[img]https://img.nga.178.com/attachments/mon_202406/15/9aQ19i-5md4KtT3cS1pc-8s.png[/img]
当我们使用同一个系统硬盘,从IU平台切换到AU平台,或者从AU平台切换到IU平台,或者从桌面平台切换到笔记本平台,会希望清除给旧CPU/旧平台用的覆盖默认值,然后重新生成给新CPU/新平台用的覆盖默认值。
除了全新重装系统外,我们先卸载对应ppkg,再重新安装ppkg也可以达到这一目标。
以从Intel平台切换到AMD平台为例:
1. 卸载Intel的ppkg,以清除给旧CPU/旧平台用的覆盖默认值。
使用带管理员权限的命令行终端,输入命令"Uninstall-ProvisioningPackage -PackagePath C:\Windows\Provisioning\Packages\Power.Settings.Processor.Intel.ppkg"
[img]https://img.nga.178.com/attachments/mon_202406/15/9aQ19i-j5ipKgT3cS13v-89.png[/img]
这种方法会删除对应.ppkg文件,建议先备份文件,万一以后还用得到呢
当然删除了也没关系,以后在网上问别人拿就是了
另一种方法:
使用带管理员权限的命令行终端,输入命令"(Get-ChildItem -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Power\PowerSettings" -Recurse).Name | ForEach-Object {Remove-ItemProperty -path Registry::$_ -Name "Prov*Index"}"
这种方法不会删除对应.ppkg文件,仅删除注册表值。
2. 重新安装AMD的ppkg,以重新生成给新CPU/新平台用的覆盖默认值。
像步骤1那样用"Install-ProvisioningPackage"命令来直接安装ppkg会报错并安装失败,需要利用Provisioning Tool才能安装成功。
先重启电脑,使用带管理员权限的命令行终端,输入命令"C:\Windows\system32\ProvTool.exe /turn 5 /source LogonIdleTask",这会把"C:\Windows\Provisioning\Packages"目录中的所有ppkg全部安装一遍。
[img]https://img.nga.178.com/attachments/mon_202406/15/9aQ19i-94xlKdT3cSxd-7a.png[/img]
其实啥也不干,重启后系统空闲时Provisioning Tool也会根据计划任务"\Microsoft\Windows\Management\Provisioning\Logon"自动执行上述操作,上述操作只是等效于手动触发该计划任务,不用等而已。
[img]https://img.nga.178.com/attachments/mon_202406/15/9aQ19i-kb0sZfT3cS1nj-15d.png[/img]
在事件查看器的"Microsoft-Windows-Provisioning-Diagnostics-Provider/Admin"日志里可以看到安装操作是否成功。如果第一次安装不成功,Provisioning Tool会自动生成一个计划任务,过几分钟再执行第二次安装。(我测试第一次安装总是部分不成功,第二次安装才全部成功)
[img]https://img.nga.178.com/attachments/mon_202406/15/9aQ19i-gto5ZeT3cS2dv-r6.png[/img]
最后感谢B站大佬[@二川二水的资料室],他的专栏很有帮助,并且还解答了我的具体疑问