Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Установка прав полного доступа для всех юзеров, програмно установить права доступа 
:(
    Опции темы
CO4UHUTEJIb
Дата 31.10.2011, 06:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


O_o



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 18.5.2009

Репутация: нет
Всего: нет



Помогите, пожалуйста. Задача програмно сделать файл доступным для всех пользователей (чтение, запись, выполнение). Я нашел функцию SetFileSecurity. Для нее нужно получить SECURITY_DESCRIPTOR с соответсвующими правами. Подскажите, пожалуйста, как это сделать.
PM MAIL   Вверх
bass
Дата 11.11.2011, 04:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 5.8.2007

Репутация: 2
Всего: 2



Вот код :


Код

    char *path = "C:\\1.txt";
    char *usr  = "User";

    DWORD dwRes = 0;
    PACL pOldDACL = NULL, pNewDACL = NULL;
    PSECURITY_DESCRIPTOR pSD = NULL;
    EXPLICIT_ACCESS ea;



dwRes = GetNamedSecurityInfo(path,SE_FILE_OBJECT,DACL_SECURITY_INFORMATION,NULL,NULL,&pOldDACL,NULL,  &pSD);
    if (ERROR_SUCCESS != dwRes)
    {
   MessageBox(NULL,"ERR1", "", MB_OK );

        goto Cleanup;
    }
    // Инициализируем структуру для нового элемента
    //    списка контроля доступа
    ZeroMemory(&ea, sizeof(EXPLICIT_ACCESS));
    ea.grfAccessPermissions =GENERIC_ALL;//KEY_ALL_ACCESS;//GENERIC_ALL;// KEY_ALL_ACCESS;//GENERIC_ALL;//SECTION_MAP_WRITE;//GENERIC_ALL ;//GENERIC_READ||GENERIC_WRITE; // только чтение
    ea.grfAccessMode = GRANT_ACCESS;//SET_ACCESS;//GRANT_ACCESS;// SET_ACCESS;//GRANT_ACCESS;
    ea.grfInheritance= OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE; //INHERIT_ONLY_ACE;//CONTAINER_INHERIT_ACE;;//CONTAINER_INHERIT_ACE;// NO_INHERITANCE;//CONTAINER_INHERIT_ACE;
    ea.Trustee.TrusteeForm = TRUSTEE_IS_NAME; // указывает тип элемента ptstrName
    ea.Trustee.ptstrName = usr;  // для кого устанавливается доступ ( здесь можно указать имя или SID)
    //    создаём новый список контроля доступа, в который будет входить новый элемент
    //    с установленными разрешениями.
dwRes = SetEntriesInAcl(1, &ea, pOldDACL, &pNewDACL);
    if (ERROR_SUCCESS != dwRes)
    {
   MessageBox(NULL,"ERR2", "", MB_OK );

        goto Cleanup;
    }
    //    Соединяем новый список с существующим списком объекта
dwRes = SetNamedSecurityInfo(path, SE_FILE_OBJECT,DACL_SECURITY_INFORMATION,NULL, NULL, pNewDACL, NULL);
if (ERROR_SUCCESS != dwRes)
{
   MessageBox(NULL,"ERR3","", MB_OK );

goto Cleanup;
}

MessageBox(NULL,"OK", "", MB_OK );
Cleanup:
if(pSD != NULL)
LocalFree((HLOCAL) pSD);
if(pNewDACL != NULL)
LocalFree((HLOCAL) pNewDACL);

Думаю поможет.....
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0741 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.