Ciao.
Proviamo a ragionare sulla prima ipotesi giusto per poterla escludere. Non hai la necesità di accorciare i nomi dei file nel senso di cambiare nome al file o alle directory per giungere ad esse. Ti è sufficiente convertire il nome del file lungo in nome di file corto. Stranamente che io ricordi .NET non ha una funzione per far questo quindi dobbiamo ricorrere a P/Invoke quindi alle API di Windows. Ti posto una banalissima applicazione (Console, Visual Basic) che dimostra l'uso di tali API.
Imports System.Runtime.InteropServices
Imports System.IO
Imports System.Text
Module Module1
Sub Main()
Dim inputPath As String
Console.Write("Specificare il percorso completo del file: ")
inputPath = Console.ReadLine()
Console.WriteLine("Il percorso:")
Console.WriteLine(inputPath)
Console.WriteLine("corrisponde a:")
Console.WriteLine(FSHelper.ToShortPath(inputPath))
Console.ReadLine()
End Sub
Public Class FSHelper
<DllImport("kernel32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> _
Public Shared Function GetShortPathName( _
<MarshalAs(UnmanagedType.LPTStr)> ByVal path As String, _
<MarshalAs(UnmanagedType.LPTStr)> ByVal shortPath As StringBuilder, _
ByVal shortPathLength As Integer) As Integer
End Function
<DllImport("kernel32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> _
Public Shared Function GetLongPathName( _
<MarshalAs(UnmanagedType.LPTStr)> ByVal path As String, _
<MarshalAs(UnmanagedType.LPTStr)> ByVal longPath As StringBuilder, _
ByVal shortPathLength As Integer) As Integer
End Function
Public Shared Function ToLongPath(ByVal inPath As String) As String
Dim sb As New StringBuilder(1024)
Dim i As Integer = GetLongPathName(inPath, sb, sb.Capacity)
'i = Marshal.GetLastWin32Error()
Return sb.ToString()
End Function
Public Shared Function ToShortPath(ByVal inPath As String) As String
Dim sb As New StringBuilder(1024)
Dim i As Integer = GetShortPathName(inPath, sb, sb.Capacity)
Return sb.ToString()
End Function
End Class
End Module
Quindi dovrai convertire la classe FSHelper in C# e usare il metodo ToShortPath per ottenere la versione "corta" del percorso. Se hai dubbi sulla conversione del codice in C# ti posso postare l'esempio in tale linguaggio.
Se con questa prova possiamo escludere che si tratti del problema dei nomi di file 8+3 allora ci concentreremo su altri argomenti.
Alla prossima. Ciao.