Вопрос

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

Спасибо, Том

Это было полезно?

Решение

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

Есть также несколько бесплатных/дешевых проектов, и я уверен, что один из них недавно упоминался в аналогичном вопросе на 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.Не слишком дорого, учитывая, что лицензия предоставляется на одного разработчика, а не на распространение.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top