|
这个问题吗,是PM.dll 电源管理程序的bug, pm.dll 在注册表可用之前就加载了。
pm.dll初始化的时候会去读取注册表的超时设置值,可这个时候注册表还不可用,所以读取注册表失败,pm.dll就用默认值去设置超时设置(1分钟进入用户空闲状态(关闭背光))。
为了pm.dll正确使用注册表的设置值,可以等注册表可用后再让pm.dll读取一次注册表的超时设置值。
这样就工作正常。
可用下面代码来强制pm.dll读取注册表值,可以放到自己的程序中,或者修改explorer.exe来调用都可以
// 指示PM.dll 重新读取电源管理超时时间
HANDLE hevReloadActivityTimeouts =
OpenEvent(EVENT_ALL_ACCESS, FALSE, _T("PowerManager/ReloadActivityTimeouts"));
if (hevReloadActivityTimeouts) {
SetEvent(hevReloadActivityTimeouts);
CloseHandle(hevReloadActivityTimeouts);
} |
|