Я модифицирую старую программу C ++ для работы в Vista.Не требует прав администратора.
Я изменил код для размещения файлов журнала в \ProgramData\MyApp\
.Эти журналы записываются с использованием функций stdio
(fopen
, fprintf
, fclose
).
Вот проблема:
Пользователь A запускает программуво-первых, он создает \ProgramData\MyApp\MyLogFile.txt
, используя CreateFile()
Далее пользователь запускает программу, пытается добавить к MyLogFile.txt
и получает отказ в доступе.
Я попытался создать ноль SECURITY_DESCRIPTOR
и передать его CreateFile()
.Это создает файл с «не назначенными разрешениями», но кажется, что первый пользователь, который пишет в файл, становится владельцем, а после этого всем остальным пользователям, не являющимся администраторами, не повезло.
Важно, чтобывсе пользователи используют одни и те же файлы журналов, но также важно, чтобы я изменил как можно меньше кода.
Отредактировано, чтобы добавить:
\ProgramData\MyApp
создается по стандартуУстановщик Visual Studio.(Я не вижу места для установки безопасности каталогов.) Когда он создает \MyApp
, он предоставляет Users
следующие разрешения:
Read & execute
List folder contents
Read
Special permissions
Под Advanced
Я вижу, что специальные разрешения включают в себя:
Create files / write data
Create folders / append data
Write attributes
Write extended attributes