Дайте разрешение за запис по време на инсталацията

Имам приложение, в което внедрявам 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 на потребителя на Local Service със SID на потребителя, който ще използва вашето приложение.

person schglurps    schedule 22.01.2014