有没有办法从另一个进程中找出完整的文件路径?

Posted

技术标签:

【中文标题】有没有办法从另一个进程中找出完整的文件路径?【英文标题】:Is there any way to find out full file path from another process? 【发布时间】:2013-06-06 18:38:59 【问题描述】:

最近我做了一个从notepad.exe挂钩函数“WriteFile”的程序。

我想获取被我的应用程序挂钩的文档的完整路径,所以我使用了

GetModuleFileName/GetModuleFileNameEx。但是,我只能找到的字符串是

'notepad.exe'

关于这种情况,我想问你一个问题。

有什么方法可以获取文件的文件名吗?比如 C:\Desktop\test.txt

【问题讨论】:

让我们退后一步。你为什么要从记事本中获取文档路径?挂钩 API 很危险且不受支持。也许还有另一种不那么危险的解决方案。 我找到了解决方案。我忘记了我已经挂钩了原始函数“WriteFile”的事实。我刚刚捕获了它的参数'HANDLE',我可以从中获取文档的名称。 @Park 你说“我找到了解决方案”是什么意思。你所描述的就是我的回答告诉你要做的。 当时我听不懂你的回答。现在我通过获取函数的参数解决了这个问题。谢谢大家给我评论。 【参考方案1】:

首先,我什至无法想象你的程序的意义。在我看来,很有可能会有更好的方法来实现您的实际目标。

但是,从表面上看,如果你已经上钩了WriteFile,那么大概你也可以钩住CreateFile。如果这不是一个选项,无论出于何种原因,您都可以轻松地从挂钩的 WriteFile 中找到文件名。致电GetFileInformationByHandleEx 传递FileNameInfo

【讨论】:

【参考方案2】:

如果记事本从命令行接收到文档的文件名,使用GetCommandLine函数。

【讨论】:

如果记事本是用命令行参数打开的,然后用户在同一个记事本实例中打开了不同的文件,这将不起作用。

以上是关于有没有办法从另一个进程中找出完整的文件路径?的主要内容,如果未能解决你的问题,请参考以下文章

从另一个vscode扩展添加到vscode python jedi的路径

如何使用 JavaScript 从完整路径中获取文件名?

从完整文件路径中查找文件名

如何获取文件名命令行参数的完整路径?

使用 WinAPI 找出锁定文件的原因

文件被哪个进程锁定?