как удалить файл, который используется другим процессом

Тема в разделе "WASM.BEGINNERS", создана пользователем debugx, 4 мар 2009.

  1. debugx

    debugx New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2008
    Сообщения:
    13
    Привет всем,
    Нужно удалять файл, который используется другим процессом, т.е. число открытых хендлов на который больше 0.
    DeleteFile() возвращает:
    Подскажите в какую сторону смотреть?
     
  2. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    в сторону поиска по сайту по словам "работа с занятыми файлами"
     
  3. debugx

    debugx New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2008
    Сообщения:
    13
    причем удалять файл нужно из процесса, который это файл залочил. Я в этот процесс делаю иньекцию моей длл, и из длл нужно удалить файл, который был открыт этим процессом. У меня даже хендл файла есть, только вот CloseHandle возвращает:
    Подскажите что делать?
     
  4. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Направление сказали. Наверное надо еще и отнести
    http://www.wasm.ru/article.php?article=lockfileswork
     
  5. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    xor ecx,ecx
    loop post_2

    а можно еще и CloseHandle сделать, если процесс один и тот же
     
  6. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    а почему он тогда возвращает ERROR_ACCESS_DENIED если процесс то онин и тот же, или как?

    к стате как UnLocker работает, у него вроде дров или нет?
     
  7. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    А почему никто не упоминает, что если даже и удастся удалить занятый файл, то приложение его открывшее, с вероятностью почти 100% с треском рухнет. Не проще ли сразу убить приложение и спокойно удалить нужный (или ненужный файл) ?
     
  8. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    Это значит, что тот, кто писал приложение, не сделал обработки ошибок. Обычно никто не падает, когда UnLocker ом что либо закрываешь.
     
  9. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    asd
    Упадет не сразу, попозже.
     
  10. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Partner не упадёт, например если удаляешь фильм который сейчас проигрывает проигрыватель то воспроизведение просто остановится, и т д и т п.
     
  11. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Partner
    Та не... зависит от приложения. Подозреваю от того, на сколько интенсивно оно юзает память. Была уже тема такая жж. Калькулятор в пример приводили. Чё ему падать то...
     
  12. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    2FEDAspire

    Согласен, насчет 100% погорячился.
    Встречаются приложения, с грамотной обработкой ошибок. Но их не так уж много.
     
  13. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Partner
    Прав. приложений с качественной обработкой исключений одно из сотен.
     
  14. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Нужно отличать удаление запущеного екзешника и удаление файла, открытого приложением.
    В первом случее рано или поздно часть памяти процесса окажется в свопе.
    При попытке подгрузиться с удаленного файла рухнет не только приложение, но и вся система.
    Во втором случае проблема будет при записи в удаленный файл и, возможно, при CloseHandle.
     
  15. gribodemon

    gribodemon New Member

    Публикаций:
    0
    Регистрация:
    17 июн 2009
    Сообщения:
    138