Эмулировать жесткий диск в.NET
Есть ли способ эмулировать дисковод в.NET, перехватывая операции чтения / записи / блокировки?
Я хотел бы создать что-то с интерфейсом, похожим на GMail Drive в C#.
Спасибо том
6 ответов
Я использую файловую систему Eldos Callback для этой цели, но, хотя это хорошо, это не совсем дешево.
Есть также несколько бесплатных / дешевых проектов, и я уверен, что один из них был упомянут в аналогичном вопросе о SO в последнее время - хотя в данный момент его найти больше не могу. Стабильность, как правило, является серьезной проблемой, поскольку многоуровневые драйверы файловой системы Windows не являются тривиальными.
В Linux вы можете использовать API Mono.Fuse ( http://www.jprl.com/Projects/mono-fuse.html) для реализации файловых систем на основе.NET с кодом пользовательского пространства.
Вы могли видеть, как http://www.truecrypt.org/ делает это. Он делает это либо с помощью файлов, либо с помощью диска или раздела. И затем он монтирует файл, как если бы это был настоящий диск. Теперь, вероятно, что исходный код немного сложен;)
Не совсем так..Net находится на вершине функциональности ОС, такой как доступ к диску, и дает вам такие вещи, как управляемые средства доступа к файлам. Вы можете написать все это в управляемом C#, но вам потребуются неуправляемые вызовы, чтобы ОС воспринимала его как другой диск.
Все расширения оболочки - это COM: http://msdn.microsoft.com/en-us/library/cc147467(VS.85).aspx
Вы можете, однако, написать настольное приложение.Net, которое допускает перетаскивание из проводника и выглядит как представление файловой системы.
Вы также можете использовать EZNamespaceExtension для.NET. Это дает вам интеграцию с Windows Explorer. Не слишком дорого, учитывая, что лицензия распространяется на разработчика, а не на распространение.
Обновление Большая проблема с EZNamespaceExtension.NET. Он давно не обновлялся. Похоже, что LogicNP утратил интерес к EZNamespaceExtension.NET, потому что с 2010 года не было релиза с несколькими новыми функциями. Нет поддержки.NET 4 и нет поддержки ленточной панели инструментов Windows 8.
Я только что извлек EZNamespaceExtension для.NET по вышеуказанной ссылке. Похоже, что они идут в ногу со временем выпуска 2013 года. Но не уверен, что может ответить на вопрос "Отображать как диск в Explorer.exe" (AFAIK. Он не может отображаться как буква диска)