我想知道从程序员的角度(最好是 C# 或 Java)来看,在操作系统中操作文件夹来执行您想要的操作(例如像 FTP 一样)有多难?
图片http://www.jacks-log.de/wp-content/uploads/2011/02/Dropbox-Wurmloch-1.png http://www.jacks-log.de/wp-content/uploads/2011/02/Dropbox-Wurmloch-1.png
自从几年前听说 dropbox 以来,我一直想知道这样做涉及什么?
尤其是 Dropbox,它们不会做任何棘手的事情 - 只是使用 Windows 用户模式 API 提供的机制监视常规文件夹。
不过,使用内核模式驱动程序可以做更强大、更有趣的事情。
您可以做的第一件事是创建一个虚拟磁盘并将其映射到该文件夹。这样,您的代码(在我们产品的帮助下,无论是内核模式还是用户模式)将能够处理对此文件夹中文件的所有操作系统请求。该文件夹不会存在于磁盘上,而是虚拟的。您可以即时从远程服务器中选取数据,将它们写入远程服务器等。特别是,您可以将远程 SFTP 服务器映射到文件夹(使用 FTP 时情况会稍微复杂一些,因为 FTP 不支持部分上传)。一些云提供商的做法正是我所描述的 - 他们提供虚拟磁盘或虚拟文件夹,这是其云服务的“大门”,当您从此类虚拟文件夹或磁盘读取或写入数据时,数据会从云中传入/传出服务器。
接下来的事情是,在文件系统过滤器驱动程序的帮助下,您可以拥有一个真实的文件夹,但动态提供文件内容。这就是某些文件夹加密器的做法(它们在将文件数据写入真实磁盘时对其进行加密,如果没有激活此加密器,您将仅从此文件夹中的文件中读取加密的“垃圾”)。
现在,使用文件系统过滤器驱动程序,您可以控制谁以及如何访问该文件夹,即您可以对文件夹内容的访问进行细粒度控制(将其与加密相结合,您将获得方便的数据保护机制)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)