Разрешить запись во время установки

У меня есть приложение, в котором я реализую log4net.dll. Я установил это приложение на разные компьютеры, и оно работает нормально.

мое приложение устанавливается в C:\ProgramFile\myApplication.

Однако проблема заключается в том, что у пользователя нет разрешения на запись в ProgramFile. Лог не пишет?

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

Любая помощь будет оценена по достоинству.


person shujaat siddiqui    schedule 22.01.2014    source источник


Ответы (2)


Вы не должны помещать файлы журнала в (под)папку вашего приложения! Поместите их туда, где наверняка у каждого пользователя есть права на запись, например. $Appdata или $LocalAppdata (что я предпочитаю для файлов журнала)

Пример конфигурации log4net:

<file value="${APPDATA}/My Company/My Product/Logs/My Application.log" />

взято отсюда:

http://malor.se/blog/?p=23

person toATwork    schedule 22.01.2014

Я работал над аналогичной проблемой в установщике WIX, вот код:

DirectoryInfo directoryInfo = new DirectoryInfo(session["..."]);

DirectorySecurity directorySecurity = directoryInfo.GetAccessControl();
SecurityIdentifier localService = new SecurityIdentifier(WellKnownSidType.LocalServiceSid, null);
FileSystemAccessRule directoryAccessRule = new FileSystemAccessRule(localService, FileSystemRights.FullControl, AccessControlType.Allow);
directorySecurity.AddAccessRule(directoryAccessRule);
directoryInfo.SetAccessControl(directorySecurity);

Учетной записи локальной службы предоставляется полный доступ к папке. Просто измените SID пользователя локальной службы на SID пользователя, который будет использовать ваше приложение.

person schglurps    schedule 22.01.2014