我正在寻找一种方法来以编程方式读取 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
例如Power
,0012ee47-9041-4b5d-9b77-535fba8b1442
硬盘如上图所示。那些是单独的设置。6738e2c4-e8a5-4a42-b16a-e040e769756e
是关闭硬盘后。这些键有一个DefaultPowerSchemeValues
子键,每个标准电源计划都有一个子键。这些键有一个AcSettingIndex
和DcSettingIndex
条目,它们正是您所想的。使用的单位因设置而异;这个使用秒。因此,您可以看到平衡电源计划的默认硬盘关机超时为 1200 秒(20 分钟)(插入电源时)和 600 秒(10 分钟)(使用电池时)。
现在回到User\PowerSchemes
键。由于用户可能从未更改过设置,因此无法保证该键会同时包含 AC 和 DC 设置条目、设置子键,甚至类别子键。如果您要查找的值不在那里,则需要检查当前电源计划的默认值PowerSettings\DefaultPowerSchemeValues
。
请注意,虽然每个人都可以读取这些键和值,但即使是管理员也无法写入。这是因为电源设置应该通过以Power
身份运行的服务进行管理SYSTEM
。
已编译 (C++) 应用程序的开发人员应使用已记录的电源管理接口。调用GetCurrentPowerPolicies
,得到user
的一部分POWER_POLICY
结构,并查看SpindownTimeoutAc
和SpindownTimeoutDc
值。