2008-09-22 11 views
31

मैं Nullsoft इंस्टॉल सिस्टम का उपयोग कर एक विंडोज इंस्टालर बनाने की कोशिश कर रहा हूं जिसके लिए एक व्यवस्थापक द्वारा स्थापना की आवश्यकता है। इंस्टॉलर एक "लॉग" निर्देशिका बनाता है। चूंकि नियमित उपयोगकर्ता इस एप्लिकेशन को चला सकते हैं, इसलिए उस निर्देशिका को नियमित उपयोगकर्ताओं द्वारा लिखने की आवश्यकता होती है। मैं कैसे निर्दिष्ट करूं कि सभी उपयोगकर्ताओं को एनएसआईएस स्क्रिप्ट भाषा में उस निर्देशिका में लेखन पहुंच प्राप्त करने की अनुमति होनी चाहिए?आप एनएसआईएस में निर्देशिका अनुमतियां कैसे सेट करते हैं?

मैं मानता हूं कि यह एक तरह का बुरा विचार लगता है, लेकिन एप्लिकेशन केवल एक आंतरिक ऐप है जो निजी नेटवर्क पर केवल कुछ लोगों द्वारा उपयोग किया जाता है। मुझे केवल लॉग फाइलों को सहेजने की ज़रूरत है ताकि मैं देख सकूं कि कुछ खराब होने पर ऐप क्यों टूटा हुआ है। उपयोगकर्ताओं को प्रशासक नहीं बनाया जा सकता है।

उत्तर

33

AccessControl प्लगइन का उपयोग करें और फिर इसे स्क्रिप्ट में जोड़ें, जहां "लॉग" निर्देशिका इंस्टॉल निर्देशिका में है।

AccessControl::GrantOnFile "$INSTDIR\logs" "(BU)" "FullAccess" 

जो सभी उपयोगकर्ताओं के लिए फ़ोल्डर तक पूर्ण पहुंच देता है।

3

एक तरीका: खोल को कॉल करें, और cacls या xcacls का उपयोग करें।

+2

+1 .. कोई भी इसे समझ नहीं पाया और इसलिए नहीं दुख की बात है .. – nawfal

2

उपयोगकर्ता की% APPDATA% निर्देशिका में लॉग-निर्देशिका क्यों नहीं बनाते? क्या आपको वास्तव में सभी लॉग को इंस्टॉल निर्देशिका में रखना होगा? क्यूं कर?

+0

मैं चाहता हूं कि अन्य उपयोगकर्ता लॉग भी देख सकें। यदि वे उपयोगकर्ता APPDATA निर्देशिका में हैं, तो यदि उपयोगकर्ता 1 ऐप चलाता है, तो केवल उपयोगकर्ता 1 या व्यवस्थापक लॉग फ़ाइल देख सकता है। –

9

प्रोग्राम फ़ाइलों के तहत निर्देशिकाओं पर अनुमतियों को बदलने के बजाय, लॉग इन को किसी ऐसे स्थान पर क्यों न रखें जो सभी उपयोगकर्ताओं द्वारा लिखित हो।

अपने एनएसआईएस दस्तावेज में 4.9.7.7 सेटशेलवारे कॉन्टेक्स्ट अनुभाग देखें। आप सभी उपयोगकर्ताओं के लिए लिखने योग्य एप्लिकेशन डेटा फ़ोल्डर प्राप्त करने के लिए $ APPDATA के साथ इसका उपयोग कर सकते हैं।

+1

log4net में इसे पूरा करने के लिए इस उत्तर पर एक नज़र डालें: http://stackoverflow.com/questions/468989/how-to-specify-common-plplication-data-folder-for-log4net/1889591#1889591 –

6

यह एक पुराना मुद्दा अब के अनुसार करने के लिए equivalente है, लेकिन के रूप में सोरेन APPDATA ने सुझाव दिया: इसके बजाय मैं इस एक का उपयोग करने के लिए किया था निर्देशिका आप जो चाहते हैं उसे करने का एक अच्छा तरीका है, बात यह है: उपयोगकर्ता के व्यक्तिगत एपडाटा को न लें लेकिन "सभी उपयोगकर्ता" APPDATA dir! इस तरह से कोई भी लॉग फ़ाइल तक पहुंचने में सक्षम होगा ;-)

इसके अलावा, मैंने कहीं पढ़ा है कि GrantOnFile पर (बीयू) का उपयोग कुछ सिस्टम के साथ अच्छा काम नहीं कर रहा है (विन 7 x64 अगर मुझे अच्छी तरह याद है), शायद आपको इसके बजाय एसआईडी "(एस -1-5-32-545)" का उपयोग करना चाहिए (यह सभी उपयोगकर्ता एसआईडी है, यह मान प्रत्येक विंडोज ओएस पर स्थिर है)

संबंधित मुद्दे