0

我正在使用PowrProf.dllC# 中的 Windows 电源管理 API(P/Invokes)来获取和设置系统的电源管理设置,但我不确定电源管理设置是特定于用户还是特定于机器:(

Windows XP 的流程是获取活动电源方案(使用GetActivePwrScheme()),读取全局电源设置(使用ReadGlobalPwrPolicy()),读取特定于方案的设置(使用ReadPwrScheme()),如有必要,将修改后的数据写回系统(使用SetActivePwrScheme())。

windows vista 和 7 的流程是获取活动电源方案(使用PowerGetActiveScheme()),读取各个电源设置(使用PowerReadACValueIndex()PowerReadDCValueIndex()),如有必要,将修改后的数据写回系统(使用PowerWriteACValueIndex()PowerWriteDCValueIndex())。

问题是我更喜欢在 Windows 服务中运行这些代码,并且担心如果我运行这些代码,我将获取并设置 SYSTEM 帐户的电源管理设置。我有点困惑,请帮助。

提前致谢。

4

1 回答 1

2

在互联网上搜索了几个小时后,最后我不得不接受 MSDN 文档。根据 MSDN for XP,我们有:

全局用户电源策略:包含适用于用户所有电源方案的全局用户电源策略设置。

全局计算机电源策略:包含适用于所有用户的所有电源方案的全局计算机电源策略设置

用户电源策略:包含对用户的每个电源方案唯一的电源策略设置。

机器电源策略:包含计算机上每个电源方案独有的计算机电源策略设置

对于 Vista+,没有全局/本地或用户/机器设置;相反,一切都是特定于方案的,并且设置适用于所有用户。(见此

但是当我在两台不同的机器上测试上述事实时(一台在 Win XP 上运行,另一台在 Win 7 上运行),我得到了意想不到的结果!在 XP 上,从 Windows 服务(以 SYSTEM 帐户运行)和 Windows 应用程序(以管理员帐户运行)运行我的代码表明没有特定于用户的行为。在 Win7 上,同样的实验,产生了同样的结果!

于 2014-04-22T15:30:28.443 回答