2011-09-16 38 views
7

Thư mục ProgramData là nơi tốt nhất để lưu trữ các tệp có thể ghi của ứng dụng được chia sẻ bởi tất cả người dùng. Nhưng khi trình cài đặt Nsis được chạy với quyền quản trị (bắt buộc phải ghi vào Program Files), thì thư mục và tệp được tạo trong thư mục ProgramData chỉ đọc cho tất cả người dùng ngoại trừ quản trị viên. Làm thế nào để thay đổi điều đó và có các tập tin ghi cho tất cả người dùng bên trong thư mục ProgramData?Trình cài đặt Nullsoft, cách làm cho thư mục con ProgramData có thể ghi

Trả lời

7

Tôi không biết hành vi này có phải là một tính năng hay lỗi hay không, nhưng tôi đã tìm thấy cách giải quyết khác. Cần có plugin AccessControl (tải xuống và sao chép thư mục plugin Nsis). Bên trong "cài đặt" của NSIS kịch bản đặt một cái gì đó như thế này:

; 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 tương đương với all users, do đó, mã này sẽ cấp quyền truy cập đầy đủ vào thư mục quy định và tất cả các file bên trong cho tất cả người dùng.

+2

'điều khiển truy cập :: GrantOnFile "$ APPDATA \ Folder \ * "" (S-1-5-32-545) "" FullAccess "' dòng là không cần thiết vì tất cả các thư mục và tập tin bên trong 'Thư mục' sẽ được truy cập đầy đủ với dòng đầu tiên chính nó. – nawfal

1

hoặc thiết lập thông qua dòng lệnh (Win7 chỉ): ExecWait 'ICACLS "$ APPDATA \ Folder"/Users cấp: (OI) (CI) M'

+0

windows server 2003 trở lên thực sự :) – nawfal

Các vấn đề liên quan