Что такое короткий путь для C: \ Program Files? Как я могу добавить его обратно?

8597
Mike B

Windows 7 (32-разрядная версия)

У меня есть приложение, которое требует синтаксиса короткого пути для подкаталога в Program Files (c: \ Program Files \ Foo Example \ Foo Example2).

На большинстве моих пользовательских систем он включен по умолчанию и работает нормально. Однако в избранном подмножестве пользователей он отключен (я не уверен, почему, поскольку все используют общее изображение).

Я попытался включить его через fsutil 8dot3name set 0(из командной строки с правами администратора). Эта команда, кажется, работает нормально (без ошибок). Но когда я пытаюсь создать короткое имя, я получаю:

C:\>fsutil file setshortname "Program Files" PROGRA~1 Error: Access is denied. 

Любые мысли о том, как отладить это и определить, почему Windows не позволяет мне добавить это? Есть ли журнал ошибок, который я могу проверить где-нибудь?

Обновить

Согласно запросу, вот что я вижу при наборе DIR P* /X

C:\>DIR P* /X Volume in drive C has no label. Volume Serial Number is XXXX-XXXX  Directory of C:\  07/13/2009 10:20 PM <DIR> PerfLogs 03/13/2014 02:47 PM <DIR> Program Files 03/13/2014 02:48 PM <DIR> Program Files (x86)  0 File(s) 0 bytes 3 Dir(s) 412,723,027,968 bytes free 
0
This a internal or third-party application? Because Program Files is not the proper place to place application data hasn't been for a very long time. Ramhound 10 лет назад 0
Perhaps "PROGRA~1" already exist? Can you CD into it? Ƭᴇcʜιᴇ007 10 лет назад 0
Я могу быть здесь, но поможет ли это использовать "SET" (http://ss64.com/nt/set.html)? Ввод SET в cmd может показать предустановленные переменные, такие как «ProgramFiles (x86) = C: \ Program Files (x86)». В этом случае вы можете использовать переменную вместо полного пути. EG "echo% ProgramFiles (x86)%" вернет "C: \ Program Files (x86)" root 9 лет назад 0

2 ответа на вопрос

2
Debra

Вам не нужно создавать короткое имя; это уже там.

Чтобы убедиться, что это «PROGRA ~ 1» или определить, что это такое, используйте команду DIR, т.е.

CD \ DIR P* /X 

который покажет вам короткие имена, связанные с каждым именем папки верхнего уровня, начинающимся с «P».

Поскольку «Program Files» и «Program Files (X86)» являются защищенными расположениями, система не позволит вам изменить короткое имя, связанное с этими папками, но нет причины, по которой вы не можете использовать короткие имена, уже определенные Сама система.

Кроме того, ваша команда предназначена для файлов, и вы управляете каталогами (которые в некотором смысле являются файлами, но не FSUTIL.)

Thanks for the prompt response. That's just it though - if I try `C:\>cd c:\progra~1`I get a response of `The system cannot find the path specified"` Mike B 10 лет назад 0
Again, run the DIR command I provided, to find out the short name that is already assigned; it doesn't -have- to be "progra~1". Debra 10 лет назад 0
Привет, Дебра, я обновил резюме вопроса, чтобы включить вывод этой команды. Нет ярлыков. Какие-нибудь мысли? Mike B 10 лет назад 0
Попробуйте следующее. Запустите «fsutil 8dot3name query» и определите состояние создания короткого имени. Проверьте наличие сторонних утилит, которые могут создавать помехи. Создайте незащищенную папку с длинным именем и посмотрите, будет ли также создано короткое имя; если нет, посмотрите, можете ли вы добавить короткое имя после факта. Проверьте, включен ли UAC. Казалось бы, что-то в процессе установки / создания образа приводит к тому, что короткие имена не генерируются даже при первоначальной установке. Debra 10 лет назад 0
Хм, я тоже вижу это http://social.technet.microsoft.com/forums/windows/en-US/46cd3ef4-ed79-4b87-9e0f-6d769da9b9b9/dismexe-commit-breaks-program-files-8dot3-short- имена как отмечающие проблему при создании образа с помощью DISM. Ваш процесс сборки похож? Debra 10 лет назад 1
0
Pavulon
  1. Запустите Windows в безопасном режиме с командной строкой, чтобы убедиться, что Windows не используетProgram Files
  2. cd C:\
  3. fsutil file setshortname "Program Files" PROGRA~1