文件监控(复制一个文件时获取源位置和目标位置)

pluton 2008-03-26 02:20:06
我对一个文件夹进行监控,想知道怎样获取复制到这个文件夹以及移出文件夹的文件目标位置
比如我把C:\temp\t.txt 复制到 D:\source\下面
怎么获取源位置C:\temp
...全文
608 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
fly4free 2010-05-11
  • 打赏
  • 举报
回复
“文件复制 ”说来4个字,但实际上, 你要想到很多东西,比如全面性,比如效率。。。

比如: 打开一个文档文件, 然后另存为。。。。
mcaok 2010-05-11
  • 打赏
  • 举报
回复
HOOK CopyFile在win7下钩不到。同样新建也是。试试ReadDirectoryChangesW吧。加上监视剪切板是可以实现拷贝监视的。也可以从文件过滤驱动下手。
net_mz 2010-05-06
  • 打赏
  • 举报
回复
#16楼 得分:0回复于:2009-03-19 11:33:43因为你复制的数据信息都存在了系统的剪贴板中,可以通过对剪贴板里的数据进行监控
IDataObject data = Clipboard.GetDataObject();//获取剪贴板中的数据
Clipboard.GetFileDropList()//针对你所需的文件复制,得到剪贴板中的文件数据列表

这样就可以获取到你想要的源路径了!!


正解
lwghost 2009-03-19
  • 打赏
  • 举报
回复
因为你复制的数据信息都存在了系统的剪贴板中,可以通过对剪贴板里的数据进行监控
IDataObject data = Clipboard.GetDataObject();//获取剪贴板中的数据
Clipboard.GetFileDropList()//针对你所需的文件复制,得到剪贴板中的文件数据列表

这样就可以获取到你想要的源路径了!!
meiZiNick 2008-05-01
  • 打赏
  • 举报
回复
我也想知道,正在找這方面的資料~~~~~
taianmonkey 2008-04-08
  • 打赏
  • 举报
回复
HOOK API是一种方式,但最佳处理方式是通过文件过滤驱动去处理
qiqi5521 2008-03-29
  • 打赏
  • 举报
回复
即使是Windows的复制,复制文件不一定会调用API。还是用写驱动的方法能够万无一失
cnzdgs 2008-03-28
  • 打赏
  • 举报
回复
复制、粘贴操作至少会调CreateFileW的,你再仔细检查一下。
pluton 2008-03-28
  • 打赏
  • 举报
回复
全局WH_GETMESSAGE和IATHook,Hook OepnFileA OpenFileW,CreateFileA,CreateFileA,CreateFileW,CopyFileA,CopyFileW
CopyFileExA,CopyFileExW,ReadFileA,ReadFileW,MoveFileA,MoveFileW,SHFileOperationA,SHFileOperationW
在其他程式中用代码写的相应函数能hook到,但是在系统中进行的复制、粘贴操作都不能hook到
SetWindowsHookEx( WH_GETMESSAGE, HookProc, hDLL, 0 )
换成
SetWindowsHookEx( WH_CBT, HookProc, hDLL, 0 )仅能hook到CreateFileW,复制操作依然无效
pluton 2008-03-27
  • 打赏
  • 举报
回复
好像hook不到CopyFileEx
在Kernel32.dll中好像没这个函数?
能hook到CreateFileW hook不到CreateFileA怎么回事??
cnzdgs 2008-03-27
  • 打赏
  • 举报
回复
SHFileOperationW
pluton 2008-03-27
  • 打赏
  • 举报
回复
在其他程式中使用CopyFileEx进行复制操作时
确实能hook到CopyFileEx,但是在系统中进行的复制操作无法响应
究竟对文件的复制操作是调用 CopyFileEx的吗?

另外shell32.dll中的SHFileOperationA函数Hook不到。。。
cnzdgs 2008-03-27
  • 打赏
  • 举报
回复
这些函数都在Kernel32.dll里面,你可以做程序调这些函数来测试是否有Hook到。
另外,CreateFileA会调CreateFileW,所以只Hook CreateFileW就可以,但你从CreateFile中无法判断出复制操作的源位置和目标位置。
pluton 2008-03-26
  • 打赏
  • 举报
回复
谢谢,我试一下
Aeolia_Tao 2008-03-26
  • 打赏
  • 举报
回复
1楼的方法就可以阿
我再提供一个方法
Windows shell 扩展编程
写一个ATL COM 继承于ICopyHook
重写CopyCallback函数就可以了
AtmanGuardian 2008-03-26
  • 打赏
  • 举报
回复
直接挂钩子
pluton 2008-03-26
  • 打赏
  • 举报
回复
只能这样做吗??
或者操作系统本身有记录这些操作存在某个文件中?
cnzdgs 2008-03-26
  • 打赏
  • 举报
回复
用API Hook,钩CopyFileEx和SHFileOperation。

2,641

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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