要求:
  1、打开加密后的文件夹,弹出密码输入框,密码验证通过后正常打开文件夹。
  2、加密后的文件夹可以任意复制到其他地方或其他电脑。
  3、重新安装系统后,加密的文件夹不会受影响。  本人,看过了很多这方面的资料,但都不是很如意,哪位高人能不能给点有效的方法或思路。

解决方案 »

  1.   

    加密和压缩是密不可分的
    直接用WINRAR,就行了嘛.
    如果非得自己写一个,也可以借鉴它。
      

  2.   

    转:利用Windows外壳扩展保护文件夹在Win32操作系统(包括Win9X、Windows NT、Windows 2000)不但有方便的图形用户(GUI)界面,微软还为windows用户界面保留了强大的可扩充性。其中对于Windows界面的操作环境(这里称为外壳Shell),微软提供了一种称为外壳扩展(Shell Extensions)的功能来实现文件系统操作的可编程性。如果你的机器中安装了Word 7.0以上的版本,当你鼠标右键单击一个DOC文件,在弹出菜单中选“属性”项,在属性页中不仅显示显示文件的大小、建立日期等信息,同时还增加了Doc文档的摘要、统计等信息;又例如安装了winZip 6.0以上版本后,当选中一个或多个文件或文件夹后在单击鼠标右键,在弹出的右键菜单中就增加了“Add To Zip”等一个zip文件压缩选项。上面的这些功能都是通过Windows外壳扩展来实现的。Windows外壳扩展是这样实现的。首先要编写外壳扩展程序,一个外壳扩展程序是基于COM(Component Object Model)组件模型的。外壳是通过接口(Interface)来访问对象的。外壳扩展被设计成32位的进程中服务器程序,并且都是以动态链接库的形式为操作系统提供服务的。写好外壳扩展程序后,必须将它们注册才能生效。所有的外壳扩展都必须在Windows注册表的HKEY_CLASSES_ROOT\CLSID键之下进行注册。在该键下面可以找到许多名字像{ACDE002F-0000-0000-C000-000000000046}的键,这类键就是全局唯一类标识符。每一个外壳扩展都必须有一个全局唯一类标识符,Windows正是通过此唯一类标识符来找到外壳扩展处理程序的。在类标识符之下的InProcServer32子键下记录着外壳扩展动态链接库在系统中的位置。 Windows系统支持以下7类的外壳扩展功能:(1)Context menu handlers向特定类型的文件对象增添上下文相关菜单; (2)Drag-and-drop handlers用来支持当用户对某种类型的文件对象进行拖放操作时的OLE数据传输; (3)Icon handlers用来向某个文件对象提供一个特有的图标,也可以给某一类文件对象指定图标; (4)Property sheet handlers给文件对象增添属性页,属性页可以为同一类文件对象所共有,也可以给一个文件对象指定特有的属性页; (5)Copy-hook handlers在文件夹对象或者打印机对象被拷贝、移动、删除和重命名时,就会被系统调用,通过为Windows增加Copy-hook handlers,可以允许或者禁止其中的某些操作; (6)Drop target handlers在一个对象被拖放到另一个对象上时,就会被系统被调用; (7)Data object handlers在文件被拖放、拷贝或者粘贴时,就会被系统被调用。本文介绍的文件夹保护功能就是通过上面的第5类,既Copy-hook handlers来实现的。一个支持Copy-hook handlers的程序除了上面提到的要在注册表的HKEY_CLASSES_ROOT\CLSID下注册之外,还需要在HKEY_CLASSES_ROOT\Directory\shellex\CopyHookHandlers\下注册服务器程序的类。由于Windows外壳服务器程序是基于COM组件模型的,所以编写外壳程序就是构造一个COM对象的过程,由于Delphi4.0以上的版本支持Windows外壳扩展和COM组件模型,所以可以利用Delphi来编写外壳扩展程序。
      

  3.   

    利用Delphi编写Copy-hook handle需要实现ICopyHook接口。ICopyHook是一个十分简单的接口,要实现的只有CopyCallBack方法。ICopyHook的CopyCallBack方法的定义如下:UINT CopyCallback(  HWND hwnd, file://Handle of the parent window for displaying UI objects  UINT wFunc, file://Operation to perform.  UINT wFlags, file://Flags that control the operation  LPCSTR pszSrcFile, file://Pointer to the source file  DWORD dwSrcAttribs, file://Source file attributes  LPCSTR pszDestFile, file://Pointer to the destination file  DWORD dwDestAttribs file://Destination file attributes  );其中的参数hwnd是一个窗口句柄,Copy-hook handle以此为父窗口。参数wFunc指定要被执行的操作,其取值为下表中所列之一:常量 取值 含义FO_COPY $2 复制由pszSrcFile指定的文件到由pszDestFile指定的位置。FO_DELETE $3 删除由pszSrcFile指定的文件。FO_MOVE $1 移动由pszSrcFile指定的文件到由pszDestFile指定的位置。FO_RENAME $4 重命名由pszSrcFile指定的文件到由pszDestFile指定的文件名。PO_DELETE $13 删除pszSrcFile指定的打印机。PO_PORTCHANGE $20 改变打印机端口。PszSrcFile和pszDestFile为两个以Null结尾的字符串,分别指定当前和新的打印机端口名。PO_RENAME $14 重命名由pszSrcFile指定的打印机端口。PO_REN_PORT $34 PO_RENAME和PO_PORTCHANGE的组合。  参数wFlags指定操作的标志;参数pszSrcFile和pszDestFile指定源文件夹和目标文件夹。参数dwSrcAttribs和dwDesAttribs指定源文件夹和目标文件夹的属性。函数返回值可以为IDYES、IDNO和IDCANCEL。分别指示Windows外壳允许操作、阻止操作,但是其他操作继续、阻止当前操作,取消为执行的操作。
      

  4.   

    好像在自定义文件夹生成的INI文件里改的``~
      

  5.   

    最简单的方法就是用一个带口令的ZIP文件当文件夹,压缩级别设置为“存储”,访问速度和普通文件夹基本相同。
      

  6.   

    我使用的方法跟winrar的模式类似,先保存文件夹的文件链表信息(类似于一颗树),然后把所有的文件的内容加密后累计在一个文件中。解密的时候先读出文件链表信息,然后把文件内容解密后生成在各自的文件中。这种方法对大文件夹来说虽然效率比较低,但是非常有效的。可以把加密后的文件夹进行任意拷贝移动,跟操作系统没有多大的关系,也就是重新安装了操作系统、格式化了系统盘,也可以正常使用。许多文件夹加密的方法是只是对文件夹的属性进行处理了,一旦重新安装系统或拷贝在其他电脑上就不行了。
      

  7.   

    这种打包的方式,对于用户来说,还不如直接用WINRAR了,还有压缩后节省体积的优点。最好还是研究下FAT(泛称,包括各种形式的FAT)。