有没有办法从另一个进程中找出完整的文件路径?
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函数。
【讨论】:
如果记事本是用命令行参数打开的,然后用户在同一个记事本实例中打开了不同的文件,这将不起作用。以上是关于有没有办法从另一个进程中找出完整的文件路径?的主要内容,如果未能解决你的问题,请参考以下文章