我已成功创建了一个由事件 ID 触发的计划任务。例如,我有一个任务,每当记录事件 ID 4688 时,它都会运行 winver.exe。因此,如果我从运行提示符运行 notepad.exe,winver.exe 也会运行。但这意味着运行的任何 EXE 都会触发该任务,进而运行 winver.exe。这个范围太广了。我想缩小范围,以便只有当记录了正确类型的 4688 事件(即 cmd.exe 或 diskpart.exe)时,才会触发任务。
有什么简单的方法可以做到这一点?不仅要针对事件 ID,还要针对记录该事件 ID 的预定义进程名称?
补充截图...
答案1
似乎没有简单易行的方法来实现这一点。只有通过使用 XPath 表达式创建用于触发器的自定义事件过滤器才有可能。换句话说,编辑事件过滤器对话框中没有 GUI 控件元素可以帮助您选择特定数据字段(例如流程名称)来触发任务。
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">
*[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and Task = 13312 and (band(Keywords,9007199254740992)) and (EventID=4688)]]
and
*[EventData[Data[@Name='NewProcessName'] and (Data='C:\Windows\System32\cmd.exe')]]
</Select>
</Query>
</QueryList>
此示例仅当记录事件 ID 4688 且“新进程名称”字段包含字符串时,才会触发任务执行操作(在我的情况下运行 winver.exe)"C:\Windows\System32\cmd.exe"
。
如果您想做类似的事情,但希望其他字段触发任务,请查看您想要定位的事件。eventvwr.msc
从运行提示符运行并浏览到 Windows 日志、安全。双击事件或右键单击,然后单击事件属性以打开属性对话框。然后单击详细信息选项卡并选择 XML 视图。这将帮助您找出可以用作目标的其他字段。使用与上面示例相同的语法。
补充截图...
答案2
根据以下事件 [无法上传截图],此查询是否正确: 在此处输入图片描述 * [System[Provider[@Name='Microsoft-Windows-NetworkProfile'] 和 EventID=10000] 和 [System[Data Name[@Name='donain.local']]
Log Name: Microsoft-Windows-NetworkProfile/Operational
Source: Microsoft-Windows-NetworkProfile
Date: 30/01/2024 11:22:17
Event ID: 10000
Task Category: None
Level: Information
Keywords: (35184372088832),(32)
User: LOCAL SERVICE
Computer: hostname.domain.local
Description:
Network Connected
Name: domain.local
Desc: domain.local
Type: Managed
State: Connected,IPV4 (Internet)
Category: Domain Authenticated
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Microsoft-Windows-NetworkProfile" Guid="{fbcfac3f-8459-419f-8e48-1f0b49cdb85e}" />
<EventID>10000</EventID>
<Version>0</Version>
<Level>4</Level>
<Task>0</Task>
<Opcode>0</Opcode>
<Keywords>0x4000200000000020</Keywords>
<TimeCreated SystemTime="2024-01-30T11:22:17.7886211Z" />
<EventRecordID>2958</EventRecordID>
<Correlation />
<Execution ProcessID="3060" ThreadID="10400" />
<Channel>Microsoft-Windows-NetworkProfile/Operational</Channel>
<Computer>hostname.domain.local</Computer>
<Security UserID="S-1-5-19" />
</System>
<EventData>
<Data Name="Name">domain.local</Data>
**<Data Name="Description">domain.local</Data>**
<Data Name="Guid">{87863f8a-97c6-47f3-918d-1503887f4e70}</Data>
<Data Name="Type">1</Data>
<Data Name="State">9</Data>
<Data Name="Category">2</Data>
</EventData>
</Event>