¿Cómo crear una carpeta en C:\ para que tenga el mismo nombre corto que "C:\Program Files"?

¿Cómo crear una carpeta en C:\ para que tenga el mismo nombre corto que "C:\Program Files"?

Los nombres cortos en NTFS son una característica de compatibilidad para sistemas DOS que solo admiten nombres de archivos 8.3 (<nombre de 8 caracteres>.<extensión de 3 caracteres>). Podemos obtener los nombres cortos de archivos/carpetas en el directorio actual con dir /x.

"C:\Program Files" tiene el nombre corto "PROGRA~1". ¿Cómo se debe nombrar una carpeta para que se convierta en "PROGRA~1" y "C:\Program Files" se convierta en "PROGRA~2"?

Probé "Program Filas", "Program Fil", "Program File" sin éxito. También intenté configurar los tiempos de creación, modificación y última escritura en algo anterior con:

$(Get-Item "Program Filas").creationtime=$(Get-Date "01/01/2000 00:01 am")
$(Get-Item "Program Filas").lastaccesstime=$(Get-Date "01/01/2000 00:01 am")
$(Get-Item "Program Filas").lastwritetime=$(Get-Date "01/01/2000 00:01 am")

Respuesta1

Nunca lo será PROGRA~1mientras ya tenga otro directorio con ese nombre.

Los nombres cortos sonpersistente– se eligen al crear el objeto y se almacenan dentro del sistema de archivos como nombres normales. Una vez asignado el nombre, ni el orden alfabético ni las marcas de tiempo de modificación harán que éste cambie. (Después de todo, se supone que debentrabajarcomo los nombres normales, lo que incluye que el nombre no cambie repentinamente por sí solo).

La API Win32 tiene una funciónEstablecer nombre corto de archivo()lo que le permite cambiar directamente los nombres 8.3 de cualquier ruta, así que escriba un programa corto (o use ctypes de Python, etc.) para realizar este cambio.

(Después de cambiar el nombre corto de "Archivos de programa" a algo personalizado, puede crear un directorio con un nombre literal PROGRA~1si eso es lo que el programa necesita. No necesita crear un nombre especial para engañar al algoritmo).

Alternativamente, puedes cambiar el nombre de "Archivos de programa" a "asdf", liberando su nombre corto. Luego, una vez que su directorio reclame "PROGRA~1", cambie el nombre del directorio real a "Archivos de programa" y se le asignará ~2.

información relacionada