CMD与PowerShell不生成Jump Lists的原因探究及技术问询
Windows Shell工件生成实验:CMD、PowerShell等CLI无Jump Lists生成原因探究
问题与观察
通过CMD或PowerShell执行的标准文件操作(如创建、修改文件/文件夹),不会更新AutomaticDestinations或Recent文件夹,导致这类操作在取证场景下无法通过Jump Lists、Recent文件这类Shell工件被检测到。
实验步骤(Windows 11 Home 25H2 26200.8246)
- 使用ProcMon监控确认:CMD或PowerShell执行
mkdir、echo、New-Item等标准文件操作时,完全不会触发AutomaticDestinations或Recent文件夹的更新。 - 删除系统中所有
*.automaticDestinations-ms文件后,通过CLI创建文件,未触发这类文件的重新初始化。 - 在PowerShell会话中通过C# P/Invoke手动调用Win32 API
SHAddToRecentDocs,使用的签名如下:
public static extern void SHAddToRecentDocs(uint flags, string path);
实验结果
手动调用SHAddToRecentDocs时,ProcMon捕获到powershell.exe与explorer.exe发生交互,后续由explorer.exe负责写入LNK快捷文件和Jump List相关文件。
结论
CLI工具在Jump List和Recent文件夹这类取证工件中处于"不可见"状态,核心原因是它们缺少对shell32.dll的静态依赖,且未执行Shell所需的文件操作通知逻辑。这一结论证实:Jump List条目缺失不能直接等同于无相关文件操作活动发生。
技术问询
是否有人观察到Windows Terminal等现代CLI工具(或特定第三方Shell)会显式调用SHAddToRecentDocs API?
我正在撰写相关主题的论文,欢迎在终稿提交前提供见解或批评意见。
内容的提问来源于stack exchange,提问作者Sakar Joshi
相关产品推荐
相关产品推荐

