Windows可移动介质事件ID4656未上报文件夹实际名称求助
解决4656事件显示默认文件夹名称的问题
核心原因
Windows创建新文件夹时,会先以系统默认名称“New Folder”生成对象,此时触发4656事件;用户后续修改文件夹名称的操作,会触发**4663事件(对象被访问)+ 4657事件(对象属性修改)**的组合,你需要关联这两类事件才能获取最终的文件夹名称。
具体关联逻辑
- 捕获目标路径下的4656事件(操作类型为
CreateFile,对象名称包含“New Folder”),记录该事件的SubjectLogonId(用户登录ID)和ObjectHandleId(对象句柄ID)。 - 查找同一用户登录ID下,句柄ID匹配的4657事件:该事件的
ObjectType为File,AttributeValue字段会包含修改后的文件夹名称,OperationType为Rename。
PowerShell处理示例
# 筛选目标路径下的4656新建文件夹事件 $newFolderEvents = Get-WinEvent -FilterHashtable @{ LogName = 'Security' Id = 4656 } | Where-Object { $_.Properties[6].Value -match 'New Folder' -and $_.Properties[4].Value -eq 'CreateFile' } foreach ($event in $newFolderEvents) { $logonId = $event.Properties[2].Value $handleId = $event.Properties[10].Value $originalPath = $event.Properties[6].Value # 关联查找对应的4657重命名事件 $renameEvent = Get-WinEvent -FilterHashtable @{ LogName = 'Security' Id = 4657 } | Where-Object { $_.Properties[2].Value -eq $logonId -and $_.Properties[9].Value -eq $handleId -and $_.Properties[11].Value -eq 'Rename' } if ($renameEvent) { $finalName = $renameEvent.Properties[12].Value Write-Host "原路径:$originalPath | 最终名称:$finalName" } else { Write-Host "未找到重命名事件,名称保持默认:$originalPath" } }
额外注意事项
- 必须已启用文件系统的“对象属性修改”审核策略,否则4657事件不会被记录。
- 若用户创建文件夹后未重命名,4656事件的默认名称就是最终名称,无需关联其他事件。
内容的提问来源于stack exchange,提问作者TonyD
相关产品推荐
相关产品推荐

