आप रूबी ENV वस्तु के माध्यम से वातावरण चर का उपयोग कर सकते हैं:
i = ENV['ABC']; # nil
ENV['ABC'] = '123';
i = ENV['ABC']; # '123'
बुरी खबर है, MSDN says के रूप में, एक प्रक्रिया सीधे किसी अन्य प्रक्रिया है कि है कि इस प्रक्रिया का एक बच्चा नहीं है की वातावरण चर कभी नहीं बदल सकते हैं। तो जब स्क्रिप्ट निकलती है, तो आप अपने द्वारा किए गए सभी परिवर्तनों को खो देते हैं।
अच्छी खबर रजिस्ट्री में क्या माइक्रोसॉफ्ट विंडोज स्टोर वातावरण चर है और यह व्यवस्था करने के लिए propagate वातावरण चर करना संभव है।
require 'win32/registry.rb'
Win32::Registry::HKEY_CURRENT_USER.open('Environment', Win32::Registry::KEY_WRITE) do |reg|
reg['ABC'] = '123'
end
प्रलेखन यह भी कहते हैं कि आप लॉग ऑफ और वापस पर लॉग ऑन करें या आवेदन करने के लिए देखा परिवर्तन करने के लिए एक WM_SETTINGCHANGE संदेश प्रसारित करना चाहिए: यह उपयोगकर्ता वातावरण चर को संशोधित करने के लिए एक तरीका है।
require 'Win32API'
SendMessageTimeout = Win32API.new('user32', 'SendMessageTimeout', 'LLLPLLP', 'L')
HWND_BROADCAST = 0xffff
WM_SETTINGCHANGE = 0x001A
SMTO_ABORTIFHUNG = 2
result = 0
SendMessageTimeout.call(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 'Environment', SMTO_ABORTIFHUNG, 5000, result)
स्रोत
2008-10-10 07:41:22