如何防止指定文件夹的复制
本帖最后由 xms77 于 2011-7-11 21:47 编辑在工作中碰到一个问题,机器的程序文件应该放在C:\Lc_gram, 总是发现有人把程序文件到处拷贝,造成程序混乱,我该如何实现自动监控和删除其它路径下的Lc_gram文件夹,思考了很久,没有想到好的方法来实现,有没有高人指点一下下,本人万分感谢! 用拷贝钩子: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,结合起来就可以实现你的问题了 回复 1# xms77
有一个简单办法,监控粘贴板.
While 1
Sleep(100)
$copy = ClipGet();监控粘贴板
If $copy = "C:\Lc_gram" Then;如果粘贴板的内容是"C:\Lc_gram"
ClipPut("");清空粘贴板
EndIf
WEnd
这样也可以防止指定文件夹的复制. 回复 3# lixiaolong
好办法 , mark 回复 3# lixiaolong
这也行?你试过了吗? 回复 5# happytc
这可是好方法 ,快去试试 回复 6# a62105400
没啥试头,一看就知道了:这样只是对Ctrl+C或者右键点复制后有效。
但其实一般用户用得最多却是用拖动来实现复制粘贴的 楼主把文件的权限修改下试试,不知道行不行,只是个想法 还有没有其他办法呢 回复 2# happytc
谢谢,不是很理解,看来比较麻烦! 回复 3# lixiaolong
灰常谢谢,试试看 回复 8# netegg
win98系统,修改文件权限是没有办法的。 回复 3# lixiaolong [/
试过了,可以防止拷贝粘贴,但是不能防止拖动。 有是hook,呵呵 回复 5# happytc
我试过了可以,不过不能防止拖动.