Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 04.10.2019, 23:21   #1
Рурик
Пользователь
 
Регистрация: 05.09.2019
Сообщений: 25
По умолчанию Как заблокировать папку на время пока с ней работает программа?

Добрый вечер!
Как с помощью Win32 API-функций заблокировать папку на время, пока с ней работает программа?
Например, программа просматривает файлы в папке. Или программа удаляет папку.
Как сделать, чтобы в это время другие пользователи не могли в этой папке:
* создавать, удалять папки, файлы
* открывать файлы в режиме "ReadWrite"?
При этом моя программа могла делать действия в режиме "ReadWrite".
Рурик вне форума Ответить с цитированием
Старый 04.10.2019, 23:38   #2
Alex11223
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,488
По умолчанию

Зачем?

Вполне возможно, что никак (ну кроме может быть каких-то сложных полумер типа смены владельца и т.д.).
Alex11223 вне форума Ответить с цитированием
Старый 04.10.2019, 23:42   #3
Рурик
Пользователь
 
Регистрация: 05.09.2019
Сообщений: 25
По умолчанию

Например, нужно извлечь данные из файлов. Во время работы программы другой юзер удалит файл. Программа не извлечёт данные из файла.
На первый взгляд логичное действие: закрыть доступ к папке, пока с ней работаешь. Как и в жизни, иногда нужно что-то закрыть, чтобы что-то сделать.
Рурик вне форума Ответить с цитированием
Старый 04.10.2019, 23:52   #4
Alex11223
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,488
По умолчанию

Скорее всего вы всё усложняете и нет смысла о таком париться, так можно дойти и до диагностики состояния дисков и прочего железа.

Гугл говорит, что подобное только как-нибудь с помощью юзерских прав возможно.
Alex11223 вне форума Ответить с цитированием
Старый 05.10.2019, 00:02   #5
Рурик
Пользователь
 
Регистрация: 05.09.2019
Сообщений: 25
По умолчанию

Вообще, по логике, у майкрософта должна быть техподдержка.
Я по идее должен им задать этот вопрос, а они должны ответить.
Но почему-то у них такой системы нет. Ерунда какая-то.
Как я могу узнать, как решить эту задачу? Изучить все существующие api-функции, относящиеся к работе с файловой системой?
Рурик вне форума Ответить с цитированием
Старый 05.10.2019, 00:14   #6
Alex11223
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,488
По умолчанию

Цитата:
Сообщение от Рурик Посмотреть сообщение
Как я могу узнать, как решить эту задачу? Изучить все существующие api-функции, относящиеся к работе с файловой системой?
Ну еще говорят существует гуглбинг и эксперты по разным темам...
Есть мсдн форум.

А так да, + всякие другие спеки, мануалы по протоколам и т.д.
Alex11223 вне форума Ответить с цитированием
Старый 05.10.2019, 00:57   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,095
По умолчанию

Цитата:
Сообщение от Рурик Посмотреть сообщение
На первый взгляд логичное действие: закрыть доступ к папке, пока с ней работаешь.
Нет. Логичное действие открывать файл и обрабатывать, потом следущий. Если что-то не удалось - в лог или сообщать.
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума Ответить с цитированием
Старый 05.10.2019, 10:03   #8
Рурик
Пользователь
 
Регистрация: 05.09.2019
Сообщений: 25
По умолчанию

У меня конкретно задачи нет, что нужно делать с папкой: могут быть разные задачи.
Например, надо удалить папку. Программа удаляет все файлы из папки. Когда папка стала пустой, программа удаляет папку. Но если юзер создаст в папке файл во время работы программы, то папка не будет удалена.
Если бы была возможность заблокировать папку, то такого не произошло бы.

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Есть мсдн форум
Там сидят люди, не работающие в майкрософте, и мсдн ничем не отличается от этого форума.

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Ну еще говорят существует гуглбинг
В гугле я не нашёл. Прежде чем создать тему на форуме, я искал в гугле.

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
и эксперты по разным темам
На форумах есть раздел "фриланс", я об этом знаю. Но фриланс в основном сделан для написания программ, а не для ответов на небольшие вопросы. Для небольших вопросов как раз форум и сделан.

Последний раз редактировалось Рурик; 05.10.2019 в 10:07.
Рурик вне форума Ответить с цитированием
Старый 05.10.2019, 12:28   #9
Alex11223
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,488
По умолчанию

Цитата:
Сообщение от Рурик Посмотреть сообщение
Там сидят люди, не работающие в майкрософте
некоторые работают/работали.
Цитата:
Сообщение от Рурик Посмотреть сообщение
мсдн ничем не отличается от этого форума
там больше людей занимающихся винапи и т.д. (как минимум потому что там больше людей).
Цитата:
Сообщение от Рурик Посмотреть сообщение
На форумах есть раздел "фриланс", я об этом знаю. Но фриланс в основном сделан для написания программ, а не для ответов на небольшие вопросы. Для небольших вопросов как раз форум и сделан.
я не говорил ничего про фриланс, это уж вы сами выбирайте как вам искать экспертов по нужным вам вопросам. На многие вопросы вполне могут и бесплатно что-то ответить на каком-то форуме и т.д.
И раз уж речь о фрилансе, то кроме форумов есть и другие сервисы типа фриланс-бирж, codementor, ...
Alex11223 вне форума Ответить с цитированием
Старый 05.10.2019, 12:45   #10
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,006
По умолчанию

Цитата:
Сообщение от Рурик Посмотреть сообщение
На первый взгляд логичное действие: закрыть доступ к папке, пока с ней работаешь. Как и в жизни, иногда нужно что-то закрыть, чтобы что-то сделать.
В виндоусе если открыть файл на запись то он будет заблокирован.

Исходники блокирование и разблокирования
https://github.com/RSATom/Qt/blob/ma...ckfile_win.cpp

Цитата:
Сообщение от Рурик Посмотреть сообщение
Как с помощью Win32 API-функций заблокировать папку на время, пока с ней работает программа?
Например, программа просматривает файлы в папке. Или программа удаляет папку.
Как сделать, чтобы в это время другие пользователи не могли в этой папке:
* создавать, удалять папки, файлы
* открывать файлы в режиме "ReadWrite"?
Это другой вопрос. Во-первых так делать не надо.

Цитата:
Сообщение от Рурик Посмотреть сообщение
Например, нужно извлечь данные из файлов. Во время работы программы другой юзер удалит файл. Программа не извлечёт данные из файла.
На первый взгляд логичное действие: закрыть доступ к папке, пока с ней работаешь. Как и в жизни, иногда нужно что-то закрыть, чтобы что-то сделать.
А если другие захотят писать пока вы там читаете? Не нужно себя загонять в угол. Делайте обработку исключений. try except
Если вам надо отслеживать появления файлов, то делаете мониторинг изменений.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .

Последний раз редактировалось Alex11223; 05.10.2019 в 12:53.
Pavia вне форума Ответить с цитированием
Ответ
Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как прочитать из таблицы данные и добавить к ним новые, при этом заблокировать таблицу на время этих действий Illusiony SQL, базы данных 3 13.09.2016 19:39
Заблокировать exe-шник через заданное время nvrrus Общие вопросы C/C++ 16 25.02.2011 21:28
TThread выполняет что-либо пока работает запущенная им программа Человек_Борща Общие вопросы Delphi 7 25.11.2010 14:23
Как заблокировать папку? Virus25 Общие вопросы Delphi 5 15.08.2010 14:08