Windows电源管理用户是否特定?

时间:2014-04-19 12:18:05

标签: c# windows winapi power-management powermanager

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

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

Windows Vista和7的流程是获取有效电源方案(使用PowerGetActiveScheme()),读取各个电源设置(使用PowerReadACValueIndex()PowerReadDCValueIndex())并在必要时写入修改后的电源设置数据返回系统(使用PowerWriteACValueIndex()PowerWriteDCValueIndex())。

事情是我更喜欢在Windows服务中运行这些代码,我担心如果我运行这些代码,我将获得并为SYSTEM帐户设置电源管理设置。我有点困惑,请帮忙。

提前致谢。

1 个答案:

答案 0 :(得分:2)

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

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

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

User Power Policy:包含针对用户每种电源方案所特有的电源策略设置。

Machine Power Policy:包含计算机每种电源方案所特有的计算机电源策略设置。

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

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