超强的问题!!!给思路就有分啊!!!
我想做一个程序,功能有对文件操作的记录,例如:复制、粘贴、剪切这几个操作。如果对文件监视的话,只能记录文件的变化,是什么操作就一点也不知道了,达不到我的要求。请大家给点办法啊!!!! 问题点数:50、回复次数:25Top
1 楼yangrenhuai(yang)回复于 2004-12-01 15:06:54 得分 5
文件监视可以使用FileSystemWatcher组件
文件复制、粘贴等可以使用File或FileInfo 类Top
2 楼simon8181()回复于 2004-12-01 15:12:14 得分 0
不好意思,可能我的问题没有说清楚,楼上的我都知道。
我的问题举一个简单的例子:有一个文件a.txt,他原来放在c盘下,现在我把它剪切到d盘,我想实现的功能是记录这个剪切的操作,而不是记录了文件a.txt在c盘被删除了,d盘新建了一个a.txt文件。主要是想记录操作。Top
3 楼simon8181()回复于 2004-12-01 15:19:59 得分 0
upTop
4 楼qiri07(俺家金毛de地位比俺高)回复于 2004-12-01 15:31:03 得分 0
写个服务,驻留在后台,监视硬盘操作信息Top
5 楼simon8181()回复于 2004-12-01 15:34:11 得分 0
怎么监视,才能得到操作是剪切、复制,还是粘贴啊?Top
6 楼wuyazhe(wyz&xyl)回复于 2004-12-01 15:44:38 得分 5
自定义格式,保存操作日志。做类似栈的东西。操作就压栈,undo就出栈。栈空就不允许undo。Top
7 楼simon8181()回复于 2004-12-01 16:00:38 得分 0
楼上的能说清楚点吗?“自定义格式”举个例子可以吗?Top
8 楼wuyazhe(wyz&xyl)回复于 2004-12-01 16:05:26 得分 5
不会。
之前有个网友问的和你的差不多。给人出个主意,不过不好实现。
我的方法不说了。参考这个
http://www.javagarden.org/old/myarticle/20040225005.htmTop
9 楼loveerror(马烁焱)回复于 2004-12-01 16:53:09 得分 0
高难度.Top
10 楼bruce_figo(管理员 www.eahan.com)回复于 2004-12-01 16:55:46 得分 5
没做过,不过windows里复制(删除、重命名。。)一个文件(文件夹)后,在explore中click鼠标左键的弹出菜单中会存在“撤销复制(删除、重命名。。)”的选项,也就是windows记录了用户的硬盘操作,我想既然windows可以做到这一点,那么win32的API函数中或许会有搂主需要的东西。Top
11 楼CodeTalk(bigrobin@126.com)回复于 2004-12-01 16:56:39 得分 5
也许要截获系统消息,用钩子技术或许可以监视剪贴板操作。过去用vc实现,但是在.net下面我不知道。Top
12 楼simon8181()回复于 2004-12-02 07:45:10 得分 0
我上网看了一些关于dos命令的资料,和ntvdm.exe有关,不知道怎么监视ntvdm.exe?Top
13 楼hebookboy(民工宝贝)回复于 2004-12-02 07:52:29 得分 0
关注学习中Top
14 楼hdt(倦怠)回复于 2004-12-02 07:56:33 得分 5
windows shell编程使用vb6或vc很容易实现,托管程序实现
不太清楚Top
15 楼hdt(倦怠)回复于 2004-12-02 07:58:12 得分 5
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/shellcc/platform/shell/programmersguide/shell_int/shell_int_extending/extensionhandlers/drophandlers.htm
给你个例子关于拖曳的Top
16 楼qzj(SoldierQ)回复于 2004-12-02 10:47:48 得分 5
实现监视文件系统操作的话,估计实现相对困难;不过我觉得可以通过每隔一段时间对磁盘进行快照,然后比对相邻两次磁盘快照来得出相应的磁盘操作。磁盘快照也就是指遍历磁盘上的所有文件,记录文件名,时间,路径,最好还要生成MD5校验码来判断文件是否修改。这种方法对系统的资源消耗比较大,不过实现起来相对简单,一些流行的反安装程序大多都是这么做的,记录一个程序安装前后的磁盘文件和系统注册表的变化来达到完全反安装一个程序的目的。Top
17 楼simon8181()回复于 2004-12-04 16:40:25 得分 0
upTop
18 楼duxinrun(晴天坊)回复于 2004-12-04 16:57:58 得分 5
监视剪贴板在VB.net/C#中通过Override窗体的WinProc过程并利用API注册/取消剪贴板监视来获得对剪贴板的监视,用不了30行代码。这样就能监视剪贴板的情况了。
然后再来监视一下文件系统就OK了。
比如你发现剪贴板里面存储了对文件的因用,说明现在用了复制/剪切操作,然后你获得所复制/剪切的文件是什么,一旦发现剪贴板空了,说明文件操作已经完成,那么就去查看所保存的文件信息是否还在原位置存在。
这只是一个思路,当然还会有很多情况需要判断和处理。
仅提供思路,供大家探讨。Top
19 楼YidingHe(机枪兵)回复于 2004-12-04 19:53:05 得分 0
仅仅靠观察剪贴板,不好区分是复制还是粘贴,而且得不到数据的来源。Top
20 楼Fashionxu()回复于 2004-12-04 23:31:19 得分 5
监视文件变化与剪贴板相结合。
比如发现有文件被删除了,那么立即查看剪贴板上是否有文件,然后再等候,看是否有新的文件生成。若两个条件满足,就作为剪切记录下来。同理,其余可做。
思路:监视文件系统,查看剪贴板,与下一次文件系统变化相结合,得出结论。
Top
21 楼simon8181()回复于 2004-12-06 13:23:42 得分 0
谢谢以上各位的思路。Top
22 楼athossmth(athos)回复于 2004-12-10 21:39:26 得分 0
学习Top
23 楼lgg06(随风)回复于 2004-12-11 00:38:02 得分 0
markTop
24 楼Paradise_heida(学海无涯,回头是岸!)回复于 2004-12-11 16:08:25 得分 0
写个存储过程,用触发器。Top
25 楼mycoldboy(寒潭清)回复于 2004-12-11 17:17:07 得分 0
在网上下载控件,搜吧,多.Top




