有一个文件,假设是test.txt,我现在要启动一个监控进程,防止这个文件被拷贝到其他地方,但是可以打开这个文件看文件内容。我的做法如下。
1.FileOpen('test.txt',fmShareExclusive);
以独占方式打开这个文件,可以防止其他进程拷贝这个文件,但是如果我想双击这个文件打开阅读内容,却会提示该文件正在被 另一个进程访问,无法阅读的提示,此方法失败。
2.对CopyFile,CopyFileA,CopyFileW这个函数挂钩——失败
对CopyFileEx,CopyFileExA,CopyFileExW这个函数挂钩——失败
对SHFileOperation,SHFileOperationA,SHFileOperationW函数挂钩——失败
3.考虑到复制文件的时候会调用CreateFile这个函数,于是对这个函数挂钩,好像可以实现,但是效果极差。而且还有很多不利因素。——不考虑
4.网上资料说拷贝文件用的终极函数不是CopyFile,而是ZwCopyFile,有人可以告诉我后者在Delphi中如何实现吗?
请问大家有什么好的方法实现我的需求,谢谢。磕头了。在线等。
1.FileOpen('test.txt',fmShareExclusive);
以独占方式打开这个文件,可以防止其他进程拷贝这个文件,但是如果我想双击这个文件打开阅读内容,却会提示该文件正在被 另一个进程访问,无法阅读的提示,此方法失败。
2.对CopyFile,CopyFileA,CopyFileW这个函数挂钩——失败
对CopyFileEx,CopyFileExA,CopyFileExW这个函数挂钩——失败
对SHFileOperation,SHFileOperationA,SHFileOperationW函数挂钩——失败
3.考虑到复制文件的时候会调用CreateFile这个函数,于是对这个函数挂钩,好像可以实现,但是效果极差。而且还有很多不利因素。——不考虑
4.网上资料说拷贝文件用的终极函数不是CopyFile,而是ZwCopyFile,有人可以告诉我后者在Delphi中如何实现吗?
请问大家有什么好的方法实现我的需求,谢谢。磕头了。在线等。
我不拷贝这个文件,打开这个文件,然后全选,拷贝…………
我用UE打开,一样可以吧?
我用UE打开,一样可以吧?
________________________
UE打开一个EXE文件,之后全选,粘贴到新的文件里面???
这样能拷贝?
除非把所有和copy相关的都hook了
问题得拆分开来,程序也拆分开来,防止文件打开后的COPY,可以考虑把该文件加密,或是其它什么的.
我考虑了下是不是可以用剪切板监控,但是发现如果我复制的是文件的话,虽然打开剪切板程序可以看到文件的全路径名称,但是却无法用程序代码来获得,大家说说该怎么办?
最不济写个程序读取这个文件,然后想怎么Copy就怎么Copy