Наименьший код для предоставления доступа состоит из 3 вызовов API. Он предоставляет полный доступ к данному hkey
всем аутентифицированным пользователям и администраторам.
Этот фрагмент не содержит надлежащей обработки ошибок и отчетов. Не копируйте / вставляйте его в производственный код.
PSECURITY_DESCRIPTOR sd = nullptr;
ULONG sd_size = 0;
TCHAR* rights = TEXT( "D:" ) // Discretionary ACL
TEXT( "(A;OICI;GA;;;AU)" ) // Allow full control to all authenticated users
TEXT( "(A;OICI;GA;;;BA)" ); // Allow full control to administrators
ConvertStringSecurityDescriptorToSecurityDescriptor( rights, SDDL_REVISION_1, &sd, &sd_size );
RegSetKeySecurity( hkey, DACL_SECURITY_INFORMATION, sd );
LocalFree( sd );
Определение наличия у «Пользователей» доступа на запись к ключу может оказаться более сложным, чем ожидалось. В итоге я записал тестовое значение в реестр и проверил результат этой записи.