在安装期间授予写入权限

时间:2014-01-22 16:34:43

标签: c# permissions

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

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

但问题是用户在ProgramFile下没有写入权限。 它不写日志?

我想知道有什么办法可以在安装过程中为文件夹分配所有访问权限。我经历了不同的文章,但找不到任何满意的答案。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

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

log4net config的示例:

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

取自这里:

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

答案 1 :(得分:0)

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