Win10下如何查询程序最后使用时间?技术方案求助
以下是几个经过验证的实用方案,针对你之前尝试的无效情况给出替代思路:
利用Windows事件日志追踪进程启动
Windows系统的事件日志会记录进程启动相关事件,多数桌面版本中可关注Microsoft-Windows-Security-Auditing提供的事件ID 4688(进程创建)。你可以用命令行快速筛选目标程序的启动记录:wevtutil qe Security /q:"*[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and EventID=4688]] and EventData[Data[@Name='NewProcessName']='C:\\Path\\To\\Your\\target.exe']" /f:text日志中的时间戳就是程序最后启动的时间,注意系统会自动覆盖旧日志,需确保日志保留时长足够。
检查Prefetch预取文件的访问时间
Windows会在C:\Windows\Prefetch目录生成预取文件,文件名格式为[EXE文件名]-[哈希值].PF,这些文件的最后访问时间通常对应程序最后一次运行的时间。不过默认Windows关闭了NTFS最后访问时间记录,需先开启:
以管理员身份执行命令:fsutil behavior set disablelastaccess 0重启系统后,可通过以下命令按访问时间排序查看预取文件:
dir C:\Windows\Prefetch\*.PF /TA /O-D注意预取文件可能被系统定期清理,且部分程序不会生成预取文件。
WMI查询运行中程序的启动时间
如果目标程序当前正在运行,可通过WMI快速获取其启动时间,比如用PowerShell命令:Get-WmiObject Win32_Process | Where-Object {$_.Name -eq "target.exe"} | Select-Object Name, CreationDate但该方法仅适用于程序处于运行状态的场景,程序退出后无法追溯历史记录。
启用NTFS最后访问时间后检查EXE文件
你之前检查EXE最后修改日期无效,是因为修改日期和运行时间无关,但开启NTFS最后访问时间(即上述Prefetch方案中的fsutil命令)后,EXE文件的最后访问时间会在程序运行时更新,此时可通过文件属性或命令dir "C:\Path\To\target.exe" /TA查看。不过该方法受系统清理、文件移动等操作影响,准确性不如前两种。
内容的提问来源于stack exchange,提问作者SIrclassic

