ฉันจะแก้ไขตัวแปรสภาพแวดล้อม PATH ของผู้ใช้โดยไม่ต้องออกจากระบบได้อย่างไร


22

คำถามที่สวยบอกว่ามันทั้งหมด; ฉันมีผู้ใช้ที่ไม่ได้รับอนุญาตให้แก้ไขPATHตัวแปรสภาพแวดล้อมของตนเองและหากจำเป็นต้องแก้ไขด้วยเหตุผลบางอย่างพวกเขาจำเป็นต้องออกจากระบบเพื่อให้ผู้ดูแลระบบสามารถเข้าสู่ระบบและเปลี่ยนPATHสำหรับพวกเขาก่อนที่ผู้ใช้จะกลับมาอีกครั้ง . มันไม่เหมาะ มันสามารถทำได้ในวิธีที่ดีกว่า?


แค่อยากรู้อยากเห็น - แต่คุณป้องกันผู้ใช้จากการเปลี่ยนแปลงสภาพแวดล้อมเริ่มต้นของตัวเองได้อย่างไร คุณเพียงแค่ปฏิเสธให้พวกเขาเข้าถึง My Computer / Properties / Advanced / Environment Variable? พวกเขายังสามารถปรับเปลี่ยน HKCU / Environment ผ่านวิธีการที่หลากหลาย
Cooper


การตั้งค่านโยบายกลุ่ม? แค่ความคิด
Simon Catlin

คำตอบ:


6

คุณสามารถเรียกเชลล์ cmd ที่มีสิทธิ์ผู้ดูแลระบบ (หรือวิธี runas อื่น ๆ ) และใช้เครื่องมือเช่นSETXเพื่อปรับเปลี่ยนพา ธ อย่างถาวร เชลล์ที่มีอยู่และ / หรือโปรแกรมที่กำลังรันอยู่อาจจะใช้พา ธ เก่า แต่เชลล์ / โปรแกรมใหม่ใด ๆ จะใช้การตั้งค่าใหม่


25

สำหรับบัญชีที่ไม่มีสิทธิ์ผู้ดูแลระบบ:

