ProgramData文件夹是存储所有用户共享的应用程序可写文件的最佳位置.但是当Nsis安装程序以管理员权限(需要写入Program Files)运行时,在ProgramData文件夹中创建的文件夹和文件只对除admin之外的所有用户都是只读的.如何更改它并为ProgramData文件夹中的所有用户提供可写文件?
我不知道这种行为是一个功能还是一个bug,但我找到了一个解决方法.需要
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"