Laden...

FileSystemWatcher - Löschen von Dateien verhinderbar?

Erstellt von SlyFox vor 9 Jahren Letzter Beitrag vor 9 Jahren 3.240 Views
S
SlyFox Themenstarter:in
231 Beiträge seit 2007
vor 9 Jahren
FileSystemWatcher - Löschen von Dateien verhinderbar?

Hallo,

ich möchte mit einem FileSystemWatcher ein Verzeichnis überwachen.

Wenn ein Benutzer versucht eine Datei zu löschen, möchte ich prüfen, ob dies zum gegenwärtigen Zeitpunkt erlaubt ist und ggf. das Löschen verhindern.

Das Löschen ist dann erlaubt, wenn es eine neuere Version dieser Datei gibt.

Beispiel: dateiname-001.txt darf gelöscht werden, wenn es eine dateiname-002.txt (oder höher) gibt

Löschanfragen kommen selten vor, es gibt also mit der Überwachung keine Probleme.

Kann man das mit FileSystemWatcher realisieren bzw. kann man das Löschen überhaupt irgendwie verhindern? Die Berechtigung für die Dateien auf Betriebssystem-Ebene zu ändern, halte ich für zu aufwändig, da ständig neue Dateien für diesen Ordner erstellt werden.

Vielen Dank für eure Unterstützung

Christoph

16.806 Beiträge seit 2008
vor 9 Jahren

Kurz und bündig: nein.

PS: Rechte werden i.d.R. auf Shares oder Hauptordner vergeben - nicht auf Dateien.
Und dort auch nicht auf einzelne Personen, sondern auf Gruppen / Rollen.

S
SlyFox Themenstarter:in
231 Beiträge seit 2007
vor 9 Jahren

Hallo Abt,

gibt es kein Event wie z. B. BeforeFileDeletion(..., bool Cancel)?

Viele Grüße

Christoph

16.806 Beiträge seit 2008
vor 9 Jahren

Nein. Das Event wird nach dem Löschen geworfen. Du hast keine Chance in diesen Vorgang einzugreifen.

S
SlyFox Themenstarter:in
231 Beiträge seit 2007
vor 9 Jahren

Danke 😦

1.346 Beiträge seit 2008
vor 9 Jahren

Hallo,

Wie wäre es denn wenn du die Daten zum lesen öffnest und dadurch das Löschen verhinderst?

LG,

pdelvo

S
SlyFox Themenstarter:in
231 Beiträge seit 2007
vor 9 Jahren

Hallo pdelvo,

danke für die Idee. Es sind aber Dateien im 5-stelligen Bereich, nicht nur einzelne.

Ansonsten wäre deine Idee natürlich super geeignet!

Wenn keiner eine bessere Lösung hat, werde ich es jetzt anders lösen:

Die Benutzer bekommen auf den Ordner nur Leserechte, die auf die neu erstellten Dateien vererbt werden. Wird eine neue Datei erstellt, wird ein Event gefeuert, das ich abfange und die Rechte an der älteren Version dieser Datei ändere, sodass die ältere Version löschbar ist.

Viele Grüße

Christoph

742 Beiträge seit 2005
vor 9 Jahren

Du kannst ein eigenes Dateisystem schreibe: Da geht das dann 😉

https://www.eldos.com/cbfs/

S
SlyFox Themenstarter:in
231 Beiträge seit 2007
vor 9 Jahren

Hallo malignate,

mehr als 5.000 EUR für so eine Lösung auszugeben ist etwas übertrieben.

Wenn es keine bessere Lösung gibt, werde ich alle Dateien noch einmal in einen Backup-Ordner auf dem Server speichern. Wenn eine Datei versehentlich gelöscht wurde, kann ich sie sofort wieder aus dem Backup-Ordner wiederherstellen (automatisch per FileSystemWatcher).

Viele Grüße

Christoph

W
955 Beiträge seit 2010
vor 9 Jahren

... oder verschiebe die älteren Versionen doch in einen Ordner wo alles erlaubt ist.

S
SlyFox Themenstarter:in
231 Beiträge seit 2007
vor 9 Jahren

Hallo witte,

dummerweise muss unser ERP System (nicht SAP) auf alle vorhandenen Versionen der Dateien zugreifen können, sofern vorhanden. Das ERP-System umzuschreiben, damit es auch in anderen Ordnern nach Dateien sucht, ist garantiert teurer, als ein Work-Around.

Ich bin auch nicht glücklich über diese Lösung.

Viele Grüße

Christoph