我正在尝试建立一个事件 ID 列表,该列表可用于确定机器何时关闭、启动、锁定和解锁。到目前为止,我已经找到了 6 个事件 ID,它们似乎是最佳候选者,但我想知道是否有更好的方法来确定它。
以下是我发现有用的事件 ID 列表(1、1074、6005、6006、4800、4801),来自“Power-Troubleshooter”、“User32”、“EventLog”和“Microsoft Windows 安全审核”来源。这些来自 Windows 10 (v1511),目前 Windows 10 是我唯一的目标要求,因为这是所有客户端计算机运行的。
下面是我建立的一个过滤查询示例
<QueryList>
<Query Id="0" Path="System">
<!-- Shutdown -->
<Select Path="System">*[System[Provider[@Name='User32'] and (EventID=1074) and TimeCreated[@SystemTime >= '2017-11-28T00:00:00.0000000']]]</Select>
<!-- Event Service Stop/Start -->
<Select Path="System">*[System[Provider[@Name='eventlog'] and (EventID=6005 or EventID=6006) and TimeCreated[@SystemTime >= '2017-11-28T00:00:00.0000000']]]</Select>
<!-- Startup -->
<Select Path="System">*[System[Provider[@Name='Microsoft-Windows-Power-Troubleshooter'] and (EventID=1) and TimeCreated[@SystemTime >= '2017-11-28T00:00:00.0000000']]]</Select>
<!-- Machine Lock/Unlock -->
<Select Path="Security">*[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and (EventID=4800 or EventID=4801) and TimeCreated[@SystemTime >= '2017-11-28T00:00:00.0000000']]]</Select>
</Query>
</QueryList>
我故意在查询中分离出各个源,然后将它们连接在一起,但在我看来这会牺牲可读性。
我的问题是,是否有更好的事件 ID 组或更好的查询可供我使用?是否有我遗漏或重复的事件 ID?
额外的:
有时(例如,如果您在托管域中),您可能需要通过本地组策略编辑器 (gpedit) 启用登录和注销事件。您可以按照以下步骤执行此操作:
- 打开
Task Manager
然后File
>Run new task
。- 键入
gpedit.msc
并检查Create this task with administrative privileges.
),然后单击确定。- 在本地组策略编辑器中,转到
Computer Configuration
>Windows Settings
>Security Settings
>Advanced Audit Policy Configuration
>System Audit Policies - Local Group Policy Object
>Logon/Logoff
。- 在侧面板中,确保以下类别已设置为
Success and Failure
。如果没有,请双击并启用它们:
Audit Other Login/Logoff Events
(成功与失败)Audit Logon
(成功与失败)Audit Logoff
(成功与失败)
答案1
参照您关于启动和关闭事件 ID 的请求,我基于 Windows 10 计算机制作了以下列表。主要要点是,根据关闭操作(计划重启、计划关闭、意外关闭或 LSASS 进程崩溃),生成的事件会有所不同:
- 1074 进程 Explorer.EXE 已代表用户启动计算机关闭,原因如下:其他(非计划)
- 6006 事件日志服务已停止。
- 109 内核电源管理器已启动关机转换。
- 13 操作系统正在按系统时间关闭
- 20 上次关机的成功状态为真。 上次启动的成功状态为真。
- 12 操作系统在系统时间启动
- 6005 事件日志服务已启动。
- 6013 系统启动时间为10秒。
为了明确概述关于这些不同的关机操作,我做了下表。希望对您有帮助。
答案2
例如,如果您想知道人们是否在夜间将他们的电脑置于“睡眠”模式,那么从 Windows 11 收集的以下事件 ID 将会很有用:
- 42 系统正在进入睡眠状态。
- 107 系统已从睡眠状态恢复。
HTH 某人。
答案3
我对你的 XML 做了一些改进,比我以前的 XML 好多了,但是我们有几个不同的事件,所以这是一个合并版本,因为我用我的来打开和关闭电源板(http://dbugslife.blogspot.com/2020/08/ScreenSaverPowerStrip.html) 但所有这些都已被注释,因此您可以筛选出您想要查找的事件。
=== 关闭 ===
<QueryList>
<Query Id="0" Path="System">
<!-- Power Entering Sleep Mode -->
<Select Path="System">*[System[Provider[@Name='Microsoft-Windows-Kernel-Power'] and (EventID=42)]]</Select>
<!-- Shutdown/Reboot -->
<Select Path="System">*[System[Provider[@Name='User32'] and (EventID=1074)]]</Select>
<!-- Event Log Service Stop -->
<Select Path="System">*[System[Provider[@Name='eventlog'] and (EventID=6006)]]</Select>
<!-- Screensaver Invoked -->
<Select Path="Security">*[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and (EventID=4802)]]</Select>
<!-- Machine Lock -->
<Select Path="Security">*[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and (EventID=4800)]]</Select>
</Query>
</QueryList>
=== 打开 ===
<QueryList>
<Query Id="0" Path="System">
<!-- Power Resume from Sleep Mode -->
<Select Path="System">*[System[Provider[@Name='Microsoft-Windows-Kernel-Power'] and (EventID=107)]]</Select>
<!-- Event Log Service Start -->
<Select Path="System">*[System[Provider[@Name='eventlog'] and (EventID=6005)]]</Select>
<!-- Returned from Low Power State-->
<Select Path="System">*[System[Provider[@Name='Microsoft-Windows-Power-Troubleshooter'] and (EventID=1)]]</Select>
<!-- Screensaver Dismissed -->
<Select Path="Security">*[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and (EventID=4803)]]</Select>
<!-- Machine Lock/Unlock -->
<Select Path="Security">*[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and (EventID=4801)]]</Select>
</Query>
</QueryList>