问个问题,如何获取WIN 7的 ShellExecute

贪食蛇男 2012-05-18 02:38:43
在XP上,双击一个文件时会调用 ShellExecuteExW(ShellExecuteA 调用 ShellExecuteExA ShellExecuteW 调用 ShellExecuteExW ShellExecuteExA 调用 ShellExecuteExW) 来打开一个文件或以其他方式操作一个文件,
所以可以通过HOOK ShellExecuteExW 来获取 explorer 的操作。当然,还有 IShellExecuteHook 使用。
但在WIN7上,双击时并不调用 ShellExecuteExW ,也没有 IShellExecuteHook 使用了。
现在我想在WIN7上截获 explorer 的双击动作,从而分析要打开的文件名,请问有什么思路。
ShellExecute 在WIN7 上有COM替代品吗?就像 SHFileOperation 在WIN7上被 IFileOperation 取代一样。

请高手回答下。
...全文
316 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jehvmq123 2012-08-04
  • 打赏
  • 举报
回复
scxcx
sryteawrt 2012-05-23
  • 打赏
  • 举报
回复
hook CreateProcessW
贪食蛇男 2012-05-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

这样的,一般是hook createprocess的,当然,你得过滤下这些操作,可以根据createprocess的传参来判断下
[/Quote]
嗯,就这样吧,简单点。

[Quote=引用 4 楼 的回复:]

在一个神秘的类里面
shell32!CRegistryVerbsContextMenu::InvokeCommand
没导出,你自己看着办吧
[/Quote]
列宁一如既往地给力,我去看看这个。
Lactoferrin 2012-05-18
  • 打赏
  • 举报
回复
在一个神秘的类里面
shell32!CRegistryVerbsContextMenu::InvokeCommand
没导出,你自己看着办吧
fishion 2012-05-18
  • 打赏
  • 举报
回复
这样的,一般是hook createprocess的,当然,你得过滤下这些操作,可以根据createprocess的传参来判断下
贪食蛇男 2012-05-18
  • 打赏
  • 举报
回复
这样错杀三千啊……我只想知道双击的文件的名字,结果要HOOK EXPLORER所有的进程创建动作。
我双击一个 txt 时,在 CreateProcessW 上下断,调用栈如下:
04c6eef0 76885186 kernel32!CreateProcessW
04c6efe8 76892c34 SHELL32!ShellExecuteW+0xf96
04c6f03c 76884f65 SHELL32!ShellExecuteExW+0x10a8
04c6f06c 7689f6ad SHELL32!ShellExecuteW+0xd75
04c6f08c 76884e34 SHELL32!Ordinal99+0x166
04c6f0b0 7689f72f SHELL32!ShellExecuteW+0xc44
04c6f0d0 768a3c6f SHELL32!Ordinal99+0x1e8
04c6f100 768a3ba0 SHELL32!SHGetDataFromIDListW+0x1ed
04c6f114 768a3df3 SHELL32!SHGetDataFromIDListW+0x11e
04c6f140 768a3d56 SHELL32!SHGetDataFromIDListW+0x371
04c6f3b4 768a0495 SHELL32!SHGetDataFromIDListW+0x2d4
04c6f438 768a036d SHELL32!Ordinal99+0xf4e
04c6f718 76beeb2f SHELL32!Ordinal99+0xe26
04c6f894 76beed8e SHELL32!Ordinal813+0x522f
04c6f8d0 75e946bc SHELL32!Ordinal813+0x548e
04c6f958 77661174 SHLWAPI!IUnknown_QueryService+0x15b
04c6f964 7752b3f5 kernel32!BaseThreadInitThunk+0x12
04c6f9a4 7752b3c8 ntdll!RtlInitializeExceptionChain+0x63
04c6f9bc 00000000 ntdll!RtlInitializeExceptionChain+0x36


SHELL32!ShellExecuteW+0xf96 ……这种地方连符号都没啊
[Quote=引用 1 楼 的回复:]

直接Hook ZwCreateProcess()
[/Quote]
oyljerry 2012-05-18
  • 打赏
  • 举报
回复
直接Hook ZwCreateProcess()

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