c# - 我在哪里可以找到有关 Windows 处于待机模式的信息

标签 c# windows events standby

我有一个 C# 应用程序可以为用户查找“开始工作”和“完成工作”事件。目标是获取包含日期时间值的列表,PC 何时“启动”以及何时再次“关闭”。

这适用于登录/注销和休眠,但不适用于待机(节能)。使用 eventvwr 搜索我找不到与“进入待机”和“从待机中唤醒”相关的正确事件。

有了这个,我从 Windows 事件日志中读取:

public SortedDictionary<string, UserProfileEvent> ReadUserProfileEvents() {
    string queryString = string.Format("*[System[TimeCreated[@SystemTime>='{0}' and @SystemTime<='{1}']]]", this.StartDate.ToString("s"), this.EndDate.ToString("s"));
    var q = new EventLogQuery("Microsoft-Windows-User Profile Service/Operational", PathType.LogName, queryString);
    var r = new EventLogReader(q);

    var liste = new SortedDictionary<string, UserProfileEvent>();

    EventRecord e = r.ReadEvent();
    UserProfileEvent upe = null;
    while (e != null) {
        upe = new UserProfileEvent(e);
        try {
            liste.Add(upe.SortKey, upe);
        }
        catch (Exception exp) {
            throw new Exception("Some error text", exp);
        }
        e = r.ReadEvent();
    }
    return liste;
}

知道在哪里可以找到正确的事件吗?

编辑:我刚刚找到“Microsoft-Windows-Power-Troubleshooter”和“Microsoft-Windows-Kernel-Power”。这些协议(protocol)似乎指向了正确的方向......

最佳答案

并非所有内容都会列在事件日志中,因为它们并不重要,以至于需要(默认情况下)写入日志(在磁盘上)。

如果您的应用程序可以在后台运行,您可以订阅其中一些事件并做出相应的 react 。正如“C Sharper”已经写过的那样,您可以在 SystemEvents class 中找到它们.

  • 待命(Session ending - 在用户尝试注销或关闭系统时发生。)
  • 用户锁定屏幕(Session switch - 当前登录用户更改时发生)

关于c# - 我在哪里可以找到有关 Windows 处于待机模式的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33476168/

相关文章:

c# - System.Net.Http.MultipartFormDataContent 的 "curl -F"参数是否等效?

c# - Linq to Entities To Column 名称

windows - 在一行中将文件创建日期写入文本文件

windows - 全局描述符表和局部描述符表

winforms - winforms 事件处理程序是否与调用者发生在同一线程上?

c# - 无法重载具有类型约束的泛型方法

c# - Azure Function App-使用 dll 通过 functionB 调用 functionA

c++ - 将 Crashpad 与 Windows Qt 应用程序集成

javascript - 为什么一个按钮会导致我的整个网页重新加载?

javascript - 如何从Click事件函数返回ID值?