![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 1 Всего: 23 |
Если кому интересно и кто занимался этим, помогите, пож-та. Есть пара мест в коде, что вызывают сомнения (но не больше). Но дело в том, что доступ к файлу не меняется после прогона программы.
Эта прога должна смотреть, кому можно работать с файлом (каждому - свой вид работы, то есть чтение, запуск, запись. Это можно посмотреть в свойствах файла (папки) во вкладке Безопасность). А потом менять доступ разным группам (это задаётся непосредственно в коде - простой вариант). Почему?
|
|||
|
||||
NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 1 Всего: 23 |
DOMAIN_ALIAS_RID_POWER_USERS - в данном случае Опытному пользователю стало иметь доступ к файлу c:\myfile.txt. Доступ неограниченный (GENERIC_ALL).
|
|||
|
||||
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
Я вместо INHERIT_ONLY_ACE поставил NO_INHERITANCE и всё стало работать. Может быть надо и не это значение, но свинья тут зарылась...
Также если убрать вызов GetNamedSecurityInfo, а в вызове SetEntriesInAcl вместо pOldAcl поставить NULL, то хуже от этого работать не будет, но это так, к слову... -------------------- С уважением, г-н Посол. |
|||
|
||||
NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 1 Всего: 23 |
p0s0l, попробую. Я тоже долго сомневался с этим, просто потом забылось. Спасибо!
|
|||
|
||||
NiJazz |
|
||||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 1 Всего: 23 |
Но какже тогда со старыми правами? Ведь вызов SetEntriesInAcl как раз и обновляет pOldAcl на pNewAcl, дополняя информацию.
Я тоже так сделал. Не сработало. ![]() А ты попробуй отнять у всех права на доступ к файлу. И ещё странность: GetNamedSecurityInfo как имя файла принимает, например, "C:\myfle.txt", что противоречит Си-шному способу. А если сделать "C:\\myfile.txt", то вопит. Такой странный путь описан в MSDN. |
||||
|
|||||
NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 1 Всего: 23 |
Вот нынешний код. Но всё равно не работает.
![]()
|
|||
|
||||
Ars |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 28.8.2003 Где: Московская обл. Репутация: 2 Всего: 2 |
Глупость! Погляди в дебагере, что у тебя в pFileName после выполнения strcpy(pFileName, "c:\myfile.txt");. Уверен, что "c:myfile.txt". И это имя файла?!! Погляди внимательно, что возвращают ф-ции GetNamedSecurityInfo, SetNamedSecurityInfo и какие у тебя условия проверки их невыполнения -------------------- Есть многое на свете, друг Горацио, С чем очень долго можно прое..! |
|||
|
||||
NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 1 Всего: 23 |
Ars, а ты в MSDN посмотри. Я ж не знаю реализацию этих API.
К тому же прога вопит, если делать "правильные имена". |
|||
|
||||
NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 1 Всего: 23 |
Остаётся дождаться, что pOsOl ответит.
![]() |
|||
|
||||
Ars |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 28.8.2003 Где: Московская обл. Репутация: 2 Всего: 2 |
При чем тут реализация API? Ты на свою реализацию погляди!
В этом куске при успешном выполнении функции будет вылазить надпись
А все потому, что GetNamedSecurityInfo возвращает 0 при успешном выполнении и код ошибки, отличный от нуля в противном случае, а значение LastError она вообще не выставляет, а ты все это как то странно интерпретируешь в своей программе. -------------------- Есть многое на свете, друг Горацио, С чем очень долго можно прое..! |
||||
|
|||||
NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 1 Всего: 23 |
Ars, хм, это по привычке... Посмотрю. Заранее спасибо.
|
|||
|
||||
NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 1 Всего: 23 |
Ars, спасибо тебе, что внимание обратил. А ведь я и правда чувствовал, что всё, не мог понять, в чём проблема.
Иногда и дурацкая невнимательность может сослужить злую службу. ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |