xms77 发表于 2011-7-11 21:44:38

如何防止指定文件夹的复制

本帖最后由 xms77 于 2011-7-11 21:47 编辑

在工作中碰到一个问题,机器的程序文件应该放在C:\Lc_gram, 总是发现有人把程序文件到处拷贝,造成程序混乱,我该如何实现自动监控和删除其它路径下的Lc_gram文件夹,思考了很久,没有想到好的方法来实现,有没有高人指点一下下,本人万分感谢!

happytc 发表于 2011-7-11 22:40:19

用拷贝钩子:ICopyHook,它是个Com接口,Shell在执行移动,拷贝,重命名或删除这些操作前,会调用ICopyHook接口的CopyCallback方法对它们进行验证。利用CopyCallback一个返回值:
IDYES表示继续,IDNO和IDCANCEL则表示终止(http://msdn.microsoft.com/en-us/library/bb776048(v=vs.85).aspx)
但有点麻烦的是Shell并不会把上面的结果返回给你的处理程序,所以为了完全监控,你还得调用WinAPI的两个函数:FindFirstChangeNotification以及FindNextChangeNotification,结合起来就可以实现你的问题了

lixiaolong 发表于 2011-7-12 01:26:16

回复 1# xms77

有一个简单办法,监控粘贴板.
While 1
        Sleep(100)
        $copy = ClipGet();监控粘贴板
        If $copy = "C:\Lc_gram" Then;如果粘贴板的内容是"C:\Lc_gram"
                ClipPut("");清空粘贴板
        EndIf
WEnd

这样也可以防止指定文件夹的复制.

a62105400 发表于 2011-7-12 01:41:48

回复 3# lixiaolong


    好办法 , mark

happytc 发表于 2011-7-12 01:45:20

回复 3# lixiaolong


    这也行?你试过了吗?

a62105400 发表于 2011-7-12 02:39:06

回复 5# happytc


    这可是好方法 ,快去试试

happytc 发表于 2011-7-12 02:55:21

回复 6# a62105400


    没啥试头,一看就知道了:这样只是对Ctrl+C或者右键点复制后有效。

但其实一般用户用得最多却是用拖动来实现复制粘贴的

netegg 发表于 2011-7-12 07:37:46

楼主把文件的权限修改下试试,不知道行不行,只是个想法

xz00311 发表于 2011-7-12 09:11:22

还有没有其他办法呢

xms77 发表于 2011-7-12 12:36:05

回复 2# happytc
谢谢,不是很理解,看来比较麻烦!

xms77 发表于 2011-7-12 12:38:24

回复 3# lixiaolong
灰常谢谢,试试看

xms77 发表于 2011-7-12 12:39:15

回复 8# netegg
win98系统,修改文件权限是没有办法的。

xms77 发表于 2011-7-12 13:39:30

回复 3# lixiaolong [/
试过了,可以防止拷贝粘贴,但是不能防止拖动。

浪迹红客 发表于 2011-7-12 14:27:31

有是hook,呵呵

lixiaolong 发表于 2011-7-12 18:17:01

回复 5# happytc

我试过了可以,不过不能防止拖动.
页: [1] 2 3
查看完整版本: 如何防止指定文件夹的复制