是 Windows 电源管理用户特定的吗?
Posted
技术标签:
【中文标题】是 Windows 电源管理用户特定的吗?【英文标题】:Is Windows Power Management User Specific? 【发布时间】:2014-04-19 12:18:04 【问题描述】:我正在使用 C# 中的 Windows 电源管理 API (PowrProf.dll
P/Invokes) 来获取和设置系统的电源管理设置,但我不确定电源管理设置是用户特定的还是机器的-具体:(
Windows XP 的流程是获取活动电源方案(使用GetActivePwrScheme()
),读取全局电源设置(使用ReadGlobalPwrPolicy()
),读取特定于方案的设置(使用ReadPwrScheme()
),如有必要,写入修改后的数据返回系统(使用SetActivePwrScheme()
)。
windows vista 和 7 的流程是获取活动电源方案(使用PowerGetActiveScheme()
),读取单独的电源设置(使用PowerReadACValueIndex()
和PowerReadDCValueIndex()
),如有必要,将修改后的数据写回系统(使用PowerWriteACValueIndex()
或 PowerWriteDCValueIndex()
)。
问题是我更喜欢在 Windows 服务中运行这些代码,并且担心如果我运行这些代码,我将获取和设置 SYSTEM 帐户的电源管理设置。我有点困惑,请帮忙。
提前致谢。
【问题讨论】:
听起来很明显,我想澄清一下,我已经从 Windows 服务和 Windows 应用程序中对此进行了测试,结果是相同的(或者至少看起来与我完全相似),但我不想依赖猜测,我需要一些具体的东西,微软似乎没有提供任何关于这个问题的提示:( 真的吗?没人知道吗?! 【参考方案1】:在互联网上搜索了几个小时后,最后我不得不接受 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 上,同样的实验,产生了同样的结果!
【讨论】:
以上是关于是 Windows 电源管理用户特定的吗?的主要内容,如果未能解决你的问题,请参考以下文章