Согласно моему пониманию файловой системы Windows, программа может читать файл в соответствии с его путем, если этот путь изменяется, то любая программа, использовавшаяся для чтения этого файла, больше не может этого делать. Это будет означать, что для любых программ в системе Windows, которые зависят от файла, последствия удаления и переименования файла должны быть одинаковыми.
Конкретный случай, от которого зависит этот ответ, - это встроенная система, работающая на Windows 2000, руководство поставщика услуг направляет пользователя на удаление файлов в папке. Как осторожный пользователь, я просто скопировал файлы в папку с именем folder_backup и оставил папку пустой.
Во время этой операции система регрессировала и не смогла нормально функционировать. Поэтому был назван поставщик услуг, который написал руководство. Их диагностика заключалась в том, что база данных была повреждена, потому что параллельно было две базы данных, указывая на «folder_backup» в качестве второй базы данных. Насколько я понимаю, файлы внутри «D: / folder_backup» были бы инертными, исключая исключительный случай, когда программа искала папки, начинающиеся с «folder», или читала все содержимое в файле «D: /».
Какими неясными способами система может получить доступ к переименованному файлу, что в противном случае было бы невозможно, если бы файл был удален?
источник
Ответы:
Избалован на выбор действительно.
Отслеживание распределенных ссылок.
Жесткие ссылки.
OpenFileById.
MFT запись номеров.
... и, вероятно, больше. Вопрос о том, целесообразно ли приложению выполнять какие-либо из этих действий, - это другой вопрос, но это, безусловно, возможно .
источник
Переименованный файл все еще может быть доступен другой программе.
Одним способом, которым переименованный файл может все еще быть доступным для другой программы, является переменная среды, которая задается для нового пути к файлу той же самой программой, которая переименовала файл. Программа, которая хочет получить доступ к указанному файлу, использует переменную среды для пути к файлу вместо фиксированного внутреннего пути к файлу.
Другой способ - файл должен быть единственным файлом в определенной папке. Программа, которая хочет использовать этот файл, знает, что в этой конкретной папке никогда не должно быть более одного файла, но знает, что имя файла может измениться, но каталог, к которому он принадлежит, останется прежним. Программа просто использует первый найденный файл в этой папке, который всегда должен быть этим файлом. Однако это не очень хорошая практика, и вам лучше использовать переменную окружения.
В противном случае некоторые программы автоматически просят пользователя найти файл перед продолжением выполнения его кода.
источник