是 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 电源管理用户特定的吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何隐藏Windows 10的电源命令

linux必须拔电源才能重启

LightDM禁止电源管理按钮,xfce4禁止电源管理按钮

LightDM禁止电源管理按钮,xfce4禁止电源管理按钮

使用 Windows 电源管理 API 调暗显示器

黑苹果独立显卡电源管理数据注入工具