允许唤醒计时器 Windows 7/Vista

2023-12-19

我需要允许唤醒计时器(计算机从睡眠/休眠状态唤醒),以将所有电源计划设置为已启用。

我尝试了 Win32_PowerSetting 但它只适用于英文版的 Windows。

我需要使用.NET 2.0

感谢您的回复!


我怀疑您可以使用对 powrprof.dll 的 API 调用以及 WMI 来完成此操作,但我还没有时间弄清楚该方法。

此设置似乎只是一个布尔注册表项,根据您当前的电源计划进行定位:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\User\PowerSchemes\(当前电源方案 GUID)\(睡眠类别 GUID)\(启用交流或直流唤醒定时器 GUID) = 0 或 1

与直接操作注册表相比,更简洁的方法是使用 powercfg.exe 启用这些设置。

对于交流电源:

powercfg.exe -SETACVALUEINDEX SCHEME_CURRENT SUB_SLEEP bd3b718a-0680-4d9d-8ab2-e1d2b4ac806d 1

对于电池:

powercfg.exe -SETDCVALUEINDEX SCHEME_CURRENT SUB_SLEEP bd3b718a-0680-4d9d-8ab2-e1d2b4ac806d 1

EDIT:

当使用高性能电源方案在交流电源上运行时,这可以在我的系统上启用唤醒计时器(纯粹作为概念证明):

[DllImport("powrprof.dll", EntryPoint = "PowerWriteACValueIndex", CharSet = CharSet.Auto, SetLastError = true)]
public static extern uint PowerWriteACValueIndex(IntPtr RootPowerKey, ref Guid SchemeGuid, ref Guid SubGroupOfPowerSettingsGuid, ref Guid PowerSettingGuid, uint AcValueIndex);

public static void EnableWakeTimers()
{
    Guid Root = new Guid("8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c"); // High Performance GUID
    Guid Sleep = new Guid("238c9fa8-0aad-41ed-83f4-97be242c8f20"); // Sleep Subcategory GUID
    Guid WakeTimers = new Guid("bd3b718a-0680-4d9d-8ab2-e1d2b4ac806d"); // Wake Timers GUID

    PowerWriteACValueIndex(IntPtr.Zero, ref Root, ref Sleep, ref WakeTimers, 1);
}

这个参考是你的朋友:http://msdn.microsoft.com/en-us/library/aa373163%28v=vs.85%29.aspx http://msdn.microsoft.com/en-us/library/aa373163%28v=vs.85%29.aspx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

允许唤醒计时器 Windows 7/Vista 的相关文章

随机推荐