เปิด "บัญชีผู้ใช้" และเลือก "เปลี่ยนตัวแปรสภาพแวดล้อมของฉัน" ( http://support.microsoft.com/kb/931715 )

กล่องโต้ตอบนี้จะแสดงตัวแปรผู้ใช้ปัจจุบันของคุณรวมทั้งตัวแปรระบบ คุณอาจต้องเพิ่มตัวแปร PATH ท้องถิ่นหากคุณยังไม่ได้เพิ่ม

หากต้องการอัปเดตพา ธ ของคุณเพื่อรวมไดเรกทอรี Python 3.3 ให้คลิกใหม่:

ชื่อตัวแปร: PATH ค่าตัวแปร:% PATH%; C: \ Python33

สิ่งนี้จะสร้าง PATH ท้องถิ่นโดยใช้ PATH ของระบบปัจจุบันและเพิ่มเข้าไป


2
ฉันต้องคิดคำตอบนี้ " ฉันมีผู้ใช้ที่ไม่ได้รับอนุญาตให้แก้ไข PATH ของตนเอง ... " และทำอย่างถาวรดีกว่าที่เหลือ ทำได้ดีมาก สงสัยว่าทำไมการคลิกนั้นจาก My Computer ได้รับการป้องกันโดยผู้ดูแลระบบหากไม่ได้ เพียงแค่ปกป้องเขตข้อมูลที่ไม่ใช่ในท้องถิ่นแบบเดียวกับที่ UI ทำเมื่อเข้าถึงด้วยวิธีนี้
ruffin

10

คอมพิวเตอร์ของฉัน / คุณสมบัติ / ขั้นสูง / ตัวแปรสภาพแวดล้อม การเปลี่ยนแปลงจะมีผลทันทียกเว้นหน้าต่างพร้อมรับคำสั่งที่เปิดอยู่ ไม่จำเป็นต้องออกจากระบบและกลับเข้ามาใหม่

หมายเหตุ:หากคุณไม่สามารถเข้าถึงหน้าต่างนั้นได้คุณอาจสามารถรับมันได้จากการรันrundll32 sysdm.cpl,EditEnvironmentVariablesจากหน้าต่าง Run หรือ command-line


ผู้ใช้ทั่วไปในเครือข่ายของฉันไม่สามารถเปลี่ยนตัวแปรสภาพแวดล้อมของตนเองเช่นนี้ได้เว้นแต่ฉันจะสามารถเปิดหน้าจอนั้นด้วย privs ที่ยกระดับผ่าน "เรียกใช้ ... " หรืออะไรทำนองนั้นมันจะไม่ทำงานสำหรับฉัน
ninesided

4

ในพรอมต์คำสั่งคุณสามารถทำได้:

set PATH=C:\somedir;%PATH%

แต่สิ่งนี้จะเปลี่ยนเป็นพรอมต์คำสั่งเท่านั้น (และแอพใด ๆ ที่เปิดใช้จากพรอมต์คำสั่ง) สมมติว่าคุณต้องการให้สิ่งนี้นำไปใช้กับทุกสิ่งที่ผู้ใช้ทำคุณเปลี่ยนตัวแปรสภาพแวดล้อมของผู้ใช้ คลิกขวาที่ My Computer, คุณสมบัติ, Advanced, Environment และใน "ตัวแปรผู้ใช้สำหรับเพิ่มตัวแปร:

PATH = C:\whatever

เมื่อผู้ใช้เข้าสู่ระบบนี้ได้รับการเพิ่มไปยังเส้นทางกว้างของระบบ


ฉันจำเป็นต้องเปลี่ยนลำดับของรายการที่มีอยู่แล้วในเส้นทางเพื่อเพิ่มออกจากตัวแปรของผู้ใช้งานไม่ได้สำหรับฉันในกรณีนี้
ninesided

setxตามที่ @ Berzemus พูดถึงสามารถแก้ไขตัวแปร PATH ของระบบ ( /mสวิตช์) ได้อย่างถาวร
Pat

2

ผู้ใช้สามารถตั้งค่าตัวแปร PATH ที่พรอมต์คำสั่งที่จะแทนที่ตัวแปร PATH ทั้งระบบแม้ว่าผู้ใช้จะไม่มีสิทธิ์ "Administrator" การเปลี่ยนแปลงจะมีผลสำหรับกระบวนการใหม่ที่ผู้ใช้เริ่มจากพรอมต์คำสั่งนั้น (กระบวนการ Explorer ที่มีอยู่และกระบวนการอื่น ๆ ที่ผู้ใช้กำลังทำงานเมื่อมีการเปลี่ยนแปลงจะไม่ "เห็น" การเปลี่ยนแปลง)


1

นอกเหนือจากคำตอบข้างต้นคุณยังสามารถอัปเดตรีจิสตรีได้ (ซึ่งมีข้อดีของการเป็นสคริปต์):

ตัวแปร PATH ถูกเก็บไว้ใน HKEY_CURRENT_USER \ Environment

หากต้องการอ่านเส้นทางปัจจุบัน:

reg query HKEY_CURRENT_USER\Environment /v PATH

หากต้องการผนวกค่า c: \ somedir เข้ากับพา ธ :

reg add HKEY_CURRENT_USER\Environment /v PATH /d "%PATH%;c:\somedir"

โปรดทราบว่ากระบวนการอ่านสภาพแวดล้อมเมื่อมีการเปิดตัวดังนั้นคุณจะต้องเริ่มต้นกระบวนการเพื่อให้ได้รับเส้นทางใหม่

อัปเดต: วิธีอื่นที่ฉันพบคือใช้งาน:

rundll32 sysdm.cpl,EditEnvironmentVariables

อีกครั้งแอปเพล็ตนี้แก้ไขรีจิสทรีและมีผลเช่นเดียวกับข้างต้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.