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, я могу обойти это, но этот проект не тот, который я создал, и я опасаюсь просто убирать вещи, волей и неволей.

0 ответов

Другие вопросы по тегам