2011-05-16 117 views
12

我想写一点.NET脚本/工具,它至少与SecretSyncBoxCryptor大致相同,但不将加密密钥存储在公司的Web上服务器。双向文件夹与加密同步以保护我的Dropbox数据

首先它听起来很简单:你有两个文件夹 - “解密”文件夹和“加密” - 文件夹。在这两个文件夹中都有一个FileSystemWatcher,因此当文件发生更改时,该工具会得到通知。 如果文件在“已解密”文件夹中发生更改,它会对文件进行加密并将其写入“已加密”文件夹。如果文件在“加密”文件夹中发生变化,它将解密文件并将其写入“解密”文件夹。

到目前为止没有问题。

但是,如果用户直接从“解密”文件夹运行应用程序(例如KeePass),会发生什么情况?同步和加密过程现在会遇到问题,因为文件被锁定在应用程序中。 有没有我可以做,以避免这个问题处理,所以应用程序仍然可以运行旁边的同步和加密过程?

感谢您的帮助!

更新:我仍然无法找到这个问题的答案。使用FileSystemWatcher-class进行同步时,应用加密/解密很容易,但遇到文件锁定问题(因为流或应用程序阻止文件)。我也尝试过Microsoft Sync Framework。文件同步适用于它,但我不知道如何在运行中加密/解密文件。

也许有人有一点工作代码示例。

回答

1

考虑使用Volume Shadow Copy Service,确保你得到的SDK为您的choise

+0

不知道这可能如何帮助我解决问题。对我来说,它看起来像卷影复制服务只进行备份,但文件仍然会被锁定。 – Alexander 2011-05-16 12:22:50

+0

该服务允许您在仍在使用,打开等情况下复制文件;你将不得不阅读文档,不同的SDK是针对不同的操作系统,这里是一个很好的开始博客http://www.codeproject.com/KB/dotnet/makeshadowcopy.aspx – 2011-05-16 13:04:05

4

伊万诺夫的回答启发的操作系统,你也许应该看看到AlphaVSS。它是卷影复制服务的.NET包装器。

有了这个功能,您就可以在规则的基础上制作快照(如每15分钟一次),并将文件从VSS副本中的解密文件夹复制到加密文件夹中。为了提高速度,您仍然可以使用FileSystemWatcher来简单地记录自上次复制以来哪些文件已被更改,并只复制影子副本中的这些文件。

0

BoxCryptor正在使用Dokan库,它是windows的用户模式文件系统。该库允许您的程序在虚拟驱动器中接收有关各种文件系统相关操作的回调。通过这种方式,您可以响应这些回调,并根据文件系统操作对数据进行加密/解密。

+0

是不是Dokan库使用BoxCryptor来模拟虚拟驱动器? BoxCryptor的虚拟驱动器真的吸引多用户操作系统。如果在BoxCryptor未运行时另一个用户尝试访问此驱动器,则会导致严重问题。 – Alexander 2011-05-25 18:11:10

+0

@Alexander:是的,Dokan用于模拟虚拟驱动器。我提到的回调是在用户访问虚拟驱动器的内容时​​调用的。 – Giorgi 2011-05-25 18:14:46

0

文件系统过滤器驱动程序可能是实现您的任务的唯一正确方法。这样您就可以实现对数据的即时加密,解密和镜像。

我相信我们的CallbackFilter会帮助你。这是一个文件系统过滤器(包含驱动程序,您只写入用户模式代码),它允许您检查和修改文件系统请求的内容。包括加密样本。