Как создать папку в C:\, чтобы у нее было такое же короткое имя, как у «C:\Program Files»?

Как создать папку в C:\, чтобы у нее было такое же короткое имя, как у «C:\Program Files»?

Короткие имена в NTFS — это функция совместимости для систем DOS, которые поддерживают только имена файлов 8.3 (<имя из 8 символов>.<расширение из 3 символов>). Мы можем получить короткие имена файлов/папок в текущем каталоге с помощью dir /x.

"C:\Program Files" имеет короткое имя "PROGRA~1". Как назвать папку, чтобы она стала "PROGRA~1", а "C:\Program Files" стала "PROGRA~2"?

Я пробовал "Program Filas", "Program Fil", "Program File" безрезультатно. Я также пробовал устанавливать время создания, изменения, последней записи на что-то более старое с помощью:

$(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")

решение1

Он никогда не станет PROGRA~1таковым, пока у вас уже есть другой каталог с таким именем.

Короткие именанастойчивый– они выбираются при создании объекта и хранятся в файловой системе, как и обычные имена. После того, как имя назначено, ни алфавитный порядок, ни временные метки изменений не приведут к его изменению. (В конце концов, они должныработа(как и обычные имена, в том числе и то, что имя не может внезапно измениться само по себе.)

Win32 API имеет функциюSetFileShortName()что позволяет вам напрямую изменять имена 8.3 любого пути, поэтому напишите короткую программу (или используйте Python ctypes и т. д.) для выполнения этого изменения.

(Изменив короткое имя «Program Files» на что-то другое, вы можете создать каталог, названный буквально, PROGRA~1если это необходимо программе. Вам не нужно придумывать специальное имя, чтобы обмануть алгоритм.)

В качестве альтернативы вы можете переименовать "Program Files" в "asdf", освободив его короткое имя. Затем, как только "PROGRA~1" будет захвачен вашим каталогом, переименуйте настоящий обратно в "Program Files", и ему будет назначено ~2.

Связанный контент