На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

Denying Access Using Low-Level Functions



This example uses the low-level functions to attach an empty DACL to a file object. For similar examples that use the high-level security functions, see Denying Access.

The example allocates a buffer for the security descriptor and calls the InitializeSecurityDescriptor function to initialize the buffer. Then it allocates a buffer for the ACL and calls the InitializeAcl function to initialize that buffer. Next, it calls the SetSecurityDescriptorDacl function to attach the ACL to the security descriptor; and calls the SetFileSecurity function to attach the security descriptor to a file.

PSECURITY_DESCRIPTOR pSD;
PACL pACL;
DWORD cbACL = 1024;

/* Initialize a security descriptor. */

pSD = (PSECURITY_DESCRIPTOR) LocalAlloc(LPTR,
SECURITY_DESCRIPTOR_MIN_LENGTH); /* defined in WINNT.H */
if (pSD == NULL) {
ErrorHandler("LocalAlloc");
goto Cleanup;
}

if (!InitializeSecurityDescriptor(pSD,
SECURITY_DESCRIPTOR_REVISION)) { /* defined in WINNT.H */
ErrorHandler("InitializeSecurityDescriptor");
goto Cleanup;

}

/* Initialize a DACL. */

pACL = (PACL) LocalAlloc(LPTR, cbACL);
if (pACL == NULL) {
ErrorHandler("LocalAlloc");
goto Cleanup;
}

if (!InitializeAcl(pACL, cbACL, ACL_REVISION2)) {
ErrorHandler("InitializeAcl");
goto Cleanup;
}

/* Add an empty ACL to the SD to deny access. */

if (!SetSecurityDescriptorDacl(pSD,
TRUE, /* fDaclPresent flag */
pACL,
FALSE)) { /* not a default DACL */
ErrorHandler("SetSecurityDescriptorDacl");

goto Cleanup;
}

/* Use the new SD as the file's security info. */

if (!SetFileSecurity(lpszTestFile,
DACL_SECURITY_INFORMATION,
pSD)) {
ErrorHandler("SetFileSecurity");
goto Cleanup;
}

Cleanup:
if(pSD != NULL)
LocalFree((HLOCAL) pSD);
if(pACL != NULL)
LocalFree((HLOCAL) pACL);



Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

Отвергающий Доступ, использовавший Функции Low-Level



Этот пример использует функции низкого уровня, чтобы подключать пустой DACL к файловому объекту. Для аналогичных примеров, которые используют высокоуровневые функции безопасности, смотри Отвергать Доступа.

Пример распределяет буфер для дескриптора безопасности и называет функцию InitializeSecurityDescriptor, чтобы инициализировать буфер. Затем это распределяет буфер для ACL и называет функцию InitializeAcl, чтобы инициализировать этот буфер. Затем, это называет функцию SetSecurityDescriptorDacl, чтобы подключать ACL к дескриптору безопасности; и вызовы функция SetFileSecurity, чтобы подключать дескриптор безопасности к файлу.

PSECURITY_DESCRIPTOR pSD;
PACL pACL;
DWORD cbACL = 1024;

/* Инициализируйте безопасность descriptor. */

pSD = (PSECURITY_DESCRIPTOR) LocalAlloc(LPTR, SECURITY_DESCRIPTOR_MIN_LENGTH); /* определенное в WINNT.H */ если (pSD == НЕДЕЙСТВИТЕЛЬНЫЙ) { ErrorHandler("LocalAlloc");
goto Очистка;
}

если (!InitializeSecurityDescriptor(pSD, SECURITY_DESCRIPTOR_REVISION)) { /* ОПРЕДЕЛЕННОЕ в WINNT.H */ ErrorHandler("InitializeSecurityDescriptor");
goto Очистка;

}

/* Инициализируйте DACL. */

pACL = (PACL) LocalAlloc(LPTR, cbACL);
если (pACL == НЕДЕЙСТВИТЕЛЬНЫЙ) { ErrorHandler("LocalAlloc");
goto Очистка;
}

если (!InitializeAcl(pACL, cbACL, ACL_REVISION2)) { ErrorHandler("InitializeAcl");
goto Очистка;
}

/* Добавьте пустой ACL к SD, чтобы отвергать access. */

если (!SetSecurityDescriptorDacl(pSD, ИСТИНА, /* флаг fDaclPresent */ pACL, FALSE)) { /* не встроенный DACL */ ErrorHandler("SetSecurityDescriptorDacl");

goto Очистка;
}

/* Используйте новый SD как файловую безопасность инфо */

если (!SetFileSecurity(lpszTestFile, DACL_SECURITY_INFORMATION, pSD)) { ErrorHandler("SetFileSecurity");
goto Очистка;
}

Очистка: если(pSD != НЕДЕЙСТВИТЕЛЬНЫЙ) LocalFree((HLOCAL) pSD);
если(pACL != НЕДЕЙСТВИТЕЛЬНЫЙ) LocalFree((HLOCAL) pACL);



Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz