说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

超强的问题!!!给思路就有分啊!!!

编辑:说三道四文库 发布时间:2018-08-20 04:25
HTML文档下载 WORD文档下载 PDF文档下载
我想做一个程序,功能有对文件操作的记录,例如:复制、粘贴、剪切这几个操作。如果对文件监视的话,只能记录文件的变化,是什么操作就一点也不知道了,达不到我的要求。请大家给点办法啊!!!!
文件监视可以使用FileSystemWatcher组件
文件复制、粘贴等可以使用File或FileInfo 类
不好意思,可能我的问题没有说清楚,楼上的我都知道。
我的问题举一个简单的例子:有一个文件a.txt,他原来放在c盘下,现在我把它剪切到d盘,我想实现的功能是记录这个剪切的操作,而不是记录了文件a.txt在c盘被删除了,d盘新建了一个a.txt文件。主要是想记录操作。
up
写个服务,驻留在后台,监视硬盘操作信息
怎么监视,才能得到操作是剪切、复制,还是粘贴啊?
自定义格式,保存操作日志。做类似栈的东西。操作就压栈,undo就出栈。栈空就不允许undo。
楼上的能说清楚点吗?“自定义格式”举个例子可以吗?
不会。
之前有个网友问的和你的差不多。给人出个主意,不过不好实现。
我的方法不说了。参考这个
http://www.javagarden.org/old/myarticle/20040225005.htm
高难度.
没做过,不过windows里复制(删除、重命名。。)一个文件(文件夹)后,在explore中click鼠标左键的弹出菜单中会存在“撤销复制(删除、重命名。。)”的选项,也就是windows记录了用户的硬盘操作,我想既然windows可以做到这一点,那么win32的API函数中或许会有搂主需要的东西。
也许要截获系统消息,用钩子技术或许可以监视剪贴板操作。过去用vc实现,但是在.net下面我不知道。
我上网看了一些关于dos命令的资料,和ntvdm.exe有关,不知道怎么监视ntvdm.exe?
关注学习中
windows shell编程使用vb6或vc很容易实现,托管程序实现
不太清楚
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/shellcc/platform/shell/programmersguide/shell_int/shell_int_extending/extensionhandlers/drophandlers.htm
给你个例子关于拖曳的
实现监视文件系统操作的话,估计实现相对困难;不过我觉得可以通过每隔一段时间对磁盘进行快照,然后比对相邻两次磁盘快照来得出相应的磁盘操作。磁盘快照也就是指遍历磁盘上的所有文件,记录文件名,时间,路径,最好还要生成MD5校验码来判断文件是否修改。这种方法对系统的资源消耗比较大,不过实现起来相对简单,一些流行的反安装程序大多都是这么做的,记录一个程序安装前后的磁盘文件和系统注册表的变化来达到完全反安装一个程序的目的。
up
监视剪贴板在VB.net/C#中通过Override窗体的WinProc过程并利用API注册/取消剪贴板监视来获得对剪贴板的监视,用不了30行代码。这样就能监视剪贴板的情况了。
然后再来监视一下文件系统就OK了。
比如你发现剪贴板里面存储了对文件的因用,说明现在用了复制/剪切操作,然后你获得所复制/剪切的文件是什么,一旦发现剪贴板空了,说明文件操作已经完成,那么就去查看所保存的文件信息是否还在原位置存在。
这只是一个思路,当然还会有很多情况需要判断和处理。
仅提供思路,供大家探讨。
仅仅靠观察剪贴板,不好区分是复制还是粘贴,而且得不到数据的来源。
监视文件变化与剪贴板相结合。

比如发现有文件被删除了,那么立即查看剪贴板上是否有文件,然后再等候,看是否有新的文件生成。若两个条件满足,就作为剪切记录下来。同理,其余可做。

思路:监视文件系统,查看剪贴板,与下一次文件系统变化相结合,得出结论。

谢谢以上各位的思路。
学习
mark
写个存储过程,用触发器。
在网上下载控件,搜吧,多.
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