【问题标题】:Nullsoft installer, howto make ProgramData subfolder writableNullsoft 安装程序,如何使 ProgramData 子文件夹可写
【发布时间】:2011-11-18 15:26:46
【问题描述】:

ProgramData 文件夹是存储所有用户共享的应用程序可写文件的最佳位置。但是,当 Nsis 安装程序以管理员权限运行时(写入 Program Files 所需的权限),则在 ProgramData 文件夹中创建的文件夹和文件对除 admin 之外的所有用户都是只读的。如何更改它并为 ProgramData 文件夹中的所有用户提供可写文件?

【问题讨论】:

    标签: windows-7 windows-vista nsis programdata


    【解决方案1】:

    我不知道这种行为是功能还是错误,但我找到了解决方法。需要AccessControl 插件(下载并复制 Nsis 插件文件夹)。在 Nsis 脚本的“安装”部分内放置如下内容:

    ; This is important to have $APPDATA variable
    ; point to ProgramData folder
    ; instead of current user's Roaming folder
    SetShellVarContext all
    
    ; This sets us permissions
    AccessControl::GrantOnFile "$APPDATA\Folder" "(S-1-5-32-545)" "FullAccess"
    AccessControl::GrantOnFile "$APPDATA\Folder\*" "(S-1-5-32-545)" "FullAccess"
    

    S-1-5-32-545 等同于all users,因此此代码将授予所有用户对指定文件夹和其中所有文件的完全访问权限。

    【讨论】:

    • AccessControl::GrantOnFile "$APPDATA\Folder\*" "(S-1-5-32-545)" "FullAccess" 行是不必要的,因为Folder 中的所有文件夹和文件都将通过第一行本身获得完全访问权限。
    【解决方案2】:

    或通过命令行设置(仅限 Win7): ExecWait 'Icacls "$APPDATA\Folder" /grant Users:(OI)(CI)M'

    【讨论】:

    • windows server 2003 及以上版本 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 2011-07-31
    • 1970-01-01
    • 2016-10-10
    • 2011-01-22
    • 1970-01-01
    相关资源
    最近更新 更多