![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Старожил
Регистрация: 05.06.2008
Сообщений: 4,194
|
![]()
Добрый вечер! Мне нужно программно предоставить доступ к определенной папке конкретному пользователю. Чтобы только пользователь с определенной учеткой мог иметь доступ к этой папке. Чтобы я мог указать для папки "Чтение" или "Чтение и запись". Моя программа работает от имени администратора, который может делать все что угодно разумеется. Вообщем, мне надо реализовать что-то подобное (как во вложении):
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
|
![]() |
![]() |
![]() |
#2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,792
|
![]() Цитата:
Не я не против твоей затеи, но это скажем так дырка в безопасности - что будет если твоя прога окажется зараженной? Впрочем... Могу сказать следующее: Нужно изучать ACL (модули aclapi, accctrl) Так же не поленись почитать о GetAclInformation, GetAce, LookupAccountSid (тоже пригодится) Пожалуй это все, что я когда-то пытался изучить. Получать список прав получалось. Давать... не очень ![]() P.S. Фленов пытался в своей книге писать о правах... Однако мне его книга никак не помогла.
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 05.06.2008
Сообщений: 4,194
|
![]()
Не, оно я понимаю это. Просто хотелось, чтобы админ мог делать это через мою программу, для удобства. Если уж совсем не получится, то будет делать средствами винды. Разве через FieSetAttr нельзя установить "только чтение" определенной учетке? Мне впринципе это и надо. Средствами винды получается без проблем сделать, чтобы пользователь мог заходить в папку, к которой может обращаться только его учетка и работать со своими и не мог заходить в папки других пользователей.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
|
![]() |
![]() |
![]() |
#4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,792
|
![]() Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 05.06.2008
Сообщений: 4,194
|
![]()
Значит, придется отказаться от этой затеи и делать средствами винды
![]()
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
|
![]() |
![]() |
![]() |
#6 |
Баламучу слегка...
Участник клуба
Регистрация: 01.11.2006
Сообщений: 1,585
|
![]()
В свое время интересовался темой и накопал по этому поводу примерчик. Глянь, может поможет
|
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]()
Есть аж 4 варианта.
1. Юзать API винды для NT+. Это сложно и крайне низкоуровнево. Замучаешься. Ключевые термины для поиска: AddAccessAllowedAce(Ex), AddAccessDeniedAce(Ex), InitializeAcl, SetSecurityDescriptorDacl и др. 2. Можно юзать SDDL (Win2000+). Это крайне просто и няшно, но нужно изучать язык SDDL. Ключевые термины для поиска: ConvertStringSecurityDescriptorToSe curityDescriptor, ConvertSecurityDescriptorToStringSe curityDescriptor, ConvertSidToStringSid, ConvertStringSidToSid. 3. Работа с API системы напрямую - это всегда сложно и чревато ошибками. Особенно, если с API сильно много не работал и не понимаешь базовых принципов его дизайна. Поэтому лучше использовать объектные обёртки для API. В качестве таковой рекомендую JEDI Windows Securiry Code Library (JWSCL). В комплекте также есть демки использования. 4. Можно юзать sacls.exe, входящий в комплект любой современной (и даже не очень) Windows. Это консольная утилита по отображению/изменению прав доступа. Начиная с Vista появляется более мощная icacls.exe. Соответственно, надо её вызвать, передать параметры, прочитать вывод. Утилиты работают по SDDL, так что учить его всё равно придётся, но зато кода не надо писать. Референс: - Функции - Мат-часть Вообще, безопасность - тема крайне сложная. Я не рекомендую делать что-либо в Windows связанное с безопасность, пока ты не прочитаешь книгу Writing Secure Code (на русском: Защищённый код) от Майкла Ховарда и Девида ЛеБланка. Упомянутая выше мат-часть может служить лишь кратким введением.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
как программно узнать адресс путь к папке мои документы и рабочий стол | VIR1435 | Общие вопросы Delphi | 11 | 08.06.2012 08:24 |
Доступ к определенному элементу (при Edit Template) | coNsept | Общие вопросы .NET | 4 | 09.03.2012 19:21 |
А как программно запретить доступ к файлу | Стелс | Общие вопросы Delphi | 11 | 02.10.2011 13:51 |
закрыть доступ одному пользователю | mars56 | Безопасность, Шифрование | 3 | 11.12.2009 11:31 |
Как ограничить доступ к папке с помощью реестра. | rv9whu | Безопасность, Шифрование | 1 | 31.05.2009 20:26 |