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

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


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

...全文
1990 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengzhiguang 2007-12-08
  • 打赏
  • 举报
回复
LZ,我的问题跟你一样啊,有没有兄弟可以指点一下啊
多谢!
crossrowman 2007-09-26
  • 打赏
  • 举报
回复
不管是什么文件能打开就能Copy
最不济写个程序读取这个文件,然后想怎么Copy就怎么Copy
imho888 2007-09-26
  • 打赏
  • 举报
回复
这种思路行不通,换个思路吧。
pengshan 2007-09-26
  • 打赏
  • 举报
回复
有人说要禁止关机,于是我按下了电源
有人说要禁止拷贝,于是我拆下了硬盘
有人说要禁止截屏,于是我拿起了数码像机
-----------------------------------
棒!
ysai 2007-09-26
  • 打赏
  • 举报
回复
有人说要禁止关机,于是我按下了电源
有人说要禁止拷贝,于是我拆下了硬盘
有人说要禁止截屏,于是我拿起了数码像机
woshihaoge 2007-09-23
  • 打赏
  • 举报
回复
关键是怎么去实现
zhaoyu_me 2007-09-23
  • 打赏
  • 举报
回复
文件系统过滤驱动才是王道
cncharles 2007-09-20
  • 打赏
  • 举报
回复
估计不可能的, 好多东西都要考虑
allinmymind 2007-09-20
  • 打赏
  • 举报
回复
矛盾.....
ccdarkness 2007-09-20
  • 打赏
  • 举报
回复
> >防止这个文件被拷贝到其他地方,但是可以打开这个文件看文件内容。

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

帮顶
windindance 2007-09-20
  • 打赏
  • 举报
回复
>>防止这个文件被拷贝到其他地方,但是可以打开这个文件看文件内容。

可能吗?
我不拷贝这个文件,打开这个文件,然后全选,拷贝…………
woshihaoge 2007-09-20
  • 打赏
  • 举报
回复
大家说用HOOK的难道没有看清楚我写的内容吗?我对Copy函数都HOOK了的,但是却HOOK不到,大家不相信的话可以自己试试看。
我考虑了下是不是可以用剪切板监控,但是发现如果我复制的是文件的话,虽然打开剪切板程序可以看到文件的全路径名称,但是却无法用程序代码来获得,大家说说该怎么办?
Scarlette 2007-09-20
  • 打赏
  • 举报
回复
把硬盘卸下来挂到另外一台机器上做副盘读取,你觉得有办法防得住吗?还是早点换个套路吧。
hand741 2007-09-20
  • 打赏
  • 举报
回复
现在要做的事,只是挂个HOOK防止该文件被COPY到别的地方,至于你说的打开文件后,拷到剪切板,我觉得不应该是在该问题中一并解决,
问题得拆分开来,程序也拆分开来,防止文件打开后的COPY,可以考虑把该文件加密,或是其它什么的.
brightyang 2007-09-20
  • 打赏
  • 举报
回复
可以考虑hook copy函数...

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

不过正如楼上的朋友们说的,如果用户把文件读入内存,再copystream这种就没办法了
除非把所有和copy相关的都hook了
voyan 2007-09-20
  • 打赏
  • 举报
回复
能不能通过windwow消息拦截来处理?
lxtnt 2007-09-20
  • 打赏
  • 举报
回复
HOOK
ccdarkness 2007-09-20
  • 打赏
  • 举报
回复
如果是EXE文件或者其它文件呢怎么COPY
我用UE打开,一样可以吧?
________________________
UE打开一个EXE文件,之后全选,粘贴到新的文件里面???
这样能拷贝?
Rainstorey 2007-09-20
  • 打赏
  • 举报
回复
这种问题一般用写驱动,并且效果也不是太理想.
belllab 2007-09-20
  • 打赏
  • 举报
回复
如果是EXE文件或者其它文件呢怎么COPY
我用UE打开,一样可以吧?
加载更多回复(2)

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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