Права доступа по умолчанию для файлов и каталогов - PullRequest
0 голосов
/ 08 сентября 2010

У меня есть приложение, которое установлено на компьютерах с Vista пользователем с повышенными правами пользователя (и администратором через запрос повышения прав UAC).

Программа установки записывает некоторые файлы в папку в папке% APPDATA%.

Когда пользователь (без повышенных прав пользователя) запускает приложение, файлы (и созданные папки) в общей папке% APPDATA% (c: \ ProgramData в Vista) недоступен.

Файлы записываются сторонним компонентом.Если компонент используется без повышенных прав пользователя, файлы доступны (и доступны для записи).

Я попытался изменить права доступа к файлам, написанным без удачи.

Есть ли способ сделать права доступа к файлам по умолчанию полным доступом для всех?

Ответы [ 2 ]

2 голосов
/ 15 сентября 2010

Я решил проблему, создав подпапку ic: \ ProgramData, используя описанный подход здесь

bool modified;
DirectoryInfo directoryInfo = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "MyFolder");
DirectorySecurity directorySecurity = directoryInfo.GetAccessControl();
FileSystemAccessRule rule = new FileSystemAccessRule(
    securityIdentifier,
    FileSystemRights.Write |
    FileSystemRights.ReadAndExecute |
    FileSystemRights.Modify,
    InheritanceFlags.ContainerInherit |
    InheritanceFlags.ObjectInherit,
    PropagationFlags.InheritOnly,
    AccessControlType.Allow);
directorySecurity.ModifyAccessRule(AccessControlModification.Add, rule, out modified);
directoryInfo.SetAccessControl(directorySecurity);

Правила наследуются подпапками и файлами.Все файлы и папки, созданные в «MyFolder», доступны для записи группе пользователей.

0 голосов
/ 08 сентября 2010

Во-первых, вы уверены, что ваш установщик настраивает AppData для всех пользователей, а не только для одного? Если установщик создает папки в папке AppData одного пользователя, не имеет значения, сколько у вас прав в системе в целом, вы не попадете в эту папку, если не являетесь этим пользователем.

Во-вторых, похоже, что ваш установщик пишет папку и / или файлы от имени пользователя, выполняющего установку, который должен быть администратором и, следовательно, требует повышенных привилегий. Существует способ получить и изменить разрешения ACL для папки и / или файла. Возможно, фрагмент кода того, что вы пытаетесь не сработать, может помочь нам помочь вам.

...