Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
1

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

25.11.2012, 20:34. Показов 1169. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Иной хакер ради изучения много бы дал за такое поведение своей системы. Ну то есть открываешь файл в текстовом редакторе и тут же без проблем его вручную удаляешь, и никакого предупреждения, только подтверждение для удаления и всё.
И вот для чистоты эксперимента создаю файл, не закрываю его и он тоже удаляется...

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;
}
Чё у меня случилось, знает кто-нибудь? Или у всех такое поведение?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2012, 20:34
Ответы с готовыми решениями:

Удаляются файлы без занесения в корзину
В Finder файлы удаляются без занесения в корзину, с внешних устройств все нормально сначала...

файлы открытые пользователем
Как проследить какие файлы открывает пользователь (музыка, фильмы, exe) ? И можно ли запретить...

Последние открытые файлы
Добрый день. Пишу редактор, при нажатии на кнопку &quot;Последние файлы&quot; появляется панель с ListBox, в...

Winamp не запоминает все открытые файлы
Winamp не хочет запоминать все файлы из открытой папки, приведу пример: У меня почти 3 тысячи...

16
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,493
Записей в блоге: 1
25.11.2012, 20:54 2
Цитата Сообщение от kravam Посмотреть сообщение
CREATE_NEW,
вот что случилось
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
25.11.2012, 20:59 3
Цитата Сообщение от kravam Посмотреть сообщение
Или у всех такое поведение?
У меня такое.
1
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,493
Записей в блоге: 1
25.11.2012, 21:07 4
тема закрыта, вопрос решён?
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
25.11.2012, 21:11  [ТС] 5
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
вот что случилось
это ни при чём, просто создал новый файл и на момент удаления вручную этот файл ОТКРЫТ (задействован, занят, не знаю как ещё сказать). Откройте существующий файл с флагом OPEN_EXISTING- эффект тот же самый. Я потому так не сделал, что движений больше: это надо было бы заранее создать файл-мишень и исходник, всё это в папку упаковать, папку сархивировать и отправить на форум.
Мы уж лучше так.

Добавлено через 1 минуту
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
тема закрыта, вопрос решён?
а чё решён-то один alsav22, отписался, это ещё не решён.
0
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
25.11.2012, 21:13 6
У меня тож, даже разрешения на удаление не спрашивает) OC win8.
1
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
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, как видите
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
25.11.2012, 23:56 8
Цитата Сообщение от kravam Посмотреть сообщение
Иной хакер ради изучения много бы дал за такое поведение своей системы.
Что полезного в этом для хакера?

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

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

Да и после закрытия он не должен удаляться. Только для чтения значит только для чтения. Но похоже всем всем равно.
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
26.11.2012, 00:24 10
Добавьте после CreateFile
C++
1
2
 OFSTRUCT fs;
 HFILE hF = OpenFile(falis_name,&fs,0);
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
26.11.2012, 00:31 11
OpenFile можно не добавлять. Достаточно в CreateFile вторым параметром указать либо GENRIC_READ, либо GENERIC_WRITE. Ну, или оба сразу.
0
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
26.11.2012, 00:41 12
kravam, у меня на Win7 точно такое же поведение, как у grizlik78. У меня по умолчанию файлы удаляются, не перемещаясь в корзину. И точно так же, после обновления каталога, файл появляется снова. В смысле файл удаляется из списка, но после обновления, он появляется снова.
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
26.11.2012, 00:59 13
Да нормальное это поведение.
Может это поможет, хотя не знаю, описано там это или нет:
CreateFile
0
256 / 46 / 4
Регистрация: 24.11.2012
Сообщений: 466
26.11.2012, 01:01 14
kravam, а почему он НЕ должен удаляться с твердого накопителя, когда он загружен в оперативную память?
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
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 врёт, тогда я не знаю, что и делать.
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
26.11.2012, 02:02 16
Все врут. Укажи вторым параметром GENRIC_READ хотя бы.
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 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);
Первый случай - нельзя удалить, второй - удаляйте сколько влезет.
0
26.11.2012, 02:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.11.2012, 02:14
Помогаю со студенческими работами здесь

Винда скрывает все открытые окна при перетаскивании одного
привет открыто окон 20 различных программ беру одно и начинаю перетаскивать его за шапку если...

Как распечатать все открытые файлы Excel?
Что-то типа этого, но не то :) Application.Worksheets.PrintOut Как правильно? Спасибо!

Закрыть не все Excel файлы открытые через Ole
Здравствуйте. С помощью Ole технологии я открываю несколько фалов Excel процедурой open...

Win 2012 (vmvare) шары. открытые файлы экстрим
доброго дня коллеги, проблема win 2012(вируалка) shared folders количество открытых пользователем...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru