2008-09-11 8 views
32

Gibt es eine Möglichkeit, ein virtuelles Laufwerk in "(My) Computer" zu erstellen und zu manipulieren, etwa wie JungleDisk es tut?C#: Erstellen Sie ein virtuelles Laufwerk in Computer

Es tut wohl so etwas wie:

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

es irgendwelche API: s für das? Vielleicht um in eine XML-Datei oder eine Datenbank zu schreiben, anstatt in ein echtes Laufwerk.


Die Dokan Library scheint die Antwort zu sein, die vor allem mit meiner Frage entspricht, obwohl System.IO.IsolatedStorage scheint angepasst die standardisierte und die meisten Microsoft-Umgebung zu sein.

Antwort

20

Sie die Dokan library können ein virtuelles Laufwerk zu erstellen. Es gibt einen .Net-Wrapper für die Anbindung an C#.

+1

Soweit ich weiß, gibt es keine Möglichkeit, es in einem kommerziellen Projekt zu verwenden, es ist unter LGPL-Lizenz. Ich würde vorschlagen, WebDAV-Server + integrierte Windows/Mac OS X-Laufwerk-Mounting-Funktionalität zu verwenden. Wahrscheinlich ist dies der schnellste Weg, um das Ergebnis zu erreichen. –

+11

Ich denke, Sie mischen Dinge: LGPL ist nicht inkompatibel mit einer kommerziellen Nutzung. Sie können gegen die DLL verlinken (referenzieren) und nur wenn Sie Änderungen an der Dokan dll selbst vornehmen, müssen Sie die Quelle freigeben: aber NUR die Quelle der modifizierten Dokan-Bibliothek! DIES IST NICHT DER FALL FÜR ** GPL ** CODE, FÜR GPL MÜSSEN SIE DIE QUELLE IHRER ** GESAMTEN ANWENDUNG FREIGEBEN. – jdehaan

+1

Dokan ist lange tot und fehlerhaft, ohne Hoffnung auf Bugfixes. –

6

Ja, verwenden Sie die Klassen in System.IO.IsolatedStorage

+2

Ich verstehe nicht, wie IsloatedStorage ein OnRead-Ereignis hinzufügen kann und 'ShowFilesFromAmazon()'? Kannst du mir ein Beispiel geben? Vielen Dank! –

2

Der Inhalt von Arbeitsplatz kann Shell-Namespace-Erweiterungen enthalten. Diese COM-Objekte werden wie viele andere Shell-Erweiterungen im Haupt-Explorer-Prozess ausgeführt. Die Verwendung von C# für solche Erweiterungen ist eine schlechte Idee, da Ihre Erweiterung nicht steuern kann, welche CLR-Version Explorer.exe verwenden kann. Und Microsoft lässt nur eine CLR pro Prozess zu.

+0

Ich denke, das hat sich mit .net 4.0 geändert – Peter