首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

Win7 x64 剔除文件调用什么api

2013-07-04 
Win7 x64 删除文件调用什么apiWin 7 x64系统中删除文件调用什么api,比如用键盘上的delete键删除文件时,调

Win7 x64 删除文件调用什么api
Win 7 x64系统中删除文件调用什么api,比如用键盘上的delete键删除文件时,调用的是什么api函数啊?
api hook Win?7?x64
[解决办法]
难道 DeleteFile 不行?
[解决办法]
你 64 位下钩子的方法跑通了没得问题了?
[解决办法]
推荐使用SoftSnoop软件查看另一个程序在完成某个功能时调用了哪些API。
[解决办法]
64 位程序和 32 位程序用的是不同的 dll
[解决办法]

引用:
Quote: 引用:

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


支持64位的系统吗

没在64位系统用过,不知道。
procmon好象支持64位。
[解决办法]
SHFileOperation ??
[解决办法]
我在 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


[解决办法]
引用:
我在 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 的版本吗?
[解决办法]
引用:
Quote: 引用:

我在 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 的程序都是兼容的呀.
[解决办法]
我以为是 上面说的 SoftSnoop。我一直就用不了这个。
查看 API 我一直用 API Monitor。

热点排行
Bad Request.