2012-12-18 1 views
7

Ich habe eine große Sammlung von Ordnern für Projekte, an denen ich gerade arbeite. Ich habe versucht, einen besseren Weg zu finden, sie alle für eine lange Zeit zu sortieren, und ich möchte eine App schreiben, die Gruppen basierend auf irgendwelchen Kriterien, die ich sage, wie "Ordner von 2011" oder "Ordner, die Axt-Datei enthalten" erstellt "usw.Erstellen von virtuellen Ordnern und Einhängen in das Dateisystem

Dies ist ziemlich einfach und würde nicht viel von einem Problem zu Code mit seiner eigenen Benutzeroberfläche in WinForms oder WPF oder so etwas darstellen. Aber ich denke, es wäre viel besser, wenn ich diese Ordner als Teil des Dateisystems erscheinen lassen könnte, damit andere Apps (wie vorhandene Datei-Explorer) sie sehen können.

Ist das möglich? Würde es Probleme verursachen, die ich nicht berücksichtigt habe? Wie gehe ich vor, wenn es möglich ist?

Eine Möglichkeit, dies zu tun, wäre, dass die App das Dateisystem überwacht und Ordnerverknüpfungen jedes Mal erstellt, wenn es eine Änderung gibt, aber ich bin neugierig, ob es möglich ist, ein falsches Dateisystem Explorer zu präsentieren Gateway‘Ordner

EDIT: Ok es ist offensichtlich möglich, da http://www.virtualfolder.net/ kann es tun, und jetzt, wo ich darüber nachdenke kann so TrueCrypt, obwohl es wäre schön, wenn es nicht als separate erscheinen musste Fahrt. Also die Frage wird, wie setze ich es um?

+0

Windows 7 hat diese Funktionalität eingebaut –

Antwort

4

Dies wird mithilfe von Dateisystemtreibern oder Dateisystemfiltertreibern erreicht. Zuerst können Sie ein virtuelles Dateisystem erstellen und es in einen Laufwerksbuchstaben und auch in einen Ordner auf NTFS-Laufwerk mounten (Ordner muss vorhanden sein, aber sein Inhalt wird durch eine Verzeichnisstruktur des virtuellen Dateisystems ersetzt). Dateisystemfiltertreiber können Sie virtuelle Dateien und Ordner in vorhandenen Ordnern einführen, ohne sie zu ersetzen.

VirtualFolder verwendet den Dateisystemtreiber, da er einen Laufwerksbuchstaben erstellt.

Beide Arten von Treibern sind in C geschrieben und arbeiten im Kernel-Modus. Sie zu schreiben erfordert tiefgehende Kenntnisse der Windows-Interna und Erfahrung mit der Treiberentwicklung (da Dateisystemtreiber zu den kompliziertesten Treibertypen gehören).

Wir bieten verschiedene Produkte im Zusammenhang mit virtuellen Speicher. Eines von ihnen, Callback File System, ist ein Dateisystemtreiber. Es ruft Ihren Benutzermoduscode auf, um tatsächliche Dateisystemfunktionen auszuführen. Ein anderes Produkt, CallbackFilter, ist ein FS-Filtertreiber (und ruft auch Ihren Benutzermoduscode auf). Mit der aktuellen Version von CallbackFilter können Sie jedoch keine virtuellen Dateien und Ordner einführen (dies wäre in der nächsten Version implementiert).

Es gibt auch Pismo File Mount-Produkte, die Filtertreibertechniken verwenden. Sie können mit ihnen überprüfen, ob das, was Sie brauchen, erreicht werden kann.

9

Sie können eine Shell Namespace Extension erstellen, die die gewünschten Dateiinformationen sammelt und im Windows Explorer nach Belieben anzeigt. You can choose where Ihre Erweiterung befindet sich entweder als eigener Knoten der obersten Ebene, als untergeordnetes Element eines anderen virtuellen Systemordners/-erweiterung oder als Kind eines Dateisystemordners.

Das Schreiben eines SNE ist nicht trivial, aber es ist viel einfacher als das Schreiben eines untergeordneten Dateisystemtreibers und erfordert keine speziellen treiberorientierten Compiler. Jeder Compiler, der die Entwicklung von COM-Objekten unterstützt, funktioniert.

0

Von dem, was ich sammle, suchen Sie nach einer Möglichkeit, die Ergebnisse von vordefinierten Dateiabfragen so darzustellen, als ob sie sich an einer bestimmten Stelle im Dateisystem befinden. Wenn das korrekt ist, können Sie in Hard Links and Junctions suchen.Es gibt Einschränkungen, was Sie mit diesen Dateisystemdiensten tun können. Es ist jedoch sehr einfach zu implementieren.