2012-03-19 19 views
8

मुझे सी # का उपयोग कर पर्यावरण चर सेट करने में समस्या है।सी # सेट पर्यावरण परिवर्तनीय

मुझे कुछ परिस्थितियों में कुछ पर्यावरण चर को संशोधित करने की आवश्यकता है। उदाहरण के लिए मुझे एनडीएसआरसी वैरिएबल को संशोधित करने की आवश्यकता है।

मैं का उपयोग करें:

Environment.SetEnvironmentVariable("MY_VARIABLE", "value", EnvironmentVariableTarget.Machine); 

यह ठीक काम करता है।

अगला मैं कुछ स्क्रिप्ट चुड़ैल चर का उपयोग करता हूं। और अब एक समस्या है, क्योंकि स्क्रिप्ट चर को नहीं देखती है।

उदाहरण: सेट पथ चर (अंत में एक निर्देशिका जोड़ने)

string path = Environment.GetEnvironmentVariable("Path", EnvironmentVariableTarget.Machine) + ";c:\\"; 
Environment.SetEnvironmentVariable("Path", path, EnvironmentVariableTarget.Machine); 

ओपन खिड़कियां कमांड लाइन का उपयोग कर (आरंभ> रन> cmd.exe)।

कमांड लाइन प्रकार cmd

प्रणाली cmd.exe नहीं मिल सकता है में: 'cmd' एक आंतरिक या बाहरी कमांड, प्रचलित कार्यक्रम या बैच फ़ाइल के रूप में मान्यता प्राप्त नहीं है।

यदि आप विंडोज सेटिंग्स की जांच करते हैं -> पर्यावरण चर, पथ सही ढंग से नए मान पर सेट है। यदि आप खोले गए कमांड प्रॉम्प्ट में चेक करते हैं, तो यह भी सेट है।

उत्तर

4

दुर्भाग्य से, पर्यावरण चर को रीफ्रेश किए जाने से पहले आपको अपनी प्रक्रिया को पुनरारंभ करना होगा। यह MSDN post देखें।

+1

हैलो। यह कोई समस्या नहीं है। मैं पर्यावरण का उपयोग करता हूं .etEnvironmentVariable ("MY_VARIABLE", "मान", EnvironmentVariableTarget.Process); मेरी प्रक्रिया के लिए पर्यावरण चर सेट करने के लिए, और यह काम करता है। समस्या यह है कि मेरी प्रक्रिया के बाहर, भले ही मैं परिवर्तनीय चर देखता हूं, फिर भी कोई अन्य प्रक्रिया इसे नहीं देखती है। उदाहरण में मैं पथ पथ में कुछ जोड़ता हूं। उसके बाद, सिस्टम पथ चर नहीं देखता है। –

1

यह डिज़ाइन द्वारा है कि जब प्रक्रिया शुरू होती है तो वेरिएबल्स विरासत में प्राप्त होते हैं, और उसके बाद तय रहते हैं।

हालांकि कोई कारण नहीं है कि आप समय-समय पर प्रासंगिक रजिस्ट्री कुंजियों को पढ़ने और उस प्रक्रिया से मैन्युअल रूप से अपनी प्रक्रिया 'पर्यावरण चर अपडेट करने के लिए क्यों नहीं जा सकते हैं। वास्तव में, यह the right thing to do है यदि आप अद्यतित मूल्यों के बाद हैं।

असल में, रजिस्ट्री पर्यावरण चर के लिए टेम्पलेट स्टोर करता है, और यही वह है जिसे आप "विंडोज सेटिंग्स -> पर्यावरण चर" के माध्यम से संपादित करते हैं। जब आप ऐसा करते हैं, तो विंडोज सभी इच्छुक पार्टियों को एक संदेश प्रसारित करता है। ऐसी कोई भी पार्टियां फिर रजिस्ट्री से पर्यावरण चर की अपनी प्रतिलिपि बना सकती हैं।

मुझे किसी भी तैयार किए गए फ़ंक्शन के बारे में पता नहीं है जिसे आप केवल इस पुन: निर्माण करने के लिए बुला सकते हैं, इसलिए आपको शायद अपना खुद का लिखना होगा।

+0

'पर्यावरण .etEnvironmentVariable' –

+0

' के साथ env चर सेट करने में समस्या है मुझे एक वर्कअराउंड मिला: कोड बनाने की प्रक्रिया (cmd.exe) से। इस प्रक्रिया में "setx/M वैरिएबल वैल्यू" कमांड निष्पादित करें। यह वैश्विक एनवी चर को संशोधित करेगा और समस्या का कारण नहीं बन जाएगा। –

+0

@ user641426: ग्लोबल * कुछ भी * समय के साथ एक समस्या का कारण बनता है। –

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