★★★★ 300分求“关于禁止文件复制的难题”!!! ★★★★(300)

  • 主题发起人 主题发起人 lijianzhou
  • 开始时间 开始时间
L

lijianzhou

Unregistered / Unconfirmed
GUEST, unregistred user!
本人在做一个项目,有个要求如下:禁止本机上一切关于文件复制移动删除等操作,用文件驱动过滤到是可以,但是过于麻烦一点,如果能对复制文件、删除文件、移动文件等涉及到CopyFile、DeleteFile等相关API进行HOOK最好。希望各位朋友多多指点,思路正确并有代码马上结帖。
 
可以先问问原本的需求跟目的么,这样能针对性的考虑。禁止一切文件好像有点不对头。
 
在你的程序中拦截这些剪贴版的消息 WM_COPY、WM_CUT、WM_PASTE procedure ClipCopy(var M:TMessage); Message WM_COPY; begin end;
 
如果对文件改名呢?是否禁止?还有,我打开某个文件后复制其中的内容可不可以?...你也可以考虑利用操作系统设定操作者的权限来处理。
 
不好意思,可能描述不太清楚: 禁止对某个文件夹内的所有文件(任意类型)进行复制、拷贝和删除,包括复制文件的内容也不允许。简单说就是:禁止复制文件和文件的内容。至于重命名倒没关系,To de410:你的办法到可以解决一些小问题,但是对命令提示符、其他工具Copy是不管用呢。
 
文件容许读吧?既然容许读,那我就可以通过工具读取文件内容后,写入到另外一个新的文件中,这就相当于完成了拷贝功能了。
 
也不要想那么复杂,只要能防止通过HOOK或其他方式把一般的拷贝复制文件API禁止就可以了
 
这个也可以用操作系统的权限来做,给个权限低点的用户,然后把某文件夹设置为拒绝访问
 
各位能不能给实际点解决的实现方案啊。
 
楼主,你好,我是delphi新手,看了你的几个贴子,你应该对文件操作方面比较熟悉,想请教你一个问题,希望你能解答一下谢谢。我在VISTA下新建了一个c:/abc.../这种目录,但我想通过SHFileOperation API复制这个目录里面的文件如c:/abc.../abc.txt到其它文件夹下,但总是执行失败,在XP,2003等系统上是完全正常的,就是VISTA系统下失败。请帮个忙看看是什么原因,或者有没有能替代的函数,谢谢。复制函数如下:function OperateFile(s, t: string; op: integer): boolean; //文件操作var shf: tshfileopstruct; fromp, top: array[0..1023] of char;begin result := false; ZeroMemory(@shf, sizeof(shf)); fillchar(fromp, sizeof(fromp), 0); fillchar(top, sizeof(top), 0); strpcopy(fromp, s); strpcopy(top, t); with shf do begin shf.Wnd := 0; case op of FO_CM_COPY: shf.wFunc := fo_copy; FO_CM_MOVE: shf.wFunc := fo_move; FO_CM_DELETE: shf.wFunc := fo_delete; FO_CM_RENAME: shf.wFunc := fo_rename; end; shf.pFrom := fromp; shf.pTo := top; shf.fFlags := FOF_SILENT or FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION; shf.fAnyOperationsAborted := False; shf.hNameMappings := nil; shf.lpszProgressTitle := nil; end; try result := shfileoperation(shf)= 0; except end;end;
 
看下Delphi自带的帮助: demos/ActiveX/ShellExt/copyhook.dpr
 
只有 任敏碧 她才能解决这个问题。
 
用短文件格式就行了。禁止复制就没人提供可行的方案了吗?
 
楼主你好,谢谢你的回答,你说的短文件格式,是不是用extractshortpathname这个函数将路径转成短路径,我试了一下,转c:/aa.../a.txt,转出来是得到是空,好像还是失败。麻烦您再解答一下,谢谢。
 
可以试试:CopyFileA(PChar('c:/aaeded~1/a.txt'),PChar('c:/a.txt'),False);如果不行那可能vista不支持以.为名称的文件夹,我没vista环境测试,抱歉。防止复制的需求各位大虾都发表下观点吧。
 
我们公司前一段时间试用了一个软件,大体上是你用的功能.他写了驱动加服务,对相关的程序进行加密,这样即使拷贝走也没用.按你的要求,如果把硬盘拿到别人的电脑上挂成从盘,想怎么拷就怎么拷了.
 
至少要用API Hook,BBS上例子还是多的!用驱动Delphi有点难度,需要会DDDK
 
防删除倒容易,比如你开机时用程序打开文件夹中的任一文件,文件夹就就无法删除。防复制难,要让他复制去没用倒容易。比如可以在注册表上做文章、dll上,或dll放在其他目录等等。有些网页防复制“另存为”存不了,我就用记事本打开源文件另存,它就管不了;还有些更绝,源文件的按纽屏蔽了(要破解也容易),大不了我拷屏,也能保存网页。
 
看来这个问题实现起来有点难度,如何Hook关于复制、拷贝等API的DLL呢?有人做过没有
 
需求不明, 别人也没办法支招如果不让别人访问, 用户权限是最好的, 如果不让复制, 那让不让打开呢, 如果能打开就能复制了呀如果像 zbdzjx 说的这种需求呢, 有没有呢
 
后退
顶部