Windows использует скрытый файл, а не каталог в путях... Почему?
У меня (и моего коллеги) возникает эта проблема с 32-разрядными приложениями в 64-разрядной ОС Windows 7. Мы также обнаружили те же проблемы, когда мы вызываем 64-битное приложение и передаем путь, как описано ниже, в качестве параметра в cmd.exe.
Учитывая путь "C:\dir1\dir2\file1.txt", у нас есть некоторые 32-разрядные приложения, которые, по-видимому, не в состоянии последовательно разрешить этот путь и найти файл, если есть скрытый файл с определенным именем структура заставляет его терять свой путь.
Например, учитывая структуру каталога / файла:
\dir1
\dir2
\file1.txt
\.dir2Blah
Важным является то, что имя "скрытого" файла начинается с тех же символов, которые обозначают каталог на том же уровне иерархии. Что после этого в названии скрытого файла не имеет значения. Это можно назвать ".dir2Wh независимо".
Проблема в том, что чаще всего (но не всегда) некоторые 32-битные приложения, которые мы используем, не могут найти файл file1.txt. Нам сказали, что это не может быть найдено или не существует, и т. Д. В приложении. Используя Process Monitor, мы обнаружили, что причина в том, что запрашиваемый путь - C:\dir1\dir2\file1.txt, а оцениваемый системой Windows путь - C:\dir1\.dir2Blah\file1. текст.
Мы обнаружили, что некоторые 32-битные приложения могут нормально работать с этими (как я бы назвал) ошибочными путями и успешно находят нужные файлы, а другие нет.
Как я уже говорил выше, мы также обнаружили, что можем воспроизвести проблему с 64-разрядными приложениями, если попытаться открыть файл с помощью команды cmd.exe; например, "textpad.exe \dir1\dir2\file1.txt".
Мы "гуглили" эту проблему в течение 2 дней, потому что мы полностью ошарашены и не можем поверить, что никто другой никогда не сталкивался с этим, если его так "легко" воспроизвести. Мой коллега и я оба способны вызвать сбой; не всегда, но доступ к файлам не удастся более половины времени, когда мы настроим структуру, которую я описал.
Я включил изображение Process Monitor, показывающее этот сбой в двух приложениях, но преуспевающее в третьем... здесь.
Кто-нибудь может сказать мне, что происходит? Во-первых, почему он изменяет путь, чтобы использовать этот скрытый файл, а не имя каталога? И, что более важно, как мы можем остановить это;-)?
Ура, JTM
Добавлено позже:
Вот вывод "dir /x" для каталога, где у меня возникла эта проблема.
24/05/2017 12:17 PM <DIR> .
24/05/2017 12:17 PM <DIR> ..
24/05/2017 12:17 PM 12 BLAHTS~1 .blahtst
23/05/2017 03:06 PM 104 JSHINT~1 .jshintrc
24/05/2017 12:16 PM <DIR> blah
24/05/2017 12:16 PM 0 blank.txt
24/05/2017 12:15 PM 6,624 INDEX~1.HTM index.html
24/05/2017 10:48 AM <DIR> js
Это также указывает на то, как мы наткнулись на проблему. У меня есть HTML-файл, который пытается загрузить файл JavaScript в каталоге /js, но есть файл.jshintrc того же уровня, и мой старый сервер Apache не может найти файлы для их обслуживания. Если я удаляю файл.jshintrc, я могу обойти это, но этот проект не тот, который я создал, и я опасаюсь просто убирать вещи, волей и неволей.