ป้องกันไม่ให้ Windows System% PATH% ถูกเตรียมไว้ให้กับผู้ใช้% PATH?


19

ฉันรู้วิธีตั้งค่าตัวแปรสภาพแวดล้อมระบบหรือผู้ใช้เฉพาะ:

ตัวแปรสภาพแวดล้อมของ Windows

ตอนนี้ปัญหาคือ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

อย่างไรก็ตามฉันต้องการให้บัญชีผู้ใช้ระบบปฏิบัติการที่เจาะจงมากตัวแปรสภาพแวดล้อม PATH ควรมีbar\binไดเรกทอรีที่จุดเริ่มต้นของ PATH แทนที่จะเป็นที่สิ้นสุด

มีวิธีการที่เหมาะสมที่จะบอกให้ windows แทนที่PATHตัวแปรของผู้ใช้ทั้งหมดด้วยค่าสำหรับผู้ใช้นั้นแทนที่จะผนวกเข้ากับPATHตัวแปรระบบหรือไม่?

หมายเหตุ: แน่นอนจากไฟล์แบทช์ทั้งหมดนี้ไม่สำคัญเท่าที่คุณสามารถตั้งค่าและปรับแต่ง env.vars ตามที่คุณต้องการ


ทำไมไม่มองข้ามส่วนของ USER ลบตัวแปร USER Path และวางทุกอย่างลงในตัวแปร SYSTEM Path ตามลำดับที่คุณต้องการ
Kevin Fegan

1
@KevinFegan: ดีเพราะบริการบางอย่างในเครื่องขึ้นอยู่กับว่าระบบและบัญชีผู้ใช้นี้โดยเฉพาะจะดีกว่าที่จะให้บริการโดยมีที่แตกต่างกันPATH PATHฉันรู้ว่ามีวิธีแก้ไขปัญหามากมาย แต่ฉันสนใจว่ามีอะไรนอกกรอบ / ในระดับระบบปฏิบัติการ / รีจิสตรีเพื่อให้บรรลุเป้าหมายนี้หรือไม่
Martin

คำตอบ:


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

จากนั้นทำการปรับเปลี่ยน PATH ในไฟล์แบตช์นั้น เช่น,

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คำสั่งและเส้นทางที่คุณต้องการจะเป็นส่วนแรกของตัวแปร

นี่คือข้อมูลอ้างอิงที่ถูกต้องและฉันรายงานที่นี่เป็นช่วงเวลาง่ายๆจากหน้านั้น:

หากตัวแปรที่มีชื่อเดียวกันถูกเก็บไว้เป็นทั้งตัวแปรผู้ใช้และสภาพแวดล้อมของเครื่องตัวแปรผู้ใช้จะมีความสำคัญกว่า หากมีการสร้างตัวแปรเซสชันที่จะมีความสำคัญเหนือกว่าตัวแปร User และ / หรือ Machine Environment ใด ๆ ที่มีชื่อเดียวกัน


นั่นเป็นข้อมูลอ้างอิงที่มีประโยชน์ แต่ประโยคแรกที่คุณยกมาคือ PATHตัวแปรเป็นข้อยกเว้น (กรณีพิเศษ) - ตัวแปรผู้ใช้ไม่ได้มีความสำคัญกว่าตัวแปรระบบ ความจริงที่ว่า“ ตัวแปรเซสชัน” จะมีความสำคัญเหนือกว่าทั้งตัวแปรผู้ใช้และระบบที่ตั้งไว้ล่วงหน้าเป็นจริง แต่คุณจะตั้งค่าตัวแปรเซสชันอัตโนมัติสำหรับผู้ใช้อย่างไร  G-Wiz ได้ตอบคำถามนั้นและ AFAICS คุณยังไม่ได้เพิ่มคำตอบใด ๆ
สกอตต์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.