Чи перейменування файлів у системах Windows функціонально схоже на їх видалення?


9

Згідно з моїм розумінням файлової системи Windows, програма може прочитати файл відповідно до його шляху, якщо цей шлях буде змінено, то будь-яка програма, яка використовується для читання цього файлу, вже не може цього робити. Це означатиме, що для будь-яких програм у системі Windows, які залежать від файлу, наслідки видалення та перейменування файлу повинні бути однаковими.

Конкретний випадок, від якого залежить ця відповідь, - це вбудована система, що працює на Windows 2000, керівництво постачальника послуг керує користувачем для видалення файлів всередині папки. Як насторожений користувач, я просто скопіював файли в шлях, який називався "folder_backup", і папку залишив порожньою.

Під час цієї операції система регресувала і не змогла правильно функціонувати. Так зателефонували постачальник послуг, який написав посібник. Їх діагностика полягала в тому, що база даних була пошкоджена, оскільки паралельно існували 2 бази даних, що вказувало на "folder_backup" як на другу базу даних. Наскільки я розумію, файли всередині "D: / folder_backup" були б інертними, забороняючи винятковий випадок програми, яка шукає папки, починаючи з "папки" або читаючи весь вміст у файлі "D: /".

Якими незрозумілими способами все-таки можна отримати доступ до перейменованого файлу системою, що інакше було б неможливим, якби файл був видалений?


1
Ви насправді копіювали файли (маючи дві копії в якийсь момент, а потім видаляючи оригінал) або просто переміщували їх?
GSerg

1
Чи працювала система під час читання цих баз даних? У Windows (також Linux) можна копіювати файли під час їх відкриття (залежно від програми, яка відкриває файли в певних "режимах"). Це, ймовірно, призведе до пошкодження копій, BTW.
davidbak

@davidbak Негативно, додаток було закрито при перейменуванні файлів.
Томаш

@GSerg Я вважаю, що я перейменував папку, а потім дозволив налаштуванням програми відтворити її.
Томаш

Порівняйте з файловими системами Unix, де ідентифікатор файлу є цілим числом, а ім'я файлу - це лише відображення від імен до ідентифікатора, а файл не видаляється, доки він не має імен і жодних процесів не відкриється. Перейменування файлу в Unix додає нове зіставлення імен, потім видаляє старе ім'я, тому файл не видаляється.
Raedwald

Відповіді:


16

Зіпсований на вибір справді.


Нічого собі, я не очікував, що існує так багато способів зламати щось, перейменувавши файл. Дякую!
Томаш

@ wizzwizz4 2000 - це NT
zdimension

-2

Перейменований файл все ще може отримати доступ до іншої програми.

  • Один із способів доступу до перейменованого файлу іншою програмою - це змінна середовища, яка встановлюється на новий шлях до файлу тією ж програмою, що перейменувала файл. Програма, яка хоче отримати доступ до вказаного файлу, використовує змінну середовища для шляху до файлу, а не фіксований внутрішньо встановлений шлях до файлу.

  • Інший спосіб - це файл, який є єдиним файлом у певній папці. Програма, яка хоче використати цей файл, знає, що ніколи не повинно бути більше одного файлу у цій конкретній папці, але знає, що ім'я файлу може змінюватися, але каталог, до якого він належить, залишиться незмінним. Програма просто використовує перший файл, який він може знайти в тій папці, який завжди повинен бути цим файлом. Однак це не є хорошою практикою, і вам краще зі зміною середовища.

Якщо цього не зробити, деякі програми автоматично попросять користувача знайти файл, перш ніж продовжувати виконувати його код

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.