Win7 x64 删除文件调用什么api

来源:互联网  时间:2016/9/1 20:15:05

关于网友提出的“ Win7 x64 删除文件调用什么api”问题疑问,本网通过在网上对“ Win7 x64 删除文件调用什么api”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: Win7 x64 删除文件调用什么api
描述:

apihookWin 7 x64

Win 7 x64系统中删除文件调用什么api,比如用键盘上的delete键删除文件时,调用的是什么api函数啊?

解决方案1:

我以为是 上面说的 SoftSnoop。我一直就用不了这个。
查看 API 我一直用 API Monitor。

解决方案2:

引用 16 楼 Saleayas 的回复:
Quote: 引用 14 楼 adlay 的回复:

我在 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 的版本吗?

WinDbg, 2012 有什么特别的吗? windows 的程序都是兼容的呀. 解决方案3:

引用 14 楼 adlay 的回复:
我在 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, 调用堆栈为:


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
解决方案5:

SHFileOperation ??

解决方案6:

引用 6 楼 szxy5629ly 的回复:
Quote: 引用 4 楼 zhao4zhong1 的回复:

推荐使用SoftSnoop软件查看另一个程序在完成某个功能时调用了哪些API。

支持64位的系统吗

没在64位系统用过,不知道。
procmon好象支持64位。 解决方案7:

64 位程序和 32 位程序用的是不同的 dll

解决方案8:

推荐使用SoftSnoop软件查看另一个程序在完成某个功能时调用了哪些API。

解决方案9:

你 64 位下钩子的方法跑通了没得问题了?

解决方案10:

难道 DeleteFile 不行?

上一篇关于类中出现operator使用的疑惑
下一篇驱动DLL中调用MessageBox出错
明星图片
相关文章
《 Win7 x64 删除文件调用什么api》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)