Во првых ошибка — DACL_SECURITY_INFORMATION надо заменить или про ORить с SACL_SECURITY_INFORMATION — так как вставляете Audit ACE
Я понимаю, что навязывать своё не стоит много раз, но всё же:
sd sdFile;
acl aclFile;
sid yourUser("delph");
aclFile.AddAce( (DWORD) -1, SYSTEM_AUDIT_ACE_TYPE, 0, OBJECT_INHERIT_ACE | CONTAINER_INHERIT_ACE, GENERIC_ALL, yourUser)
aclFile.AddAce( (DWORD) -1, SYSTEM_AUDIT_ACE_TYPE, 0, OBJECT_INHERIT_ACE | CONTAINER_INHERIT_ACE, GENERIC_READ | FILE_TRAVERSE , sid().sidWorld );
aclFile.canonicalize();
aclFile.normalize();
sdFile.SetDacl(aclFile);
SetFileSecurity(sPath, SACL_SECURITY_INFORMATION, sdFile);
это с помощью той библиотеки. почему я её советую — потому что в WinSecurity много тонких мест(таких как порядок ACE и много другое). Плюс библиотека написана одним из знающих людей и многократно после этого опробована. Есть конечно минус — она слегка устарела, но для Ваших нужд должно хватить. Попробуйте.