关于网友提出的“ Win7 x64 删除文件调用什么api”问题疑问,本网通过在网上对“ Win7 x64 删除文件调用什么api”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: Win7 x64 删除文件调用什么api描述:
apihookWin 7 x64
Win 7 x64系统中删除文件调用什么api,比如用键盘上的delete键删除文件时,调用的是什么api函数啊?解决方案1:
我以为是 上面说的 SoftSnoop。我一直就用不了这个。
查看 API 我一直用 API Monitor。
WinDbg, 2012 有什么特别的吗? windows 的程序都是兼容的呀. 解决方案3:
我在 64 位下验证过了, explorer 在直接按 DELETE 把文件放入回收站是不会调用 DeleteFile 的, 按 Shift + DELETE 直接删除文件, 会调用 DeleteFileW, 调用堆栈为:
Child-SP RetAddr Call Site
00000000`1193ebb8 000007fe`fe4bb573 kernel32!DeleteFileW
00000000`1193ebc0 000007fe`fe5a490d SHELL32!SHDeleteFilePidl+0x13
00000000`1193ebf0 000007fe`fe3bac5c SHELL32!CFSTransfer::RemoveItem+0x159
00000000`1193ec70 000007fe`fe40d17a SHELL32!CRemoveOperation::Do+0x46
00000000`1193ecb0 000007fe`fe40db25 SHELL32!CCopyWorkItem::_DoOperation+0x42
00000000`1193ed20 000007fe`fe40e566 SHELL32!CCopyWorkItem::_SetupAndPerformOp+0x317
00000000`1193f000 000007fe`fe40e303 SHELL32!CCopyWorkItem::ProcessWorkItem+0x28e
00000000`1193f330 000007fe`fe40d576 SHELL32!CRecursiveFolderOperation::Do+0x30c
00000000`1193f3d0 000007fe`fe40ec77 SHELL32!CFileOperation::_EnumRootDo+0x24d
00000000`1193f490 000007fe`fe623740 SHELL32!CFileOperation::PrepareAndDoOperations+0x320
00000000`1193f580 000007fe`fe5e519e SHELL32!CFileOperation::PerformOperations+0x1e0
00000000`1193f5e0 000007fe`fe5f1466 SHELL32!DeleteItemsInDataObject+0xee
00000000`1193f660 000007fe`ff9dc71e SHELL32!DeleteItemsThreadProc+0x6a
00000000`1193f6b0 00000000`7763652d SHLWAPI!WrapperThreadProc+0x19b
00000000`1193f7b0 00000000`7776c521 kernel32!BaseThreadInitThunk+0xd
00000000`1193f7e0 00000000`00000000 ntdll!RtlUserThreadStart+0x1d
请问这个是什么工具分析出来的。
有支持 Windows Server 2012 的版本吗? 解决方案4:
我在 64 位下验证过了, explorer 在直接按 DELETE 把文件放入回收站是不会调用 DeleteFile 的, 按 Shift + DELETE 直接删除文件, 会调用 DeleteFileW, 调用堆栈为:
解决方案5:
Child-SP RetAddr Call Site
00000000`1193ebb8 000007fe`fe4bb573 kernel32!DeleteFileW
00000000`1193ebc0 000007fe`fe5a490d SHELL32!SHDeleteFilePidl+0x13
00000000`1193ebf0 000007fe`fe3bac5c SHELL32!CFSTransfer::RemoveItem+0x159
00000000`1193ec70 000007fe`fe40d17a SHELL32!CRemoveOperation::Do+0x46
00000000`1193ecb0 000007fe`fe40db25 SHELL32!CCopyWorkItem::_DoOperation+0x42
00000000`1193ed20 000007fe`fe40e566 SHELL32!CCopyWorkItem::_SetupAndPerformOp+0x317
00000000`1193f000 000007fe`fe40e303 SHELL32!CCopyWorkItem::ProcessWorkItem+0x28e
00000000`1193f330 000007fe`fe40d576 SHELL32!CRecursiveFolderOperation::Do+0x30c
00000000`1193f3d0 000007fe`fe40ec77 SHELL32!CFileOperation::_EnumRootDo+0x24d
00000000`1193f490 000007fe`fe623740 SHELL32!CFileOperation::PrepareAndDoOperations+0x320
00000000`1193f580 000007fe`fe5e519e SHELL32!CFileOperation::PerformOperations+0x1e0
00000000`1193f5e0 000007fe`fe5f1466 SHELL32!DeleteItemsInDataObject+0xee
00000000`1193f660 000007fe`ff9dc71e SHELL32!DeleteItemsThreadProc+0x6a
00000000`1193f6b0 00000000`7763652d SHLWAPI!WrapperThreadProc+0x19b
00000000`1193f7b0 00000000`7776c521 kernel32!BaseThreadInitThunk+0xd
00000000`1193f7e0 00000000`00000000 ntdll!RtlUserThreadStart+0x1d
SHFileOperation ??
解决方案6:
推荐使用SoftSnoop软件查看另一个程序在完成某个功能时调用了哪些API。
支持64位的系统吗
没在64位系统用过,不知道。
procmon好象支持64位。 解决方案7:
64 位程序和 32 位程序用的是不同的 dll
解决方案8:推荐使用SoftSnoop软件查看另一个程序在完成某个功能时调用了哪些API。
解决方案9:你 64 位下钩子的方法跑通了没得问题了?
解决方案10:难道 DeleteFile 不行?