2010-10-15 109 views
-4

如何通過C#以編程方式保護硬盤?在C#中加密硬盤#

就像用戶想打開硬盤一樣,首先他/她必須輸入密碼才能訪問它。如果密碼錯誤,則硬盤是從用戶隱藏..

+2

我們不會爲您編寫程序。 – SLaks 2010-10-15 14:57:15

+4

如果你這樣問,你可能沒有資格處理敏感數據。好的加密很難。 – SLaks 2010-10-15 14:58:00

+1

這並非易事,它甚至可能不可能在純C#中完成。我建議你的用戶下載TrueCrypt或者看看EFS。 http://www.truecrypt.org/ http://en.wikipedia.org/wiki/Encrypting_File_System – LukeH 2010-10-15 14:59:50

回答

2

如果你想做到這一點用C#編寫的應用程序中:

獲取邏輯驅動器:

string[] drives = Directory.GetLogicalDrives(); 

也檢查了這一點: http://www.experts-exchange.com/Programming/Languages/C_Sharp/Q_23825199.html

http://bytes.com/topic/c-sharp/answers/276247-get-drive-letter-win32_diskdrive

你需要拓展更多。將驅動器號與密碼相關聯並將其保存在某處。如果輸入的密碼正確,則顯示該驅動器,因爲您已經擁有它們的列表/數組。 (請注意,現在寫出這一切還爲時過早,我感冒了 - 但它非常簡單)。

你有你的驅動器列表,你檢查一個密碼,看看他們是否可以看到一個驅動器,如果是的話,讓他們看到它。


如果你試圖限制從出基於密碼的驅動器盤符整個Windows系統,我要說不使用C#。這是一個Windows安全問題。

我會推薦閱讀abot MS組策略。本文可以幫助您: http://support.microsoft.com/kb/231289

1

我不認爲這可以透明地完成(您可以用任何程序訪問該文件)並且安全地(即,磁盤實際上是加密的,而不僅僅是從外殼隱藏)在C#中(在Windows上,不在Singularity上)。要即時解密磁盤,您需要內核模式驅動程序。而且你不能用.NET編寫。

在Linux上,您可以使用C#+ Mono編寫一個FUSE(用戶模式)驅動程序。