一个关于防止文件拷贝的有关问题,有点挑战性,来看看

一个关于防止文件拷贝的问题,有点挑战性,高手进来看看。
有一个文件,假设是test.txt,我现在要启动一个监控进程,防止这个文件被拷贝到其他地方,但是可以打开这个文件看文件内容。我的做法如下。
1.FileOpen('test.txt',fmShareExclusive);
  以独占方式打开这个文件,可以防止其他进程拷贝这个文件,但是如果我想双击这个文件打开阅读内容,却会提示该文件正在被 另一个进程访问,无法阅读的提示,此方法失败。
2.对CopyFile,CopyFileA,CopyFileW这个函数挂钩——失败
  对CopyFileEx,CopyFileExA,CopyFileExW这个函数挂钩——失败
  对SHFileOperation,SHFileOperationA,SHFileOperationW函数挂钩——失败
3.考虑到复制文件的时候会调用CreateFile这个函数,于是对这个函数挂钩,好像可以实现,但是效果极差。而且还有很多不利因素。——不考虑
4.网上资料说拷贝文件用的终极函数不是CopyFile,而是ZwCopyFile,有人可以告诉我后者在Delphi中如何实现吗?


请问大家有什么好的方法实现我的需求,谢谢。磕头了。在线等。



------解决方案--------------------
楼主我不会,进来帮你顶
------解决方案--------------------
>>防止这个文件被拷贝到其他地方,但是可以打开这个文件看文件内容。

可能吗?
我不拷贝这个文件,打开这个文件,然后全选,拷贝…………
------解决方案--------------------
> >防止这个文件被拷贝到其他地方,但是可以打开这个文件看文件内容。

可能吗?
我不拷贝这个文件,打开这个文件,然后全选,拷贝…………
_______________________________________
如果是EXE文件或者其它文件呢怎么COPY

帮顶
------解决方案--------------------
矛盾.....
------解决方案--------------------
估计不可能的, 好多东西都要考虑
------解决方案--------------------
如果是EXE文件或者其它文件呢怎么COPY 
我用UE打开,一样可以吧?
------解决方案--------------------
这种问题一般用写驱动,并且效果也不是太理想.
------解决方案--------------------
如果是EXE文件或者其它文件呢怎么COPY 
我用UE打开,一样可以吧?
________________________
UE打开一个EXE文件,之后全选,粘贴到新的文件里面???
这样能拷贝?
------解决方案--------------------
能不能通过windwow消息拦截来处理?
------解决方案--------------------
可以考虑hook copy函数...

具体怎么hook在网上很多的,不详细说

不过正如楼上的朋友们说的,如果用户把文件读入内存,再copystream这种就没办法了
除非把所有和copy相关的都hook了
------解决方案--------------------
现在要做的事,只是挂个HOOK防止该文件被COPY到别的地方,至于你说的打开文件后,拷到剪切板,我觉得不应该是在该问题中一并解决,
问题得拆分开来,程序也拆分开来,防止文件打开后的COPY,可以考虑把该文件加密,或是其它什么的.
------解决方案--------------------
把硬盘卸下来挂到另外一台机器上做副盘读取,你觉得有办法防得住吗?还是早点换个套路吧。
------解决方案--------------------
文件系统过滤驱动才是王道
------解决方案--------------------
有人说要禁止关机,于是我按下了电源
有人说要禁止拷贝,于是我拆下了硬盘
有人说要禁止截屏,于是我拿起了数码像机
------解决方案--------------------
不管是什么文件能打开就能Copy
最不济写个程序读取这个文件,然后想怎么Copy就怎么Copy