Я тестировал свое приложение, чтобы увидеть, насколько хорошо оно работает при запуске пользователем без прав администратора, и обнаружил проблемы с обработкой файлов. Я получаю исключение UnauthorizedAccessException при попытке перезаписать файл, если файл был создан администратором и пользователем.
При записи файла я сначала создаю файл как файл .tmp, затем использую File.Copy для перезаписи оригинала. Файл .tmp создается, но File.Copy не удается. Мои файлы записываются в общий каталог («C: \ Documents and Settings \ All Users \ Application Data» в XP).
Что я могу сделать, чтобы все пользователи могли иметь полный контроль над файлами приложения?
Я нашел это:
System.Security.AccessControl.DirectorySecurity sec =
System.IO.Directory.GetAccessControl ( directory );
FileSystemAccessRule accRule = new FileSystemAccessRule ( Globals.userIdentity,
FileSystemRights.FullControl, AccessControlType.Allow );
sec.AddAccessRule ( accRule );
Решит ли это проблему с каталогом, в котором находятся все файлы? Или мне придется что-то делать с каждым файлом? Если так, что это такое?
Edit:
Пользователи без прав администратора не могут изменять файлы, созданные пользователем с правами администратора. Это не хорошо. Мне нужно, чтобы все файлы были доступны для редактирования всем пользователям. Нет ли каких-либо разрешений, которые можно установить при первоначальном создании файла, которые предоставят это?