Gesamter Dateiname mehr als 260 Zeichen ( Netzwerk Freigabe )

masa83

Grünschnabel
Hallo Gemeinde,

Ich versuche Dateien über die Netzwerkfreigabe zu löschen.
Das Löschen realisiere ich mit diesem Code:
Code:
'Remotedir = “\\ComputerName\Laufwerk$\...\...\...”
For Each tmpFile As String In System.IO.Directory.GetFiles(Remotedir)

  System.IO.File.SetAttributes(tmpFile,  System.IO.FileAttributes.Normal)
  System.IO.File.Delete(tmpFile)

Next

Hierbei stoße ich auf ein Problem das der gestammte Dateiname mehr als 260 Zeichen lang ist.
Weil zu dem eigentlichen Namen der Name der Netzwerkfreigabe dazukommt.
Wenn auf dem PC: 192.168.1.10 die Datei: „c:\Programme\Test\test.dat“ gelöscht werden soll, ist die Komplete lange des Dateinamens Lokal auf dem PC (26 Zeichen).
Wenn ich dies aber von einem anderen PC die Datei löschen will, kommt noch der Name der Freigabe hinzu, somit wäre dies der vollständige Pfad:
„\\192.168.1.10\\ c$\Programme\Test\test.dat“
Also in diesem Beispiel wird das Löschen ohne Probleme Funktionieren weil die gesamte lange des Namens nicht die 260 grenze überschreitet.
Wenn aber z.B. auf diesem PC eine Datei liegt die bereits die volle Länge des Namens (260 Zeichen) hat ist das löschen der Datei unmöglich.
Wie kann man dieses Problem umgehen?

Bin für jeden Tipp dankbar!


Mit freundlichen Grüßen
 
Hallo masa,

die .NET Klassen sind ziemlich fix auf ~260 Zeichen pro Pfad beschränkt.
Falls du echt längere Pfade brauchst, bleibt wohl nur selber PInvoke
auf die Win32 APIs und mit der 'UNC' -Schreibweise "\\?\D:\<path>"


MSDN
Naming a File [Files]

Der Windows Explorer & Shell und etliche APIs haben tatsächliche eine Limite von total ~260 Zeichen.
Aber das NTFS-Filesystem und einige APIs unterstützen Pfade bis 32'000 Zeichen.

Getestet habe ich das aber selbst noch nicht.

Gruß
Jens
 

Neue Beiträge

Zurück