¿Cómo lidiar con archivos con un nombre de más de 259 caracteres?

Estoy trabajando en una aplicación que recorre cada archivo en algunos directorios y realiza algunas acciones con esos archivos. Entre otros, debo recuperar el tamaño del archivo y la fecha en que se modificó este archivo.

Algunos nombres completos de archivos (directorio + nombre de archivo) son demasiado largos, no pude usar .NET FrameworkFileInfo, que se limita aMAX_PATH (260 caracteres). Muchas fuentes web recomiendan utilizar funciones nativas de Win32 a través de P / Invoke para acceder a los archivos cuyos nombres son demasiado largos.

Actualmente, el mismo problema parece surgir con las funciones de Win32. Por ejemplo,GetFileAttributesEx (kernel32.dll) falla con el error 3 de Win32 ERROR_PATH_NOT_FOUND para la ruta de 270 bytes.

El mismo archivo se puede abrir con éxito desde Notepad2 y se puede mostrar correctamente con el Explorador de Windows (pero Visual Studio 2010, por ejemplo, no puede abrirlo debido al límite de 259 caracteres 25).

¿Qué puedo hacer para poder acceder a un archivo cuando la ruta del archivo tiene 270 caracteres de longitud?

Notas:

Eliminar o ignorar archivos con una longitud de ruta de archivo superior a 259 caracteres no es una solución.

Solo estoy buscando soluciones compatibles con Unicode.

La aplicación se ejecutará en Windows 2008 / Vista o posterior con .NET Framework 4. instalado.

¹ Sorprendentemente, Microsoft Word 2007 falla, quejándose de que "el disquete es demasiado pequeño" en una computadora que no tiene ninguna unidad de disquete, o que "la memoria RAM es baja" cuando quedan 4 GB de RAM, o finalmente que "el software antivirus [...] necesita ser actualizado". ¿Dejarán algún día de mostrar errores tan estúpidamente sin sentido al menos en productos clave como Microsoft Office?

Respuestas a la pregunta(8)

Su respuesta a la pregunta