2011-09-16 15 views
7

प्रोग्रामडेटा फ़ोल्डर सभी उपयोगकर्ताओं द्वारा साझा किए गए आपके एप्लिकेशन की लिखने योग्य फ़ाइलों को संग्रहीत करने के लिए सबसे अच्छी जगह है। लेकिन जब एनएसआईएस इंस्टॉलर व्यवस्थापक विशेषाधिकारों (जिसे प्रोग्राम फ़ाइलों को लिखना आवश्यक है) के साथ चलाया जाता है, तो प्रोग्रामडेटा फ़ोल्डर में बनाए गए फ़ोल्डर और फ़ाइलें केवल व्यवस्थापक को छोड़कर सभी उपयोगकर्ताओं के लिए पढ़ी जाती हैं। प्रोग्रामडाटा फ़ोल्डर के अंदर सभी उपयोगकर्ताओं के लिए इसे कैसे बदलें और लिखने योग्य फाइलें कैसे बदलें?नलसॉफ्ट इंस्टॉलर, प्रोग्रामडेटा उपफोल्डर लिखने योग्य कैसे बनाते हैं

उत्तर

7

मुझे नहीं पता कि यह व्यवहार एक विशेषता या बग है, लेकिन मुझे एक कामकाज मिला है। AccessControl प्लगइन की आवश्यकता है (एनएसआईएस प्लगइन्स फ़ोल्डर डाउनलोड और कॉपी करें)। "इंस्टॉल करें" अंदर 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" 

एस 1-5-32-545all users के बराबर है, इसलिए इस कोड निर्दिष्ट फ़ोल्डर और सभी फ़ाइलों के लिए पूर्ण पहुँच प्रदान करेगा सभी उपयोगकर्ताओं के अंदर।

+2

'AccessControl :: GrantOnFile" $ AppData \ फ़ोल्डर \ * "" (एस -1-5-32-545) "" पूर्ण पहुंच "पंक्ति अनावश्यक है क्योंकि 'फ़ोल्डर' के अंदर सभी फ़ोल्डरों और फ़ाइलों को पहली पंक्ति के साथ पूर्ण पहुंच दी जाएगी। – nawfal

1

या कमांड लाइन के माध्यम से सेट (Win7 केवल): ExecWait 'Icacls "$ AppData \ फ़ोल्डर"/अनुदान उपयोगकर्ता: (OI) (सीआई) एम'

+0

विंडोज सर्वर 2003 और वास्तव में ऊपर :) – nawfal