2016-03-09 6 views
0

Я пишу приложение WPF .NET (fwk 4.0), которое ссылается на log4Net и должно быть установлено в каталоге «Program Files (x86)» на ОС Windows 7/8/10 64bits.Управление файлами UAC и журналов

Журналы приложений, созданные с помощью приложения являются .txt файлы, созданные в подкаталоге установки в «Program Files (x86)»

Это приложение также использует на SQL Server CE 4.0 в том же подкаталоге.

C: \ Program Files (x86) \ MYAPP \ APP1 \ APP1.txt

C: \ Program Files (x86) \ MYAPP \ APP1 \

Приложение устанавливается на CEDatabase.sdf локальный администратор.

Чтобы запустить приложение, пользовательский интерфейс запрашивает у стандартного пользователя с повышенным токеном доступа (правами администратора) для запуска приложения, поскольку он не запускается иначе (я думаю, ACL не предоставляется для создания и записи журналов) ,

Приложение WPF не содержит манифеста приложения.

Мой клиент разочарован тем, что стандартный пользователь не может запускать приложение без повышения UAC. Более того, он хочет продолжать установку в «Program Files (x86)».

Что я могу сделать для управления этой ситуацией?

ответ

0

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

Смотрите эту ссылку для получения более подробной информации о том, как установить это в Log4Net: How to specify common application data folder for log4net?

Две общие места, чтобы войти в которых избежать UAC ограничения: CommonApplicationData (https://msdn.microsoft.com/en-us/library/windows/desktop/aa367992(v=vs.85).aspx), который является местом, где все пользователи могут писать , поэтому вы можете использовать это, если хотите, чтобы общее место ведения журнала было независимо от того, кто входит в систему Windows и запускает ваше приложение.

LocalAppData (https://msdn.microsoft.com/en-us/library/windows/desktop/aa369768(v=vs.85).aspx), который является местоположением, указанным для вашего текущего пользователя. Это позволит вам хранить ваши файлы журналов от разных пользователей Windows отдельно друг от друга.

Я не уверен, что у вас будет такая же проблема с записью в базу данных SQL Server CE. Образец, который я использовал в прошлом для работы с UAC, заключается в том, чтобы установить все статические файлы в Program Files, а затем все данные в одной из вышеуказанных двух упомянутых папок в зависимости от того, были ли данные приложения и протоколирование для каждого пользователя или для каждой установки ,

+0

Большое спасибо за совет. Я буду реализовывать то, что вы защищаете для файлов журнала (CommonAppData) или (LocalAppData). Я не хочу отмечать ваш ответ как Answser перед тем, как реализовать ваше решение, но я обязательно вернусь, чтобы отметить его, как только это будет сделано. В очередной раз благодарим за помощь! – user4953001

+0

Он отлично работал для файлов log4Net. Если это помогает кому-то другому, я также добавляю, чтобы установить мой файл SQL CE 4.0 .sdf в папку CommonAppData, чтобы соединение CE было установлено при вызове в рамках невыполненного пользовательского процесса. Еще раз спасибо, – user4953001