रोकें विंडोज सिस्टम% PATH% उपयोगकर्ता% PATH से प्रीपेन्ड होने से?


20

मुझे पता है कि सिस्टम या उपयोगकर्ता विशिष्ट वातावरण चर कैसे सेट करें:

विंडोज पर्यावरण चर

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

अर्थात्, मेरे पास है

(प्रणाली) PATH=C:\Windows\System32;C:\Program Files\Foo\bin;...

और (USER) PATH=C:\Program Files\Bar\bin(ध्यान दें कि %PATH%इस मूल्य में नहीं है)

तब इस उपयोगकर्ता के लिए परिणामी पर्यावरण चर होगा:

(प्रभावी) PATH=C:\Windows\System32;C:\Program Files\Foo\bin;...;C:\Program Files\Bar\bin

हालाँकि, मैं चाहूंगा कि बहुत ही विशिष्ट OS उपयोगकर्ता खाते के लिए PATH परिवेश चर bar\binके अंत में PATH की शुरुआत में निर्देशिका होनी चाहिए ।

क्या PATHकिसी उपयोगकर्ता के वैरिएबल को पूरी तरह से ओवरराइड करने के बजाय सिस्टम PATHवैरिएबल में अपग्रेड करने के बजाय किसी यूजर के वैरिएबल को ओवरराइड करने का उचित तरीका है ?

नोट: जाहिर है, एक बैच फ़ाइल से, यह सब कुछ मायने नहीं रखता है क्योंकि आप env.vars को अपनी पसंद के अनुसार सेट और ट्विक कर सकते हैं।


केवल USER अनुभाग की उपेक्षा क्यों न करें। USER पाथ वैरिएबल को डिलीट करें और सब कुछ सिस्टम पाथ वैरिएबल में डालें, जिस क्रम में आप यह चाहते हैं।
केविन फेगन

2
@ केविनफैगन: ठीक है, क्योंकि मशीन पर कुछ सेवाएं उस सिस्टम पर निर्भर करती हैं PATHऔर यह विशिष्ट उपयोगकर्ता खाता बेहतर रूप से एक अलग सेवा प्रदान करेगा PATH। मुझे पता है कि बहुत सारे वर्कअराउंड हैं, लेकिन मुझे दिलचस्पी थी कि क्या इसे प्राप्त करने के लिए ओएस / रजिस्ट्री स्तर पर बॉक्स से बाहर कुछ भी है या नहीं।
मार्टिन

जवाबों:


3

यदि आपको केवल कमांड प्रॉम्प्ट सत्र के लिए काम करने की आवश्यकता है, तो एक प्रोफ़ाइल / इनिट बैच फ़ाइल बनाएं और इसे रजिस्ट्री में कॉन्फ़िगर करें , प्रति /programming/17404165/how-to-run-a-command-on -कम-प्रांप्ट-स्टार्टअप-इन-विंडो । उदाहरण के लिए,

reg add "HKCU\Software\Microsoft\Command Processor" /v AutoRun ^
  /t REG_EXPAND_SZ /d "%"USERPROFILE"%\init.cmd" /f

तो बस उस बैच फ़ाइल में पथ में संशोधन करें। उदाहरण के लिए,

SET USER_PATH=c:\whatever
SET PATH=%USER_PATH%;%PATH%

0

मेरे पास एक ही समस्या थी और यह मेरे लिए काम कर रहा था:

आप "उपयोगकर्ता पथ चर" के माध्यम से प्राप्त कर सकते हैं:

>reg query HKCU\Environment /v path

आउटपुट (मेरी मशीन पर) है:

HKEY_CURRENT_USER\Environment
    path    REG_SZ    C:\Program Files (x86)\GnuWin32\bin

लेकिन फिर आपको इसे पार्स करना होगा और संबंधित भाग का उपयोग करना होगा।

मैं यहाँ समाधान पढ़ा यहाँ और मेरे मशीन पर परीक्षण किया गया।


-1

मैं सिस्टम चर को अनदेखा करना नहीं जानता, लेकिन मुझे पता है कि यदि आप सत्र चर ( SETकमांड के माध्यम से ) का उपयोग करते हैं, तो वे अन्य चर पर वरीयता लेते हैं। तो आप SET PATH=C:\Program Files\Bar\binनिर्देश का उपयोग कर सकते हैं और आपका वांछित मार्ग चर का पहला भाग होगा।

यहाँ एक मान्य संदर्भ है, और मैं यहाँ उस पृष्ठ से एक साधारण अवधि की रिपोर्ट करता हूँ:

यदि समान नाम वाले चर को उपयोगकर्ता और मशीन पर्यावरण चर दोनों के रूप में संग्रहीत किया जाता है, तो उपयोगकर्ता चर पूर्ववर्तीता लेगा। यदि एक सत्र चर बनाया जाता है जो किसी भी उपयोगकर्ता और / या मशीन पर्यावरण चर पर एक ही नाम से पूर्वता लेगा।


यह एक उपयोगी संदर्भ है, लेकिन आपने जो पहला वाक्य उद्धृत किया है, वह एक अतिरंजना है। PATHचर एक अपवाद (विशेष मामला) है - उपयोगकर्ता चर है नहीं प्रणाली चर से प्राथमिकता दी जाती। तथ्य यह है कि एक "सत्र चर" उपयोगकर्ता और सिस्टम दोनों पर पूर्ववर्ती चर लेगा, यह सत्य है, लेकिन आप किसी उपयोगकर्ता के लिए सत्र चर स्वचालित रूप से कैसे सेट करते हैं ?  G-Wiz ने उस प्रश्न का उत्तर दिया है , और, AFAICS, आपने उस उत्तर में कुछ भी नहीं जोड़ा है।
स्कॉट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.