2008-09-11 5 views
32

Есть ли способ создать виртуальный диск в «Мой компьютер» и манипулировать им, как это делает JungleDisk?C#: создать виртуальный диск на компьютере

Это, вероятно, делает что-то вроде:

override OnRead(object sender, Event e) { 
    ShowFilesFromAmazon(); 
} 

Есть ли API: s для этого? Возможно, для записи в XML-файл или базу данных вместо реального диска.


Dokan Library, кажется, ответ, который в основном соответствует моему вопросу, несмотря на то, System.IO.IsolatedStorage кажется наиболее стандартизированный и наиболее Microsoft-среда приспособлена.

ответ

20

Вы можете использовать Dokan library, чтобы создать виртуальный диск. Для взаимодействия с C# существует .Net-обложка.

+1

Насколько я знаю, нет способа использовать его в коммерческом проекте, он находится под лицензией LGPL. Я бы предложил использовать WebDAV-сервер + встроенную функциональность установки привода Windows/Mac OS X. Вероятно, это самый быстрый способ добиться результата. – 2010-09-05 22:12:50

+11

Я думаю, что вы смешиваете вещи: LGPL несовместим с коммерческим использованием. Вы можете ссылаться на dll (ссылаться на него), и только если вы вносите изменения в dll Dokan, вы должны освободить источник: но источник модифицированной библиотеки Dokan ТОЛЬКО! ЭТО НЕ СЛУЧАЙ ДЛЯ ** КОДА GPL **, ДЛЯ GPL ВЫ ДОЛЖНЫ ОТПРАВИТЬ ИСТОЧНИК ** ВАШЕГО ** ВСЕГО ПРИМЕНЕНИЯ. – jdehaan 2010-09-06 04:51:08

6

Да, использовать классы в System.IO.IsolatedStorage

+2

Я не понимаю, как IsloatedStorage может добавлять событие OnRead и делать ShowFilesFromAmazon() `? Не могли бы вы привести мне пример? Благодаря! – 2011-04-19 00:06:11

2

Содержимое «Моего компьютера» может включать расширения пространства имен оболочки. Эти COM-объекты выполняются внутри основного процесса проводника, как и многие другие расширения оболочки. Использование C# для таких расширений - плохая идея, так как ваше расширение не может контролировать, какую версию CLR версии Explorer.exe можно использовать. И Microsoft допускает только один CLR для каждого процесса.