|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
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);
|
|
|
|
| |