2011-05-16 116 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會幫助你。這是一個文件系統過濾器(包含驅動程序,您只寫入用戶模式代碼),它允許您檢查和修改文件系統請求的內容。包括加密樣本。