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

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中如何实现吗?


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

...全文
1960 点赞 收藏 22
写回复
22 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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打开,一样可以吧?
回复
加载更多回复
相关推荐
发帖
Windows SDK/API
创建于2007-08-02

1158

社区成员

Delphi Windows SDK/API
申请成为版主
帖子事件
创建了帖子
2007-09-19 11:47
社区公告
暂无公告