Эмулировать жесткий диск в .NET

Есть ли способ эмулировать дисковод в .NET, перехватывая операции чтения/записи/блокировки?
Я хотел бы создать что-то с внешним интерфейсом, подобным Диск GMail на C#.

Спасибо, Том


person Community    schedule 26.09.2008    source источник


Ответы (6)


Для этой цели я использую файловую систему обратного вызова Eldos, но, хотя она хороша, она не совсем дешевая.

Есть также несколько бесплатных/дешевых проектов, и я уверен, что один из них недавно упоминался в аналогичном вопросе на SO - однако в данный момент его больше не найти. Однако стабильность, как правило, является серьезной проблемой, поскольку драйверы многоуровневой файловой системы Windows не являются тривиальными.

person mdb    schedule 26.09.2008

В Linux вы можете использовать API Mono.Fuse (http://www.jprl.com/Projects/mono-fuse.html) для реализации файловых систем на основе .NET с пользовательским кодом.

person miguel.de.icaza    schedule 26.09.2008

Вы могли видеть, как это делает http://www.truecrypt.org/. Он делает именно это либо с помощью файлов, либо с помощью диска или раздела. И затем он монтирует файл, как если бы это был настоящий диск. Теперь, вероятно, исходный код немного сложен;)

person Jonx    schedule 13.05.2009

Не совсем, .Net находится поверх функциональных возможностей ОС, таких как доступ к диску, чтобы предоставить вам такие вещи, как управляемые средства доступа к файлам. Вы можете написать все это на управляемом C #, но вам потребуются неуправляемые вызовы, чтобы ОС воспринимала его как другой диск.

Все расширения оболочки — COM: http://msdn.microsoft.com/en-us/library/cc147467(VS.85).aspx

Однако вы могли бы написать настольное приложение .Net, которое позволяло бы перетаскивать файлы из проводника и выглядело бы как представление файловой системы.

person Keith    schedule 26.09.2008

Вы также можете использовать EZNamespaceExtension для .NET. Это дает вам интеграцию с проводником Windows. Не слишком дорого, учитывая, что лицензия на разработчика, а не на распространение.

Обновление Большая проблема с EZNamespaceExtension.NET. Он давно не обновлялся. LogicNP, похоже, потерял интерес к EZNamespaceExtension.NET, потому что с 2010 года не было выпуска с несколькими новыми функциями. Нет поддержки .NET 4 и панели инструментов ленты Windows 8.

person tronda    schedule 18.11.2009

Я только что проверил EZNamespaceExtension для .NET по приведенной выше ссылке. Кажется, что они идут в ногу со временем, как версия 2013 года выпуска. Но не уверен, что это может ответить на вопрос об отображении диска в Explorer.exe (насколько мне известно, он не может отображаться как буква диска)

person Eric F.    schedule 28.04.2013