Nullsoft安装程序,如何使ProgramData子文件夹可写

时间:2011-09-16 11:49:45

标签: windows-7 windows-vista nsis programdata

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

2 个答案:

答案 0 :(得分:7)

我不知道这种行为是一个功能还是一个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"

S-1-5-32-545 相当于all users,因此此代码将授予对指定文件夹及所有用户内部所有文件的完全访问权限。

答案 1 :(得分:1)

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

相关问题