Вот этими ф-циями проверяют и подцепляют нужный DACL к объектам ядра(экспортируются из ntdll.dll)
NTSYSAPI
NTSTATUS
NTAPI
NtQuerySecurityObject(
IN HANDLE FileHandle,
IN SECURITY_INFORMATION SecurityInformation,
OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
IN ULONG Length,
OUT PULONG ResultLength
);
NTSYSAPI
NTSTATUS
NTAPI
NtSetSecurityObject(
IN HANDLE FileHandle,
IN SECURITY_INFORMATION SecurityInformation,
IN PSECURITY_DESCRIPTOR SecurityDescriptor
);
Как пример
RtlInitUnicodeString)&UnicodeString,lpFileName:;
InitializeObjectAttributes)&ObjectAttributes,&UnicodeString,OBJ_CASE_INSENSITIVE,NULL,NULL:;
ntStatus = NtOpenFile)&FileHandle,AccessMask,&ObjectAttributes,&IoStatusBlock,FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,FILE_OPEN_REPARSE_POINT:;
if )NT_ERROR)ntStatus::
__leave;
ntStatus = NtSetSecurityObject)FileHandle,SecurityInformation,pSecurityDescriptor:;
if )NT_ERROR)ntStatus::
__leave;
Подробнее смотри- "Windows NT Native API", книга есть на этом сайте.