Permitir temporizadores de despertar Windows 7 / Vista

Necesito permitir que WakeTimers (activación de la computadora desde el modo de suspensión / hibernación) para todos los planes de energía configurados conectados a Habilitado.

opciones de energía”>

Intenté Win32_PowerSetting pero solo funciona en la versión en inglés de Windows.

Necesito usar .NET 2.0

Gracias por las respuestas!

Sospecho que puedes hacer esto usando llamadas de API a powrprof.dll, así como a WMI, pero no he tenido tiempo de resolverlo.

Esta configuración parece ser simplemente una clave de registro booleana que se encuentra de acuerdo con su plan de energía actual:

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Power \ User \ PowerSchemes \ (GUID del esquema de energía actual) \ (GUID de la categoría de suspensión) \ (Habilitar el GUID de los temporizadores de activación de CA o CC) = 0 o 1

En lugar de manipular el registro directamente, un enfoque más limpio sería habilitar esta configuración mediante powercfg.exe.

Para alimentación de CA:

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

Para las baterías:

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

EDITAR:

Esto permite que los temporizadores de reactivación en mi sistema funcionen con alimentación de CA utilizando la combinación de energía de alto rendimiento (solo como prueba de concepto):

 [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); } 

Esta referencia es su amigo: http://msdn.microsoft.com/en-us/library/aa373163%28v=vs.85%29.aspx

Parece que puedes usar WMI para cambiar la configuración.

http://www.daniweb.com/software-development/csharp/threads/272577

Microsoft tiene un creador de código WMI que te ayudará:

https://www.microsoft.com/download/en/confirmation.aspx?displayLang=en&id=8572

Querrá buscar en “root \ CIMV2 \ power” para las cosas de administración de energía.

Escribí este script de powershell para habilitar o deshabilitar los temporizadores de activación en todas las combinaciones de energía actuales. En la segunda última línea “POWERCFG -setacvalueindex $ xAll $ xSubGuid $ zz 1”, el 1 significa habilitar. Solo cambia esto a 0 para deshabilitarlo.

 CLS #Capture Current Active Power Scheme $orgScheme = POWERCFG -GETACTIVESCHEME $yOrg = $orgScheme -split "\s+" $xOrg = $yOrg[3] Write-host Original Scheme = $xOrg Echo __________________________________ Echo " " $allScheme = POWERCFG /L #Echo $allScheme foreach ($line in $allScheme) { if ($line.Length -gt 40) { if ($line.substring(0,5) -eq "Power") { $yAll = $line -split "\s+" $xAll = $yAll[3] write-host $xAll Powercfg -S $xAll $pScheme = POWERCFG /Q foreach ($line in $pScheme) { $yy = $line -split "\s+" $xx = $yy[5]+$yy[6]+$yy[7]+$yy[8] $zz = $yy[4] $xSubGroup = $yy[1] If($xSubGroup -eq "SubGroup") { $xSubGuid = $yy[3] } If($xx -eq "(allowwaketimers)") { write-host Power Scheme Guid = $xAll write-host Subgroup Guid = $xSubGuid write-host WakeUp Guid = $zz Write-host POWERCFG -setacvalueindex $x $xSubGuid $zz 1 Echo " " break } } POWERCFG -setacvalueindex $xAll $xSubGuid $zz 1 } } } Powercfg -S $xOrg 

Disfrutar.

De https://adameyob.com/2015/02/how-to-enable-wake-timers/#comment-17

 powercfg /SETACINDEXVALUE SCHEME_BALANCED SUB_SLEEP RTCWake 1 powercfg /SETACINDEXVALUE SCHEME_MIN SUB_SLEEP RTCWake 1 powercfg /SETACINDEXVALUE SCHEME_MAX SUB_SLEEP RTCWake 1 

O desde http://adameyob.com/2015/02/how-to-enable-wake-timers/#comment-31

 FOR /f “tokens=1,2,3,4” %%I IN ('powercfg.exe /getactivescheme') DO ( SET GUID=%%L ) powercfg /setacvalueindex %GUID% SUB_SLEEP RTCWAKE 1