чудеса венды
От: CoderMonkey  
Дата: 10.01.18 00:32
Оценка: 1 (1) :)
Как известно, нельзя удалять exe или dll файлы, которые на данный момент загружены для исполнения какого-либо процесса.
Но, оказывается, их можно переименовать и заменить новыми файлами с такими же именами! Причем можно даже из этого же самого процесса (привет барону Мюнхгаузену).
Вот ведь чудеса логики....
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re: чудеса венды
От: Muxa  
Дата: 10.01.18 00:40
Оценка: +1
А это хорошо, плохо или нормально?
Re[2]: чудеса венды
От: CoderMonkey  
Дата: 10.01.18 00:45
Оценка:
Здравствуйте, Muxa, Вы писали:

M>А это хорошо, плохо или нормально?


Хз, просто странно как-то.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re: чудеса венды
От: turbocode  
Дата: 10.01.18 00:59
Оценка: :)
CM>Как известно, нельзя удалять exe или dll файлы, которые на данный момент загружены для исполнения какого-либо процесса.
CM>Но, оказывается, их можно переименовать и заменить новыми файлами с такими же именами! Причем можно даже из этого же самого процесса (привет барону Мюнхгаузену).
CM>Вот ведь чудеса логики....

Хорошая защита от случайного удаления.
Re[2]: чудеса венды
От: CoderMonkey  
Дата: 10.01.18 01:01
Оценка:
Здравствуйте, turbocode, Вы писали:

T>Хорошая защита от случайного удаления.


Нафига?
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[3]: чудеса венды
От: turbocode  
Дата: 10.01.18 01:04
Оценка: :)
T>>Хорошая защита от случайного удаления.
CM>Нафига?

Допустим ты запустил установщик который сначала удаляет, а потом ставит новую версию. Установщик пытается удалить файл, не вышло — значит программа запущена.
Можно попросить пользователя сначала закрыть программу.
Re[4]: чудеса венды
От: CoderMonkey  
Дата: 10.01.18 01:18
Оценка: +2
Здравствуйте, turbocode, Вы писали:

T>Установщик пытается удалить файл


.. потом пытается удалить другой, третий, удаляет все, что не залочено, а потом кричит "караул, не знаю что делать". Кривые установщики обычно так делают.

T>Можно попросить пользователя сначала закрыть программу.


А использовать мютекс или посмотреть список процессов не судьба?
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[5]: чудеса венды
От: turbocode  
Дата: 10.01.18 01:28
Оценка:
T>>Установщик пытается удалить файл
CM>.. потом пытается удалить другой, третий, удаляет все, что не залочено, а потом кричит "караул, не знаю что делать". Кривые установщики обычно так делают.
Можно начать удаление с главного процесса.

T>>Можно попросить пользователя сначала закрыть программу.

CM>А использовать мютекс или посмотреть список процессов не судьба?
Установщики как правило имеют очень ограниченные возможности.
Re[6]: чудеса венды
От: CoderMonkey  
Дата: 10.01.18 01:40
Оценка:
Здравствуйте, turbocode, Вы писали:

T>Установщики как правило имеют очень ограниченные возможности.


Ну допустим. А зачем тогда разрешать переименовывать и замещать? Если уж блокировать от изменений, так от любых.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[7]: чудеса венды
От: turbocode  
Дата: 10.01.18 01:54
Оценка:
T>>Установщики как правило имеют очень ограниченные возможности.
CM>Ну допустим. А зачем тогда разрешать переименовывать и замещать? Если уж блокировать от изменений, так от любых.

Если ты уверен в том что ты делаешь то есть такая возможность это сделать.
Re[3]: чудеса венды
От: CreatorCray  
Дата: 10.01.18 02:23
Оценка: +3
Здравствуйте, CoderMonkey, Вы писали:

CM>Нафига?

Paging потому что.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[4]: чудеса венды
От: CreatorCray  
Дата: 10.01.18 02:23
Оценка:
Здравствуйте, turbocode, Вы писали:

T>Допустим ты запустил установщик который сначала удаляет, а потом ставит новую версию. Установщик пытается удалить файл, не вышло — значит программа запущена.

