gpt4 book ai didi

c++ - explorer中双击文件怎么 Hook ?

转载 作者:可可西里 更新时间:2023-11-01 13:50:36 24 4
gpt4 key购买 nike

当用户双击文件启动时,如果文件符合特定条件,我需要执行自定义操作。

在WindowsXP中,可以使用detours在explorer.exe中hook ShellExecuteEx,文件名是可以访问的。我需要在 Windows 7 和 8 中做类似的事情。

如何在双击文件时执行一些代码,并获得文件名?

我需要一种方法,如果 Windows 更新补丁浏览器,该方法将继续有效。

最佳答案

使用 procmon 进行的简短检查表明,每次文件被资源管理器激活时(通过双击它或按回车键)。资源管理器搜索 HKCR\*\ShellEx\DataHandler

DataHandlerwindows shell extensions 的众多类型之一.

因此,虽然文档说明它用于拖放操作,但它似乎总是在以下情况下调用它打开一个文件。

我关注了 How to Create Data Handlers关于如何注册一个的教程,只需做一个小改动:我在 HKCR\*\ShellEx\DataHandler 下添加了 DataHandler,带有自定义 GUID 和相应的 CLSID 条目并将其链接到不执行任何操作的 dll。现在每次我单击或“输入”文件时它都会加载。我没有实现所有必需的接口(interface),但根据文档:

The Shell initializes the handler through its IPersistFile interface. It uses this interface to request the handler's class identifier (CLSID) and provides it with the file's name.

因此从理论上讲,实现所需接口(interface)的 dll 应该可以访问它,并且您可以在每次访问时访问文件名并执行自定义操作,而不做任何其他事情。

我目前没有时间自己编写这样的 dll(也许稍后),但它看起来是一个不错的方向,您可以探索。

关于c++ - explorer中双击文件怎么 Hook ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23637192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com