【问题标题】:Grant write permission during installation在安装期间授予写入权限
【发布时间】:2014-01-23 01:50:04
【问题描述】:

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

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

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

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

任何帮助将不胜感激。

【问题讨论】:

    标签: c# permissions


    【解决方案1】:

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

    log4net 配置示例:

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

    取自这里:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2017-01-31
        • 2016-09-09
        • 2011-11-09
        • 1970-01-01
        • 2011-07-18
        • 2018-03-25
        • 1970-01-01
        • 1970-01-01
        • 2014-10-30
        相关资源
        最近更新 更多