如何获取单个应用程序(.exe)当前打开的文件列表。
例如,我正在运行媒体播放器MPV并且正在播放视频文件,知道它的PID如何获取该进程所持有的文件?
运行此代码
p = psutil.Process(15228) # manually set PID of MPV for testing
pprint.pprint(p.open_files())
返回以下数组
[popenfile(path='C:\\Windows\\System32\\pt-BR\\msvfw32.dll.mui', fd=-1),
popenfile(path='C:\\Windows\\Fonts\\arial.ttf', fd=-1),
popenfile(path='C:\\Windows\\System32\\pt-BR\\kernel32.dll.mui', fd=-1),
popenfile(path='C:\\Windows\\System32\\pt-BR\\MMDevAPI.dll.mui', fd=-1),
popenfile(path='C:\\Windows\\System32\\pt-BR\\avicap32.dll.mui', fd=-1)]
如果我使用p.cmdline()
获取 cmdline 并删除导致文件的文件夹,我可以成功获取当前播放文件,但只能在视频文件中使用是直接打开的,如果先播放了播放器然后将文件拖到它上面,那么就不会解析 cmdline 。
目前它可以是适用于Windows的平台相关解决方案。