8

ProgramDataフォルダーは、すべてのユーザーが共有するアプリケーションの書き込み可能なファイルを保存するのに最適な場所です。ただし、Nsisインストーラーを管理者権限(プログラムファイルへの書き込みに必要)で実行すると、ProgramDataフォルダーに作成されたフォルダーとファイルは、管理者を除くすべてのユーザーに対してのみ読み取られます。それを変更して、ProgramDataフォルダー内のすべてのユーザー用に書き込み可能なファイルを作成するにはどうすればよいですか?

4

2 に答える 2

7

この動作が機能なのかバグなのかはわかりませんが、回避策を見つけました。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はすべてのユーザーに相当するため、このコードは、指定されたフォルダーとその中のすべてのファイルへのフルアクセスをすべてのユーザーに許可します。

于 2011-09-19T12:44:53.950 に答える
1

またはコマンドラインから設定(Win7のみ):ExecWait'Icacls "$ APPDATA \ Folder" / grant Users:(OI)(CI)M'

于 2011-12-14T22:49:30.030 に答える