Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Страницы: 1
RSS
Изменение прав в реестре WinXP/Vista, Под C++
 
Есть раздел в одной из веток реестра. Надо программно проверить текущие права и при необходимости задать новые с наследованием на все подразделы и ключи.
Слышал про GetSecurityInfo, но эта функция не полностью решает проблему...
"Красота - как специи, которые хорошую еду делают ещё вкуснее, а без еды есть невозможно."
 
Shanker,
Такой код юзал?
Код
#include "stdafx.h" 
#include "windows.h" 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
   TCHAR buffer[1000]; 

   if (InitializeAcl((PACL)&buffer, sizeof(buffer), ACL_REVISION)) 
   { 
      SID_IDENTIFIER_AUTHORITY siaNtAuthority = SECURITY_WORLD_SID_AUTHORITY; 
      PSID lpSid; 

      if (AllocateAndInitializeSid(&siaNtAuthority, 1, SECURITY_WORLD_RID, 0, 0, 0, 0, 0, 0, 0, &lpSid)) 
      { 

         if (AddAccessAllowedAce((PACL)&buffer, ACL_REVISION, 
            FILE_WRITE_DATA | 
            FILE_APPEND_DATA | 
            FILE_WRITE_EA | 
            FILE_WRITE_ATTRIBUTES | 
            FILE_READ_DATA | 
            FILE_READ_EA | 
            FILE_EXECUTE | 
            FILE_READ_ATTRIBUTES | 
            STANDARD_RIGHTS_ALL | 
            SPECIFIC_RIGHTS_ALL | 
            ACCESS_SYSTEM_SECURITY | 
            MAXIMUM_ALLOWED, 
            lpSid)) 
         { 
            SECURITY_DESCRIPTOR sd; 

            if (InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION)) 
            { 
               if (SetSecurityDescriptorDacl(&sd, TRUE, (PACL)&buffer, FALSE)) 
               { 
                  long r1; 
                  r1 = SetFileSecurity(_T("c:\temp\file"), DACL_SECURITY_INFORMATION, &sd); 
               } 
            } 
         } 
         FreeSid(lpSid); 
      } 
   } 
   return 0; 
}

К ключу аналогично делается...
 
А можно ещё комментариев прибавить к коду?
И узнать где подробно можно про это почитать. Ведь ты же тоже где-то брал это всё :)
"Красота - как специи, которые хорошую еду делают ещё вкуснее, а без еды есть невозможно."
 
Самый главный помошник MSDN, SDK там и примеры есть...
Кроме того рылся в своей Литературе.
 
MSDN, SDK самые лучшие.. все доступно и понятно ;)
Страницы: 1
Читают тему