在 Windows 中以编程方式读取“关闭硬盘后”的值

在 Windows 中以编程方式读取“关闭硬盘后”的值

我正在寻找一种方法来以编程方式读取 Windows 7 及更高版本的高级电源选项中的“关闭硬盘”值的当前设置。

我知道

powercfg -change disk-timeout-ac xx

powercfg -change disk-timeout-dc xx

命令来设置此值。但是,似乎没有等效命令来读取当前设置的值。另外,我找不到此注册表设置。

答案1

由于您是在超级用户而不是 Stack Overflow 上提问,因此我将重点介绍可编写脚本(注册表)的方式。

所有电源设置都可以通过注册表中的此项访问:

HKLM\CurrentControlSet\Control\Power

User\PowerSchemes子项有一个名为的条目ActivePowerScheme,您可能已经猜到了,它包含当前电源计划的 ID。所有与电源管理相关的 ID 都是 GUID,但我的快速调查显示,所有机器上的默认 ID 都是相同的。的子项PowerSchemes是电源方案。381b4222-f694-41f0-9685-ff5bb260df2e例如,平衡(推荐)

电源选项

电源方案键的子键是高级电源选项中出现的类别。这些是在 的子键中定义的。PowerSettings例如Power0012ee47-9041-4b5d-9b77-535fba8b1442硬盘如上图所示。那些是单独的设置。6738e2c4-e8a5-4a42-b16a-e040e769756e关闭硬盘后。这些键有一个DefaultPowerSchemeValues子键,每个标准电源计划都有一个子键。这些键有一个AcSettingIndexDcSettingIndex条目,它们正是您所想的。使用的单位因设置而异;这个使用秒。因此,您可以看到平衡电源计划的默认硬盘关机超时为 1200 秒(20 分钟)(插入电源时)和 600 秒(10 分钟)(使用电池时)。

注册表默认值

现在回到User\PowerSchemes键。由于用户可能从未更改过设置,因此无法保证该键会同时包含 AC 和 DC 设置条目、设置子键,甚至类别子键。如果您要查找的值不在那里,则需要检查当前电源计划的默认值PowerSettings\DefaultPowerSchemeValues

请注意,虽然每个人都可以读取这些键和值,但即使是管理员也无法写入。这是因为电源设置应该通过以Power身份运行的服务进行管理SYSTEM


已编译 (C++) 应用程序的开发人员应使用已记录的电源管理接口。调用GetCurrentPowerPolicies,得到user的一部分POWER_POLICY结构,并查看SpindownTimeoutAcSpindownTimeoutDc值。

相关内容