Форум программистов, компьютерный форум CyberForum.ru

У меня одного без труда удаляются открытые файлы? - C++

Восстановить пароль Регистрация
 
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
25.11.2012, 20:34     У меня одного без труда удаляются открытые файлы? #1
Иной хакер ради изучения много бы дал за такое поведение своей системы. Ну то есть открываешь файл в текстовом редакторе и тут же без проблем его вручную удаляешь, и никакого предупреждения, только подтверждение для удаления и всё.
И вот для чистоты эксперимента создаю файл, не закрываю его и он тоже удаляется...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <windows.h>
#include <stdio.h>
 
int main ( ) { 
 SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
 char falis_name []= "main.txt";
 
 
 
 HANDLE hFile = CreateFile(falis_name,
                       0,
                     FILE_SHARE_READ, 
                     NULL,
                     CREATE_NEW, 
                     FILE_ATTRIBUTE_NORMAL, 
                     NULL);
 
 
 
 if (hFile!=INVALID_HANDLE_VALUE)
  printf ("А щас вручную удаляй файл main.txt!\n");
 getchar ();
 return 0;
}
Чё у меня случилось, знает кто-нибудь? Или у всех такое поведение?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2012, 20:34     У меня одного без труда удаляются открытые файлы?
Посмотрите здесь:

пример на файлы. у меня в коде есть ошибки, но я не знаю, как их исправить C++
C++ Найти сумму элементов первого столбца без одного последнего элемента, сумму элементов второго столбца без двух последних...
C++ [C++] Решите за меня задачи на файлы
Как удалить все файлы в папке без WinAPI ? C++
C++ Ребятушки программисты надо лабораторную по циклам в с++ сдать,не одна без ошибок не получается у меня (
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
25.11.2012, 20:54     У меня одного без труда удаляются открытые файлы? #2
Цитата Сообщение от kravam Посмотреть сообщение
CREATE_NEW,
вот что случилось
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.11.2012, 20:59     У меня одного без труда удаляются открытые файлы? #3
Цитата Сообщение от kravam Посмотреть сообщение
Или у всех такое поведение?
У меня такое.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
25.11.2012, 21:07     У меня одного без труда удаляются открытые файлы? #4
тема закрыта, вопрос решён?
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
25.11.2012, 21:11  [ТС]     У меня одного без труда удаляются открытые файлы? #5
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
вот что случилось
это ни при чём, просто создал новый файл и на момент удаления вручную этот файл ОТКРЫТ (задействован, занят, не знаю как ещё сказать). Откройте существующий файл с флагом OPEN_EXISTING- эффект тот же самый. Я потому так не сделал, что движений больше: это надо было бы заранее создать файл-мишень и исходник, всё это в папку упаковать, папку сархивировать и отправить на форум.
Мы уж лучше так.

Добавлено через 1 минуту
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
тема закрыта, вопрос решён?
а чё решён-то один alsav22, отписался, это ещё не решён.
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
25.11.2012, 21:13     У меня одного без труда удаляются открытые файлы? #6
У меня тож, даже разрешения на удаление не спрашивает) OC win8.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
25.11.2012, 23:01  [ТС]     У меня одного без труда удаляются открытые файлы? #7
NTFiles.exe даёт Delete Acces NOT allowed. если вы про это. Тем не менее файл благополучно удаляется, вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <windows.h>
#include <stdio.h>
 
int main ( ) { 
 SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
 char falis_name []= "main.txt";
 
 
 
 HANDLE hFile = CreateFile(falis_name,
                       0,
                     0, 
                     NULL,
                     CREATE_NEW, 
                     FILE_ATTRIBUTE_READONLY, 
                     NULL);
 
 
 
 if (hFile!=INVALID_HANDLE_VALUE)
  printf ("А щас вручную удаляй файл main.txt!\n");
 getchar ();
 return 0;
}
Я добавил FILE_ATTRIBUTE_READONLY, как видите
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
25.11.2012, 23:56     У меня одного без труда удаляются открытые файлы? #8
Цитата Сообщение от kravam Посмотреть сообщение
Иной хакер ради изучения много бы дал за такое поведение своей системы.
Что полезного в этом для хакера?

