【问题标题】: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 你说“我找到了解决方案”是什么意思。你所描述的就是我的回答告诉你要做的。
  • 当时我听不懂你的回答。现在我通过获取函数的参数解决了这个问题。谢谢大家给我评论。

标签: c++ file winapi hook


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 如果记事本是用命令行参数打开的,然后用户在同一个记事本实例中打开了不同的文件,这将不起作用。
    猜你喜欢
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    • 2021-04-25
    • 2010-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-17
    相关资源
    最近更新 更多