Хотя моя вкладка безопасности выглядит так же, как и ваша, другие пользователи, не являющиеся администраторами, могут записывать файлы после вызова AccessControl.Если вы нажмете кнопку «Дополнительно» на скриншоте, вы увидите истинный ACL, в котором должна быть не унаследованная запись, предоставляющая полный доступ к группе пользователей.
RequestExecutionLevel admin
!define APP_NAME "SOTest"
Section
SetShellVarContext all
CreateDirectory "$APPDATA\${APP_NAME}"
nsExec::ExecToLog '"icacls" "$APPDATA\${APP_NAME}"'
Pop $0
AccessControl::GrantOnFile "$APPDATA\${APP_NAME}" "(S-1-5-32-545)" "FullAccess" ; or use S-1-1-0 for Everyone
Pop $0
MessageBox mb_ok "GrantOnFile returned $0"
nsExec::ExecToLog '"icacls" "$APPDATA\${APP_NAME}"'
Pop $0
SectionEnd
дает мне
Create folder: C:\ProgramData\SOTest
C:\ProgramData\SOTest NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F)
BUILTIN\Administrators:(I)(OI)(CI)(F)
CREATOR OWNER:(I)(OI)(CI)(IO)(F)
BUILTIN\Users:(I)(OI)(CI)(RX)
BUILTIN\Users:(I)(CI)(WD,AD,WEA,WA)
Successfully processed 1 files; Failed processing 0 files
C:\ProgramData\SOTest BUILTIN\Users:(OI)(CI)(F) <-- Full access for users group
NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F)
BUILTIN\Administrators:(I)(OI)(CI)(F)
CREATOR OWNER:(I)(OI)(CI)(IO)(F)
BUILTIN\Users:(I)(OI)(CI)(RX)
BUILTIN\Users:(I)(CI)(WD,AD,WEA,WA)
Successfully processed 1 files; Failed processing 0 files
Даже если вы можете заставить его работать, - неправильный способ работы приложения .Вы можете сохранить исходные данные / данные шаблона в папке ProgramData, но при первом запуске приложения пользователь должен скопировать данные из ProgramData в папку% AppData% пользователей.Это, конечно, означает, что у каждого пользователя есть свои личные данные.Это был предпочтительный метод в течение как минимум 20 лет.
Если вы все еще решаете, что данные должны быть доступны для записи и совместного использования всеми пользователями, вы должны помнить, что разные пользователи могут запускать ваше приложение на (удаленный рабочий стол и т. д.), и приложение должно синхронизировать доступ к общим файлам при чтении / записи.