2 Stimmen

Inhalt von NTFS-Ordnern dynamisch in einen virtuellen Ordner zusammenführen

Ich muss den Inhalt mehrerer NTFS-Ordner auf der Grundlage einiger Regeln zu einem einzigen zusammenführen. Diese Regeln sollen sicherstellen, dass es keine widersprüchlichen Namen gibt. Das Ziel ist es, all dies programmatisch zu tun (c# und/oder c++).

Die einfachste Lösung, die ich hatte, ist die Erstellung eines NTFS-Links (oder einer Junction) im Zielordner, der auf jede Datei im Quellordner zeigt.

Das hat bisher funktioniert, aber ich habe das Problem, dass zusätzliche Dateien nicht erscheinen und entfernte Dateien nicht verschwinden.

Nun, natürlich kann ich einen Hintergrundprozess (Dienst) laufen lassen, der die Quellordner des Dateisystems abhört und entsprechende Änderungen von NTFS-Links on thy fly durchführt, aber ist das der richtige Weg?

Die erste Frage lautet: 1. Was ist der eleganteste Weg, dies zu tun? 2. Ich habe mehrere Programme gesehen, die zum Beispiel den Inhalt einer ZIP- oder ISO-Datei in einen NTFS-Ordner einbinden können. Wie funktionieren sie?

3voto

NPE Punkte 462670

Hier ist ein Projekt, mit dem Sie ein Usermode-Dateisystem in Windows erstellen können: Dokan :

Wenn Sie ein neues Dateisystem unter Windows erstellen wollen, zum Beispiel FAT oder NTFS zu verbessern, müssen Sie einen Dateisystemtreiber entwickeln. Die Entwicklung eines Gerätetreibers, der im Kernelmodus von Windows funktioniert, ist extrem schwierig. Mit der Dokan-Bibliothek können Sie Ihre eigenen Dateisysteme sehr einfach erstellen, ohne einen Gerätetreiber zu schreiben.

2voto

Die Zuordnung eines Objekts zu einem bestehenden Ordner ist auf zwei Arten möglich:

  1. Der Dateisystem-Filtertreiber filtert FS-Anfragen an den vorhandenen Ordner und zeigt den geänderten Inhalt des Ordners an.
  2. Der Dateisystemtreiber erstellt ein virtuelles Dateisystem und hängt es als Junction Point auf einem NTFS-Laufwerk ein.

Beide Methoden erfordern einen entsprechenden Kernel-Mode-Treiber.

Anwendungen, die eine ZIP-Datei (oder eine andere ähnliche Datei) offenlegen, verwenden eine der oben genannten Methoden. ISO-Dateien, die Abbilder des Datenträgers sind, können direkt als virtuelle Festplatten dargestellt und auch in NTFS-Ordner eingebunden werden. In letzterem Fall ist ein Kernel-Mode-Disk-Treiber erforderlich.

Ihre spezielle Aufgabe kann mit Hilfe unserer Callback File System (CBFS)-Produkt. CBFS bietet einen vorgefertigten Kernel-Mode-Treiber und lässt Sie Ihren dateisystembezogenen Code im User-Mode schreiben. CBFS enthält ein Mapper-Beispiel, das fast das tut, wonach Sie suchen - es zeigt den Inhalt eines bestehenden Ordners als neues virtuelles Dateisystem an, das Sie in einen NTFS-Ordner einhängen können (CBFS unterstützt dies). Nicht-kommerzielle Lizenzen sind für öffentliche, nicht-kommerzielle Projekte erhältlich. APIs werden für .NET, C++, Java und Delphi angeboten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X