Есть ли способ эмулировать дисковод в .NET, перехватывая операции чтения/записи/блокировки?
Я хотел бы создать что-то с внешним интерфейсом, подобным Диск GMail на C#.
Спасибо, Том
Есть ли способ эмулировать дисковод в .NET, перехватывая операции чтения/записи/блокировки?
Я хотел бы создать что-то с внешним интерфейсом, подобным Диск GMail на C#.
Спасибо, Том
Для этой цели я использую файловую систему обратного вызова Eldos, но, хотя она хороша, она не совсем дешевая.
Есть также несколько бесплатных/дешевых проектов, и я уверен, что один из них недавно упоминался в аналогичном вопросе на 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 (насколько мне известно, он не может отображаться как буква диска)