T>Можно попросить пользователя сначала закрыть программу.

Нет, это побочный эффект.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[4]: чудеса венды
От: CoderMonkey  
Дата: 10.01.18 02:34
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Paging потому что.


В смысле?
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re: чудеса венды
От: m2l  
Дата: 10.01.18 05:33
Оценка: 1 (1) +5
Здравствуйте, CoderMonkey, Вы писали:

CM>Как известно, нельзя удалять exe или dll файлы, которые на данный момент загружены для исполнения какого-либо процесса.

Они мапятся в память
CM>Но, оказывается, их можно переименовать и заменить новыми файлами с такими же именами! Причем можно даже из этого же самого процесса (привет барону Мюнхгаузену).
Содержимое файла требуется, что бы при нужде подгрузить страницы отсутствующее/вытесненные из памяти. А для этого надо что бы файл на диске лежал, а под каким именем не важно.
CM>Вот ведь чудеса логики....
Система накладывает минимальные ограничения, необходимые для своей работы.
Re: чудеса венды
От: scf  
Дата: 10.01.18 05:42
Оценка: 2 (2) +3
Здравствуйте, CoderMonkey, Вы писали:

CM>Как известно, нельзя удалять exe или dll файлы, которые на данный момент загружены для исполнения какого-либо процесса.

CM>Но, оказывается, их можно переименовать и заменить новыми файлами с такими же именами! Причем можно даже из этого же самого процесса (привет барону Мюнхгаузену).
CM>Вот ведь чудеса логики....

Логика в том, что если есть процесс, который читает из файла, то просто так делать открытый файловый дескриптор недействительным нельзя — большинство приложений эту ситуацию не обрабатывают и могут просто упасть.

В линуксе еще веселее — файл удалить можно, но на диске он останется, пока не закроются все процессы, которым он нужен.
Re[2]: чудеса венды
От: CreatorCray  
Дата: 10.01.18 06:14
Оценка:
Здравствуйте, scf, Вы писали:

scf>В линуксе еще веселее — файл удалить можно, но на диске он останется, пока не закроются все процессы, которым он нужен.

Это потому что там удаление это unlink — inode отцепляется от namespace
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[5]: чудеса венды
От: TK Лес кывт.рф
Дата: 10.01.18 06:17
Оценка:
Здравствуйте, CoderMonkey, Вы писали:

CC>>Paging потому что.

CM>В смысле?

Файл маппится в память.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re: чудеса венды
От: 0x7be СССР  
Дата: 10.01.18 08:07
Оценка: 1 (1) +2
Здравствуйте, CoderMonkey, Вы писали:

CM>Как известно, нельзя удалять exe или dll файлы, которые на данный момент загружены для исполнения какого-либо процесса.

CM>Но, оказывается, их можно переименовать и заменить новыми файлами с такими же именами! Причем можно даже из этого же самого процесса (привет барону Мюнхгаузену).
CM>Вот ведь чудеса логики....
Всё как раз очень логично. "Загруженные" файлы на самом деле не загружены, а отображены в память процесса. И что бы эта система работала дальше — сам файл должен быть.
А как он называется — дело десятое.
Re: чудеса венды
От: itslave СССР  
Дата: 10.01.18 08:36
Оценка: :))
Здравствуйте, CoderMonkey, Вы писали:

CM>Вот ведь чудеса логики....

Как то этот пост совершенно не матчится с понтокиданием в соседней ветке про юнит тестирование, я бы сказал чудеса несоответствия понтов внезапным "чудесным открытиям".
Re[3]: чудеса венды
От: Alexander G Украина  
Дата: 10.01.18 20:06
Оценка:
Здравствуйте, CreatorCray, Вы писали:

scf>>В линуксе еще веселее — файл удалить можно, но на диске он останется, пока не закроются все процессы, которым он нужен.

CC>Это потому что там удаление это unlink — inode отцепляется от namespace

А если выключим питание в этот момент, система добьёт зомби файл на диске при следующем включении?
Русский военный корабль идёт ко дну!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.