मैं एक विंडोज सेवा लिख रहा हूं जिसे सेवा के रीबूट/रीस्टार्ट में कुछ डेटा जारी रखने की आवश्यकता है। वर्तमान में मैं Application.UserAppDataPath
द्वारा लौटाई गई निर्देशिका में फ़ाइलों को लिख रहा हूं, लेकिन ऐसा लगता है कि मुझे लगातार जवाब नहीं दिया जा रहा है। डेटा लिखने के लिए मुझे सही जगह कैसे निर्धारित करनी चाहिए?फाइल सिस्टम पर एक विंडोज़ सेवा को अपना डेटा जारी रखना चाहिए?
उत्तर
यह निर्भर करता है कि आपकी सेवा सिस्टम खाते या किसी विशिष्ट उपयोगकर्ता खाते के साथ चल रही है या नहीं।
सिस्टम खाते। CommonApplicationData फ़ोल्डर में फ़ाइलों को स्टोर:
स्ट्रिंग pathForSystem = Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData);
उपयोगकर्ता खाता। एप्लिकेशनडाटा फ़ोल्डर में फ़ाइलों को स्टोर करें:
स्ट्रिंग पथफॉरयूसर = पर्यावरण। गेटफोल्डरपाथ (पर्यावरण। विशेष फ़ोल्डर। अनुप्रयोग डेटा);
यदि आप इसे संगत होना चाहते हैं (यानी उपयोगकर्ता अज्ञेयवादी) Application.CommonAppDataPath
आज़माएं।
मैं सहमत हूं। यदि सेवा लोकलसिस्टम के रूप में चल रही है तो उपयोगकर्ता-स्वतंत्र डेटा पथ में डेटा स्टोर करना समझ में आता है। –
एप्लिकेशन। कॉमोन ऐपडेटापाथ System.Windows.Forms.dll में शामिल है। क्या मुझे वास्तव में विंडोज सेवा से संदर्भ विनफॉर्म की आवश्यकता है? – qub1n
यदि यह एक नेट सेवा मैं तुम्हें इस्तेमाल कर सकते हैं IsolatedStorage
प्रत्येक सेवा कुछ उपयोगकर्ता के विशेषाधिकारों के साथ चलाया जाता लगता है। डेटा को उपयोगकर्ता के एप्लिकेशनडेटा में संग्रहीत नहीं किया जाना चाहिए (मुझे लगता है कि आप इसे एप्लिकेशन.यूसर ऐपडेटाथ के रूप में संदर्भित करते हैं)? इस स्थान के साथ क्या समस्या है? –
सेवा स्थानीय सिस्टम के रूप में चल रही है। हालांकि, स्थानीय सिस्टम खाते में "दस्तावेज़ और सेटिंग्स" में अपनी निर्देशिका नहीं है; मेरे परीक्षणों में यह लोकल सेवा निर्देशिका का उपयोग करता है, लेकिन हमें रिपोर्ट मिल रही है कि सेवा कभी-कभी डेटा को एक ही स्थान पर संग्रहीत करती है और फिर इसे दूसरे में ढूंढती है। रजिस्ट्री में ऐसा लगता है कि लोकलसिस्टम का ऐपडाटा पथ% USERPROFILE% \ अनुप्रयोग डेटा है, इसलिए ऐसा लगता है कि% USERPROFILE% हमें एक सतत उत्तर नहीं दे रहा है। –