2010-01-23 15 views
17
  • विंडोज 7.
  • यह मेरी अपनी मशीन के लिए है, इसलिए इससे कोई फर्क नहीं पड़ता कि इसे व्यवस्थापक अधिकारों या कुछ की आवश्यकता है या नहीं।
  • पसंदीदा रूप से पायथन या .NET में, लेकिन यदि आवश्यक हो तो मैं Win32 (C/C++) प्रोग्रामिंग का थोड़ा सा सीख सकता हूं।

उत्तर

20

आप स्थायी रूप से वातावरण चर सेट करना चाहते हैं, तो आप रजिस्ट्री में नया मान सम्मिलित कर सकते हैं। पथ चर में

Set WshShell = WScript.CreateObject("WScript.Shell") 
strReg = "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path" 
strSetting = WshShell.RegRead(strReg) 
strNewSetting = strSetting&";c\test" 
WshShell.RegWrite strReg, strNewSetting 

इसलिए, यदि आप अजगर या अन्य भाषाओं का उपयोग करें, अगर आप अपनी भाषा के अपने एपीआई/मॉड्यूल का उपयोग कर पढ़ना और लिखना एक ही बात कर सकते हैं: VBScript साथ जैसे, पथ "\ परीक्षण ग" जोड़ रजिस्ट्री

+1

बस इसे .vbs के रूप में सहेजें और इसे चलाएं। –

2

इस तरह पर्यावरण वर्ग का उपयोग करें:

Environment.SetEnvironmentVariable("foo", "bar"); 
+0

मैं उल्लेख करना भूल गया, क्या यह केवल कार्यक्रम की अवधि के लिए है या यह स्थायी है? – Javier

+0

यह केवल वर्तमान कार्यक्रम पर्यावरण को प्रभावित करेगा। सिस्टम व्यापक परिवर्तन रजिस्ट्री में हैं (ghostdog का जवाब देखें) और परिवर्तन करने के बाद कार्यक्रम को फिर से शुरू करने की आवश्यकता है। – Joshua

-3

प्रोग्राम चरम रूप से पर्यावरण चर को संशोधित करना केवल कार्यक्रम की अवधि के लिए है। वास्तव में पर्यावरण प्रणाली को व्यापक रूप से संशोधित करने और इसे वहां प्रभावी बनाने के बारे में नहीं सुना है। मुझे नहीं लगता कि ऐसा किया जा सकता है, जिसके लिए विशेषाधिकार प्राप्त स्तर पर चारों ओर पोकिंग की आवश्यकता होगी और संभवतः इसे प्राप्त करने के लिए कोर सिस्टम के साथ गड़बड़ करना होगा।

यूनिक्स के तहत भी, इसे प्राप्त करने के लिए कुछ हैक्स के बावजूद यह नहीं किया जा सकता है। मुझे एमएसडीओएस के _पीएसपी पर्यावरण डेटा संरचना को बदलकर, एमएसडीओएस के तहत पर्यावरण चर को संशोधित करने वाले कोड को याद रखना याद है, लेकिन यह एक एकल कार्य प्रणाली थी और 16 बिट कोई सुरक्षा नहीं थी।

समेकित करने के लिए, मुझे नहीं लगता कि आप ऐसा कर सकते हैं और ऐसा करने के लिए मूर्ख नहीं होगा, ऐसा माना जा सकता है कि यदि सिस्टम प्रयास कर रहा है तो सिस्टम को 'ट्रोजन' या 'वायरस' द्वारा खतरे में पड़ रहा है ऐसा करने के लिए, अकेले नहीं, एक उपयोगकर्ता के रूप में, मैं एक कार्यक्रम के लिए सिस्टम सहमति चर को मेरी सहमति के बिना संशोधित करना पसंद नहीं करूंगा! निश्चित रूप से, एक प्रोग्राम रजिस्ट्री को स्थायी बनाने के लिए लिख सकता है, लेकिन मैं अभी भी जानना चाहूंगा कि इसका उद्देश्य क्या है और क्यों।

+1

एक विधि सेट पर्यावरण चर के लिए [यह] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms682653 (v = vs.85) .aspx) पर एक नज़र डालें। एफयूडी के लिए -1। – ssc

8

सी # में निम्नलिखित एक स्थायी वातावरण चर बनाता है:

Environment.SetEnvironmentVariable("foo", "bar", EnvironmentVariableTarget.Machine); 
+0

क्या यह स्थायी हो जाएगा? – Javier

+1

यह पर्यावरण के उपयोग योग्य लक्ष्य गणना के मूल्य पर निर्भर करता है। Http://msdn.microsoft.com/en-us/library/system.environmentvariabletarget.aspx – kicsit

+0

मेरी डीबगिंग विंडो लटकती है जब मैं "EnvironmentVariableTarget.Machine" –

5

या आप Windows PowerShell स्क्रिप्ट की कोशिश कर सकते; PowerShell डिफ़ॉल्ट रूप से विंडोज 7 पर स्थापित है।

रन PowerShell.exe

PS C:\> [Environment]::SetEnvironmentVariable("TestVariable", "Test value.", "User") 

फिर, उदाहरण के लिए, cmd.exe

Microsoft Windows [Version 6.1.7601] 
Copyright (c) 2009 Microsoft Corporation. All rights reserved. 

C:\>echo %TestVariable% 
Test value. 

C:\> 

या (एक नई में) बाहर PowerShell.exe

PS C:\> echo $ENV:TestVariable 
Test Value. 
PS C:\> 

जांच http://technet.microsoft.com/en-us/library/ff730964.aspx से

+0

में जोड़ता हूं यह वर्णन के अनुसार काम करता है, लेकिन एक डॉस खोल जो पहले से खुला है जब env var सेट होता है तो यह परिवर्तन नहीं लगता है, इसलिए स्पष्ट रूप से, PowerShell वर्णित अनुसार 'WM_SETTINGCHANGE' संदेश प्रसारित नहीं करता है [http://msdn.microsoft.com/en-us/library/ विंडोज़/डेस्कटॉप/ms725497 (v = vs.85) .aspx)। हालांकि अच्छी शुरूआत। – ssc

4

एफ या किसी और के लिए एक त्वरित कमांडलाइन जवाब की तलाश में

SETX विंडोज़ सर्वर पर उपलब्ध है (मूल रूप से मुझे लगता है कि - http://technet.microsoft.com/en-us/library/cc755104.aspx)

इसकी भी Windows 7 और 8 toolkit में उपलब्ध है।

+1

+1 सिम्पलर तो पिछला उत्तर और Win7 परम पर भी काम करता है – daitangio

+0

setx.exe 'पथ' को विस्तारित करने के लिए एक खराब उपकरण नहीं हो सकता है। उपयोगकर्ता और सिस्टम 'पथ' मानों को कभी भी भ्रमित नहीं किया जाना चाहिए, और 'REG_EXPAND_SZ' मान में प्रतिशत चर को बिना किसी अवांछित छोड़ा जाना चाहिए। setx.exe इनमें से कोई भी नहीं कर सकता है। यह क्या कर सकता है एक भयानक गड़बड़ है जिसे पूर्ववत नहीं किया जा सकता है। – eryksun

+0

माइक्रोसॉफ्ट द्वारा प्रदान की गई कमांड लाइन का उपयोग करने के लिए हमें दोष न दें: विवरण: उपयोगकर्ता या सिस्टम पर्यावरण में पर्यावरण चर बनाता है या संशोधित करता है। तर्क, regkeys या फ़ाइल इनपुट के आधार पर चर सेट कर सकते हैं। – user1885834

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