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

Запрет на изменение папки - Delphi WinAPI

Восстановить пароль Регистрация
 
 
demon31
0 / 0 / 0
Регистрация: 01.10.2013
Сообщений: 332
03.12.2016, 17:37     Запрет на изменение папки #1
Подскажите, каким образом можно реализовать запрет доступа на любое изменение, открытие, чтение какой-либо папки и всех файлов внутри её посредством winapi в delphi 7, OC Windows.
Требуется так, чтоб я открыл программу и нажал кнопку, и после этого пока программа работает будет запрет на доступ к папке.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
qwertehok
1223 / 1242 / 262
Регистрация: 29.08.2013
Сообщений: 8,046
03.12.2016, 20:31     Запрет на изменение папки #2
как вы себе это представляете?
можно создать пользователя и дать ему права на папку, а остальных убрать
но администратор сможет все равно стать владельцем и назначить себе права

можно конечно постоянно мониторить изменение прав на папку, но ИМХО это как-то не красиво

ЗЫ может вы опишите исходную задачу?
demon31
0 / 0 / 0
Регистрация: 01.10.2013
Сообщений: 332
03.12.2016, 21:03  [ТС]     Запрет на изменение папки #3
Суть такая примерно: есть компьютер, скажем, что он как сервер. На нём данные. Если к серверу через локалку кто-то подключится, то мне нужно сделать программно так, чтобы у него не было доступа к этим данным, он не мог ни скопировать, ни прочитать, ни удалить их.
Убежденный
Системный программист
 Аватар для Убежденный
14435 / 6419 / 1015
Регистрация: 02.05.2013
Сообщений: 10,662
Завершенные тесты: 1
03.12.2016, 21:36     Запрет на изменение папки #4
Чем не устраивает вариант поставить запрет на доступ пользователям,
выполнившим вход в систему по сети? Группа называется S-1-5-2,
если не ошибаюсь. В помощь функции SetSecurityInfo, SetNamedSecurityInfo.
qwertehok
1223 / 1242 / 262
Регистрация: 29.08.2013
Сообщений: 8,046
03.12.2016, 23:20     Запрет на изменение папки #5
Цитата Сообщение от demon31 Посмотреть сообщение
Если к серверу через локалку кто-то подключится
что значит кто-то?
если кто-то значит у него есть имя и пароль
если есть имя запретите этому подключаться к ненужным ему папкам

домен то поднят?
demon31
0 / 0 / 0
Регистрация: 01.10.2013
Сообщений: 332
04.12.2016, 12:33  [ТС]     Запрет на изменение папки #6
Подразумевается несанкционированный доступ.
Сам по себе сервер доступен для пользователей, но именно эта папка с файлами, должна быть недоступна.
И недоступна именно программно, а не просто выставлены права.
Убежденный
Системный программист
 Аватар для Убежденный
14435 / 6419 / 1015
Регистрация: 02.05.2013
Сообщений: 10,662
Завершенные тесты: 1
04.12.2016, 12:51     Запрет на изменение папки #7
Цитата Сообщение от demon31 Посмотреть сообщение
И недоступна именно программно, а не просто выставлены права.
Если бы запрет доступа можно было обойти программно, в такой "защите"
не было бы никакого смысла.
demon31
0 / 0 / 0
Регистрация: 01.10.2013
Сообщений: 332
04.12.2016, 13:11  [ТС]     Запрет на изменение папки #8
А если перефразировать задачу: можно ли сделать так, чтобы пока выполняется моя программа, т.е. пока она включена, нельзя было ничего сделать с папкой и файлами в ней, ни читать, ни скопировать, ни удалить?
Убежденный
Системный программист
 Аватар для Убежденный
14435 / 6419 / 1015
Регистрация: 02.05.2013
Сообщений: 10,662
Завершенные тесты: 1
04.12.2016, 13:26     Запрет на изменение папки #9
Можно, например, ставить права на папку при запуске программы и
снимать их при завершении.

А еще можно фильтрующий драйвер файловой системы написать,
но это будет на несколько порядков сложнее...
demon31
0 / 0 / 0
Регистрация: 01.10.2013
Сообщений: 332
04.12.2016, 13:28  [ТС]     Запрет на изменение папки #10
А как реализовать первый способ?
qwertehok
1223 / 1242 / 262
Регистрация: 29.08.2013
Сообщений: 8,046
04.12.2016, 15:53     Запрет на изменение папки #11
а смысл тогда в программе?
батником можно права менять
demon31
0 / 0 / 0
Регистрация: 01.10.2013
Сообщений: 332
04.12.2016, 16:15  [ТС]     Запрет на изменение папки #12
Смысл в том, что мне нужно запретить доступ ...
Убежденный
Системный программист
 Аватар для Убежденный
