C# 在安装期间授予写入权限

C# 在安装期间授予写入权限,c#,permissions,C#,Permissions,我有一个应用程序,我正在其中实现log4net.dll。我在不同的计算机上安装了这个应用程序,它工作正常 我的应用程序安装在C:\ProgramFile\myApplication 但是,问题是当用户没有在ProgramFile下的写入权限时。 它不写日志吗 我想知道是否有任何方法可以在安装期间分配文件夹的所有访问权限。我看了不同的文章,但没有找到满意的答案 任何帮助都将不胜感激。我在WIX安装程序中处理过类似的问题,下面是代码: DirectoryInfo directoryInfo = ne

我有一个应用程序,我正在其中实现
log4net.dll
。我在不同的计算机上安装了这个应用程序,它工作正常

我的应用程序安装在C:\ProgramFile\myApplication

但是,问题是当用户没有在ProgramFile下的写入权限时。 它不写日志吗

我想知道是否有任何方法可以在安装期间分配文件夹的所有访问权限。我看了不同的文章,但没有找到满意的答案


任何帮助都将不胜感激。

我在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。

您不应将日志文件放在应用程序的(子)文件夹中! 将它们放在每个用户都有写入权限的位置,例如$Appdata或$LocalAppdata(我更喜欢用于日志文件)

log4net配置示例:

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

摘自这里: