日期:2014-05-17  浏览次数:21155 次

在C#中如何给文件夹上锁
大家好!

  很高兴跟大家一起探讨问题,共同学习,共同思索。
  
  本人想用WindForm做一个给文件夹上锁的功能,现在遇到一个主要的问题,如何在c#中给文件夹或文件上锁。。。

  这里是做好的界面,上锁的文件夹或文件的路径跟密码都保存在数据库,以文件路径为主键 密码是经过加密的
 

------解决方案--------------------
文件加锁,真没用过 。等着跟学习
------解决方案--------------------
很有意思 顶一下。谁能展示一下关键代码 ,加锁的部分
------解决方案--------------------
都放在数据库了,还上什么锁呢?

我不想做比喻帝的--》你把机密文件放在保险箱里面,再加保险锁,你本来就在一个保险锁里面啊,那还要加锁么


如果你要加密硬盘里面的文件夹,数据库只是配置用,那还可以考虑考虑
------解决方案--------------------
你可以试试文件夹隐藏技术。然后给出一个应用程序伪造文件夹图片在原位置。
通过这个连接才能打开真实的。
或者干脆加锁后不可见。把文件夹移走。解锁移回。
------解决方案--------------------
LZ可不可以把源代码发一下啊
------解决方案--------------------
Encrypt 方法和 Decrypt 方法来加密然后解密文件

这是简单实现的方法(文件在NTFS卷上)
------解决方案--------------------
探讨
Encrypt 方法和 Decrypt 方法来加密然后解密文件

这是简单实现的方法(文件在NTFS卷上)

------解决方案--------------------
C#只有文件加密、解密的方法,没有对文件夹的方法。
------解决方案--------------------
实际上调用加密软件的API即可。

我不是来抬杠的。

输入法你要不要自己开发一个? 开发个搜狗的,不要开发五笔

我又做了一回比喻帝啦,哈哈
------解决方案--------------------
不懂,我一般把文件夹名改成正经的主题,就自动加锁了。
------解决方案--------------------
不太懂,路过学习
------解决方案--------------------
你的思路错了
------解决方案--------------------
大家继续讨论啊
------解决方案--------------------
想法有意思,有意义。不过我认为你对使用情况的考虑、描述得还不够具体、周到,这些都考虑好了,才能谈得上方法选择,代码编写。
------解决方案--------------------
有意思,编程就需要天马行空的思想
------解决方案--------------------
探讨
实际上调用加密软件的API即可。

我不是来抬杠的。

输入法你要不要自己开发一个? 开发个搜狗的,不要开发五笔

我又做了一回比喻帝啦,哈哈

------解决方案--------------------
现在的加密就两大类
一类是忽悠类
另一类是实实在在对数据加密

忽悠类又分为大忽悠和小忽悠
大忽悠忽悠用户,小忽悠忽悠操作系统和应用程序
大忽悠是指那种把文件藏到某些用户找不到的地方的程序
小忽悠是指类似HIPS的FD模块,加驱、API HOOK,让其他程序访问不到被保护的文件
大忽悠XT,冰刃,WinRAR各种三方文件管理器都能轻松搞定
小忽悠可以想办法搞死程序,而且换个系统(比如把硬盘挂到其他系统上,用光盘或者U盘启动)就悲剧了
当然,FD本来就不是用来“加密文件的”,这也不能怪人家

你这种效果用小忽悠类型来做比较好
不过实现起来是比较麻烦的
FD本身实现起来就比较麻烦;更麻烦的是软件的自身保护,进程防杀、窗口防杀什么,钻进去就没底了……
而且.NET显然不擅长这方面的工作


可以考虑对数据实实在在地进行加密
然后通过你的软件解密
解密之后怎么做呢
技术高点可以像TrueCrypt那样搞一个虚拟磁盘驱动器,往这个驱动器里添加的内容会自动被加密,从里面取出来的内容会自动被解密
做不来就像WinRAR那样,自己搞一个文件管理器
不过由于对数据进行了加密,解密速度肯定是比较慢的,除非你在密码验证上取巧,但是这么做了就不安全了

对个人应用来说,最简单方便的文件加密方式就是WinRAR以rar格式加密压缩(不要用三方美化版或者破解版,可能有后门)
------解决方案--------------------
关于文件夹加密的问题我也想过,我觉得可以考虑用钩子截获打开文件夹的消息,然后判断是不是加密过的,是就要求输入密码。但是有两个问题,第一,不知道打开文件夹的消息你哪个;第二,这样做显然效率不高,影响系统性能。
还有就是可以从注册表方面考虑,修改相关键值。
------解决方案--------------------
另外,单纯依靠C#这样的高级语言是无法完成类似的底层操作功能的,很操作系统打交道最直接,最强大的还是C!
------解决方案--------------------
探讨