Цитата Сообщение от kravam Посмотреть сообщение
Тем не менее файл благополучно удаляется
Это вряд ли. Файл может быть либо перемещён в корзину, либо поставлен в очередь для удаления, но при этом реальное удаление будет произведено только после закрытия файла. Правда проводник при удалении с помощью Shift+Del (т. е. не в корзину) файл из списка убирает. Но стоит нажать F5 для обновления, как файл появляется снова. Это в XP. После закрытия файл удалится.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
26.11.2012, 00:15  [ТС]     У меня одного без труда удаляются открытые файлы? #9
Смотрите, я жму я запускаю main.exe, потом мышкой удаляю файл, ну как мышкой- курсор на файл, правая кнопка, удалить, "ДА". Всё, файла нет. И F5 не помогает. Ладно он в корзине, а если я выставлю галку чтобы мимо корзины удалялся? Всё, я без файла. Я знаю, можно сказать чтобы я такую галку не ставил, но не об этом же речь.

Речь о том, что он не должен удаляться ни в корзину никуда, иначе грош цена всем этим флагам FILE_ATTRIBUTE_READONLY; написано же- только для чтения!

Да и после закрытия он не должен удаляться. Только для чтения значит только для чтения. Но похоже всем всем равно.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
26.11.2012, 00:24     У меня одного без труда удаляются открытые файлы? #10
Добавьте после CreateFile
C++
1
2
 OFSTRUCT fs;
 HFILE hF = OpenFile(falis_name,&fs,0);
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
26.11.2012, 00:31     У меня одного без труда удаляются открытые файлы? #11
OpenFile можно не добавлять. Достаточно в CreateFile вторым параметром указать либо GENRIC_READ, либо GENERIC_WRITE. Ну, или оба сразу.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
26.11.2012, 00:41     У меня одного без труда удаляются открытые файлы? #12
kravam, у меня на Win7 точно такое же поведение, как у grizlik78. У меня по умолчанию файлы удаляются, не перемещаясь в корзину. И точно так же, после обновления каталога, файл появляется снова. В смысле файл удаляется из списка, но после обновления, он появляется снова.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
26.11.2012, 00:59     У меня одного без труда удаляются открытые файлы? #13
Да нормальное это поведение.
Может это поможет, хотя не знаю, описано там это или нет:
CreateFile
activnaya
 Аватар для activnaya
255 / 45 / 2
Регистрация: 24.11.2012
Сообщений: 466
26.11.2012, 01:01     У меня одного без труда удаляются открытые файлы? #14
kravam, а почему он НЕ должен удаляться с твердого накопителя, когда он загружен в оперативную память?
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
26.11.2012, 01:27  [ТС]     У меня одного без труда удаляются открытые файлы? #15
Если третий параметр 0, удаляться не должен. Всё! Читаем здесь (MSDN):

0 Prevents other processes from opening a file or device if they request delete, read, or write access.

В посту N 7 как раз я установил третий параметр в 0. Но он всё равно удаляется, (в корзину или мимо корзины, это неважно щас, галку соответствующую каждый может поставит как захочет) и это вводит в уныние, раз уж MSDN врёт, тогда я не знаю, что и делать.
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
26.11.2012, 02:02     У меня одного без труда удаляются открытые файлы? #16
Все врут. Укажи вторым параметром GENRIC_READ хотя бы.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2012, 02:14     У меня одного без труда удаляются открытые файлы?
Еще ссылки по теме:

C++ Нужно написать код программы, а у меня не очень получается . это все что у меня получилось
C++ Ошибка при открытые файла
Вставка одного вектора в другой через один без циклов C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
26.11.2012, 02:14     У меня одного без труда удаляются открытые файлы? #17
C++
1
2
3
4
5
6
7
 HANDLE hFile = CreateFile(falis_name,
                       GENERIC_WRITE,
                     0,
                     NULL,
                     CREATE_NEW, 
                     FILE_ATTRIBUTE_NORMAL, 
                     NULL);
C++
1
2
3
4
5
6
7
 HANDLE hFile = CreateFile(falis_name,
                       GENERIC_WRITE,
                     FILE_SHARE_DELETE,
                     NULL,
                     CREATE_NEW, 
                     FILE_ATTRIBUTE_NORMAL, 
                     NULL);
Первый случай - нельзя удалить, второй - удаляйте сколько влезет.
Yandex
Объявления
26.11.2012, 02:14     У меня одного без труда удаляются открытые файлы?
Ответ Создать тему
Опции темы

Текущее время: 06:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru