|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
07.08.2018, 07:25 | #1 |
Пользователь
Регистрация: 12.12.2017
Сообщений: 11
|
Почему так происходит? Какая-то мистика
Всем доброго времени суток.
У меня написана программа, что-то типа безопасного удалителя файлов. Это происходит за 2 шага: перезапись содержимого файла случайной гаммой, а затем удаление. Алгоритм реализован на c#. Проблема в том, что когда программа выполняется по шагам в режиме отладки - все корректно работает: файл перезаписывается гаммой, а затем удаляется, при восстановлении удаленного файла например программой Recuva, восстановленный файл будет набит этой случайной гаммой, что есть гуд. А точнее - если после перезаписи гаммой сделать точку остановки в отладке, и затем выполнить команду удаления - то так же все будет хорошо. НО. Как только программа отработала самостоятельно, вне отладки, то при восстановлении удаленного файла - случайной гаммы в нем НЕТ, он заполнен исходными данными. Объясните пожалуйста, в чем проблема и почему так происходит |
07.08.2018, 07:45 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Код надо смотреть. Дебаг и релиз версии различаются.
|
07.08.2018, 08:59 | #3 |
Пользователь
Регистрация: 12.12.2017
Сообщений: 11
|
|
07.08.2018, 09:05 | #4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Ну значит гадаем дальше на кофейной гуще - права на файл. Например, студия от админа запущена. Или вы используете какую либо функцию, которая требует повышения прав.
|
07.08.2018, 10:15 | #5 |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
Вы закрываете файл после записи?
|
08.08.2018, 07:49 | #6 |
Пользователь
Регистрация: 12.12.2017
Сообщений: 11
|
Да, конечно. (еслиб не закрывал, то и при отладке файл бы не перезаписывался)
Выяснились ОЧЕНЬ интересные подробности: если поставить программу на паузу перед удалением (System.Threading.Thread.Sleep(5000 ), то все работает отлично. Видимо и при отладке все хорошо, потому что программа тоже ставится на паузу как бы. Сам код: Код:
Последний раз редактировалось Kuzma's_Mother; 08.08.2018 в 07:52. |
08.08.2018, 07:53 | #7 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Надо полагать в буфере обновилось, файл удалился, а буфер не успевает записать. По идее так не должно быть
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
08.08.2018, 07:58 | #8 |
Пользователь
Регистрация: 12.12.2017
Сообщений: 11
|
|
08.08.2018, 08:06 | #9 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
FlushFileBuffers ?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
08.08.2018, 09:26 | #10 |
Пользователь
Регистрация: 12.12.2017
Сообщений: 11
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Кто разъяснит почему так происходит с функцией JS | DimaDR | JavaScript, Ajax | 4 | 15.11.2017 18:17 |
Мистика какая то, срочно прошу помощи знающих | websaco | Visual C++ | 0 | 28.04.2014 16:44 |
Цикл Cardinal - почему так происходит? | Nester | Общие вопросы Delphi | 2 | 28.07.2010 15:04 |
Form Region-почему так происходит | Nester | Общие вопросы Delphi | 3 | 14.09.2009 21:16 |
Почему так происходит? | Zeraim | Общие вопросы Delphi | 1 | 05.05.2008 14:10 |