我在C#中使用Windows电源管理API(PowrProf.dll
P / Invokes)来获取和设置系统的电源管理设置,但我不确定电源管理设置是否是特定于用户的或机器特定的:(
Windows XP的流程是获取有效电源方案(使用GetActivePwrScheme()
),读取全局电源设置(使用ReadGlobalPwrPolicy()
),读取特定于方案的设置(使用ReadPwrScheme()
)和如有必要,将修改后的数据写回系统(使用SetActivePwrScheme()
)。
Windows Vista和7的流程是获取有效电源方案(使用PowerGetActiveScheme()
),读取各个电源设置(使用PowerReadACValueIndex()
和PowerReadDCValueIndex()
)并在必要时写入修改后的电源设置数据返回系统(使用PowerWriteACValueIndex()
或PowerWriteDCValueIndex()
)。
事情是我更喜欢在Windows服务中运行这些代码,我担心如果我运行这些代码,我将获得并为SYSTEM帐户设置电源管理设置。我有点困惑,请帮忙。
提前致谢。
答案 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上,同样的实验,创造了相同的结果!