У меня есть приложение, которое может использоваться всеми пользователями (с правами администратора или с ограниченными правами) в .NET (особенно на C #).
Когда приложение запускается впервые - оно создает несколько файлов, которые ему нужны, в C: \ Documents and Settings \ All Users \ Documents \ для всех последующих запусков.
Если пользователь с ограниченными правами в XP является ПЕРВЫМ пользователем для запуска приложения, он прекрасно создает файлы, и пользователь с ограниченными правами и администраторы могут нормально работать.
Однако если администратор (или я предполагаю, что другой пользователь с ограниченными правами) первым запустит приложение, тогда пользователь с ограниченными правами НЕ сможет запустить приложение.
Два файла, которые он НЕ может прочитать / записать, если они созданы Администратором, - это файл журнала Log4Net и файл базы данных SQLite.
Файл базы данных SQLite создается с простой .NET File.Copy (sourcepath, destinationpath). Исходный путь - это исходный файл базы данных, установленный вместе с приложением, поэтому при первом запуске он копирует его из C: \ Program Files \ app install \ seed.db
Есть ли способ установить права доступа к файлу при его копировании? Возможно, File.SetAccessControl ()? Мне не ясно, как это работает.
Другая проблема заключается в том, что приложение для прокручивания файлов log4Net не будет катить старый файл и создавать новый, так как старый файл был создан пользователем-администратором при запуске приложения.
Есть идеи? По иронии судьбы все это прекрасно работает в Vista с ограниченными учетными записями / учетными записями администратора - это происходит ТОЛЬКО в XP с учетными записями администратора / ограниченных пользователей.