Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Удаление dll


Автор: Гость_misha 5.4.2005, 11:47
Вопрос нужно удалить DLL-ку, но пишет что используеться
Как это сделать средствами дельфи и вообще такое возможно?

Автор: Girder 5.4.2005, 11:57
Ты с диска хочеш её удалить... или?

Если с диска: Выгружаеш енту DLL из всех процессов... где она используется... и после ентого удаляеш.


Автор: Poseidon 9.4.2005, 01:47
Цитата(Girder @ 5.4.2005, 11:57)
Если с диска: Выгружаеш енту DLL из всех процессов... где она используется... и после ентого удаляеш.
Только так! Windows не позволяет удалять файлы, каторые используются другими программами или самим этим файлом (отсюда и "маленькие" проблемы с удалением самого себя)! Ток что только освобождать эту dll (хотя это относится не только к dll) и удалять обычным способом.

Автор: Snowy 11.4.2005, 08:33
В WinXP появилась новая возможность.
Удалить запущенную программу нельзя, как и прежде.
Однако! Можно переместить файл во время его работы.
Таким образом, вместо удаления dll мы можем переместить ее в корзину на этом же диске.
В данном случае нам даже не нужно никого прибивать.
Все, кто использует данную dll сами про нее забудут, когда завершатся.
Таким образом, например мы хотим заменить dll во время ее работы.
1. Перемещаем ее в корзину на том же диске.
2. Кладем новую версию dll на это место.
Все программы, которые сейчас юзают dll, будут юзать старую версию.
Программы запущенные после этого - юзают уже новую версию.
Но warning! Это не работает в Win9x! Только в NT!

Автор: Poseidon 12.4.2005, 01:03
Цитата(Snowy @ 11.4.2005, 08:33)
Таким образом, вместо удаления dll мы можем переместить ее в корзину на этом же диске.
Вот интересно, а как это делается? Простое перемещение с папки в RECYCLED не срабатывает! Карзина по прежнему пуста.

Автор: Snowy 12.4.2005, 06:44
RECYCLED я привел, как пример, чтобы не заботиться об удалении.
Переместить можно в любую папку, главное, чтобы она находилась на том же диске.
А "корзина пуста"... А папка на том же диске? А ты смотрел в корзине или в папке RECYCLER?
Причем, под "переместить в корзину", я имел ввиду просто перемещение из папки в папку, а не функцию удаления в корзину.

Автор: Poseidon 13.4.2005, 03:08
Цитата(Snowy @ 12.4.2005, 06:44)
Переместить можно в любую папку, главное, чтобы она находилась на том же диске.
Но ведь тогда это совсем не удаление получится!
Цитата
Вопрос нужно удалить DLL-ку


Цитата(Snowy @ 12.4.2005, 06:44)
А ты смотрел в корзине или в папке RECYCLER?
Я смотрел и там и там. Корзина пуста, а в папке RECYCLED файл есть. Но кто лазит в папку RECYCLED что бы посмотреть, что у него в карзине? НИКТО! Поэтому то, что файл есть в RECYCLED не о чем не говорит. Он все равно не удален и не удалится даже после чистки корзины!

Хотя
Цитата(Snowy @ 11.4.2005, 08:33)
В WinXP появилась новая возможность.
Удалить запущенную программу нельзя, как и прежде.
Однако! Можно переместить файл во время его работы.
действительно для меня новость. Не знал, не знал... Спасибо! Может где еще пригодится.

Автор: Snowy 13.4.2005, 06:55
Как вариант - прописать файл на удаление при следующем запуске виндов или следующем запуске программы.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)