14435 / 6419 / 1015
Регистрация: 02.05.2013
Сообщений: 10,662
Завершенные тесты: 1
04.12.2016, 16:23     Запрет на изменение папки #13
Написал же выше - SetSecurityInfo, SetNamedSecurityInfo.
Можно, например, сгенерировать дескриптор безопасности и вытащить
из него список контроля доступа (DACL), после чего навесить на нужную папку.
Т.е. при запуске программы делаем SetSecurityInfo с DACL, где разрешен
доступ всем, кроме залогинившихся по сети, а при завершении программы
снимаем его, заменяя обычным, где доступ разрешен всем.
См. функции ConvertStringSecurityDescriptorToSecurityDescriptor и GetSecurityDescriptorDacl.
demon31
0 / 0 / 0
Регистрация: 01.10.2013
Сообщений: 332
04.12.2016, 16:48  [ТС]     Запрет на изменение папки #14
Ох, сложно .-.
Я копался с SetSecurityInfo, SetNamedSecurityInfo и даже близко не понял как они устроены.
AVolkof
2 / 2 / 0
Регистрация: 02.01.2016
Сообщений: 44
Записей в блоге: 2
04.12.2016, 17:37     Запрет на изменение папки #15
А "открыть" все фалы в папке не вариант?
Как тут: Блокировка файла
demon31
0 / 0 / 0
Регистрация: 01.10.2013
Сообщений: 332
04.12.2016, 18:21  [ТС]     Запрет на изменение папки #16
Любой вариант приемлем, сейчас попробую как там

Добавлено через 14 минут
Pascal
1
2
3
4
5
procedure TForm1.Button1Click(Sender: TObject);
var FS: TFileStream;
begin
  FS:=TFileStream.Create('Путь к файлу', fmShareExclusive);
end;
Отличный вариант, но мне нужно бы работа с WinApi, тут есть пример

Pascal
1
2
3
4
5
6
7
8
h := CreateFile('C:\test.txt',
             GENERIC_READ or GENERIC_WRITE,
             FILE_SHARE_READ or     // разрешить чтение
             FILE_SHARE_WRITE,      // разрешить запись
             nil,                   // pointer to security attributes
             OPEN_EXISTING,
             FILE_ATTRIBUTE_NORMAL,
             0);
Только как сделать, что бы отключить чтение или доступ, как с первым случаем?
AVolkof
2 / 2 / 0
Регистрация: 02.01.2016
Сообщений: 44
Записей в блоге: 2
04.12.2016, 18:27     Запрет на изменение папки #17
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

Вроде бы третий параметр надо "ноль".
demon31
0 / 0 / 0
Регистрация: 01.10.2013
Сообщений: 332
04.12.2016, 18:33  [ТС]     Запрет на изменение папки #18
Да я что-то уже все обнулил и всё равно открывает нормально .-.
И всё равно есть проблема, это работает для файла, папку в которой файлы как минимум скопировать можно, хоть и без файлов, не знаю, будет ли это уместно.
AVolkof
2 / 2 / 0
Регистрация: 02.01.2016
Сообщений: 44
Записей в блоге: 2
04.12.2016, 19:19     Запрет на изменение папки #19
Да, с флагами какая-то ерунда.
В порядке бреда: зашифровать, или загнать в архив с паролем.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2016, 19:23     Запрет на изменение папки
Еще ссылки по теме:

Делфи копирование папки Delphi WinAPI
Перехват API для скрытия папки Delphi WinAPI
Полный запрет на сворачивания формы Delphi WinAPI
Delphi WinAPI Изменение размеров окна при перетаскивании
Запуск приложения из сетевой папки Delphi WinAPI

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

Или воспользуйтесь поиском по форуму:
demon31
0 / 0 / 0
Регистрация: 01.10.2013
Сообщений: 332
04.12.2016, 19:23  [ТС]     Запрет на изменение папки #20
Шифроваться они и так будут, а архив не катит, т.к. мне с ними еще работать прямо в программе.
Yandex
Объявления
04.12.2016, 19:23     Запрет на изменение папки
Ответ Создать тему
Опции темы

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