首页/安全/取证与溯源速查/命令提示符历史与运行痕迹
Windows 取证55 条

命令提示符历史与运行痕迹

老版本 cmd 无内建历史,但 RunMRU 记录"运行"对话框输入:快速还原被执行的单行命令与路径。

取证与溯源速查安全更新于 2026-10-13

命令行历史与输入痕迹

命令行历史在 Windows 上并不集中在一处:cmd 本身不写历史文件,只在当前会话内支持上下键翻阅;PowerShell 5 以后由 PSReadLine 把交互输入写入用户目录的文本文件;而“运行”对话框里输入过的内容记录在注册表的 RunMRU 键。两类痕迹能还原被手工执行过的单行命令,以及打开或执行过哪些路径。

基本信息

cmd 历史不持久化,仅会话内可用,重启或关闭窗口即丢失
PowerShell 历史%APPDATA%\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
运行对话框HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU
顺序字段MRUList 的字母排列表示最近使用的先后次序
相关痕迹RecentDocs、跳转列表、终端会话录制

典型使用场景

  • 还原操作者在运行对话框里手工执行过的单行命令与程序名
  • 判断某个可执行文件是被人工启动,还是由服务或计划任务拉起
  • 取回已被删除工具的历史路径,作为后续文件检索的关键词
  • 核对当事人口述的操作过程与主机上留下的输入痕迹是否一致
  • 与会话录制、事件日志交叉验证,确认命令执行的先后顺序

历史痕迹查看

历史痕迹查看
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU"   # 运行对话框输入
Get-Content "$env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt" -Tail 30
ls "$env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine"   # 确认历史文件是否存在或被清空
# 多用户主机逐个用户目录取一次,避免只看到当前账号
# 文件不存在时改查会话录制与相关事件日志

痕迹对照

痕迹位置能回答的问题
RunMRUHKCU 下 Explorer\RunMRU 键运行对话框里输入过哪些内容
PSReadLine 历史用户目录下 PSReadLine 文本文件交互执行过哪些 PowerShell 命令
cmd 会话无持久化文件只能靠会话录制或进程证据还原
RecentDocs 与跳转列表HKCU 下 Explorer 相关键、用户目录访问过哪些文档与文件路径
RunMRU 的键值是展示用字符串,含转义与显示层的改写,个别字符与原始输入并不完全一致;解读时按原样记录,再人工还原成可能的命令,不要直接当作可执行命令写入结论。
PSReadLine 历史默认只保存命令文本、没有时间戳,单靠它无法确定执行时刻;要落到时间线必须借助文件修改时间、事件日志或终端会话录制,相互印证后再取值。

易错点

  • 把 RunMRU 的键值当成已执行的命令,实际只说明在运行对话框里输入过该串内容
  • 只取当前用户的历史文件,多用户主机上其他账号的操作痕迹整体漏掉
  • 历史文件被清空就断定没有交互操作,忽略会话录制与事件日志的旁证
  • 指望从 cmd 取历史文件,而 cmd 本身不持久化任何历史记录

数据来源与参考

  • 注册表取证通用实践(RunMRU)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