Ngăn hệ thống Windows% PATH% được chuẩn bị cho người dùng% PATH?


18

Tôi biết cách đặt các biến môi trường cụ thể của hệ thống hoặc người dùng:

Biến môi trường Windows

Bây giờ, vấn đề là PATHbiến được xử lý sao cho giá trị bạn nhập cho người dùng PATH sẽ được tự động gắn vào hệ thống PATH và đó sẽ là biến PATH hiệu quả.

Đó là, tôi có

(HỆ THỐNG) PATH=C:\Windows\System32;C:\Program Files\Foo\bin;...

và (USER) PATH=C:\Program Files\Bar\bin(lưu ý rằng không có %PATH%giá trị này)

thì biến môi trường kết quả cho người dùng này sẽ là:

(có hiệu lực) PATH=C:\Windows\System32;C:\Program Files\Foo\bin;...;C:\Program Files\Bar\bin

Tuy nhiên, tôi muốn thay thế cho một tài khoản người dùng HĐH rất cụ thể, biến môi trường PATH nên có bar\binthư mục ở đầu PATH thay vì ở cuối.

Có cách nào thích hợp để bảo các cửa sổ ghi đè hoàn toàn PATHbiến của người dùng bằng giá trị cho người dùng đó thay vì gắn nó vào PATHbiến hệ thống không?

Lưu ý: Rõ ràng, từ một tệp bó, tất cả điều này không quan trọng vì bạn có thể đặt và điều chỉnh env.vars theo ý muốn.


Tại sao không bỏ qua phần USER. Xóa biến Đường dẫn USER và đặt mọi thứ vào biến Đường dẫn HỆ THỐNG, theo thứ tự bạn muốn.
Kevin Fegan

1
@KevinFegan: Vâng, bởi vì một số dịch vụ trên máy phụ thuộc vào HỆ THỐNG đóPATH và tài khoản người dùng cụ thể này sẽ được phục vụ tốt hơn bằng cách có một dịch vụ khác PATH. Tôi biết rằng có rất nhiều cách giải quyết, nhưng tôi đã quan tâm liệu có bất cứ điều gì ngoài hộp / ở cấp độ hệ điều hành / đăng ký để đạt được điều này.
Martin

Câu trả lời:


3

Nếu bạn chỉ cần điều này để làm việc cho các phiên nhắc lệnh, hãy tạo tệp bó hồ sơ / init và định cấu hình nó trong sổ đăng ký, theo /programming/17404165/how-to-run-a-command-on -command-prompt-startup-in-windows . Ví dụ,

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

Sau đó, chỉ cần thực hiện sửa đổi cho PATH trong tệp bó đó. Ví dụ,

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

0

Tôi đã có cùng một vấn đề và điều này làm việc cho tôi:

Bạn có thể nhận được "biến đường dẫn người dùng" thông qua:

>reg query HKCU\Environment /v path

Đầu ra (trên máy của tôi) là:

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

Nhưng sau đó bạn phải phân tích cú pháp này và sử dụng phần có liên quan.

Tôi đọc giải pháp ở đây và thử nghiệm trên máy của tôi.


-1

Tôi không biết cách bỏ qua biến hệ thống, nhưng tôi biết rằng nếu bạn sử dụng biến phiên (thông qua SETlệnh), chúng sẽ được ưu tiên hơn các biến khác. Vì vậy, bạn có thể sử dụng SET PATH=C:\Program Files\Bar\binhướng dẫn và đường dẫn mong muốn của bạn sẽ là phần đầu tiên của biến.

Đây là một tài liệu tham khảo hợp lệ và tôi báo cáo ở đây một khoảng thời gian đơn giản từ trang đó:

Nếu các biến có cùng tên được lưu trữ dưới dạng cả hai biến Người dùng và Môi trường Máy, biến người dùng sẽ được ưu tiên. Nếu một biến Phiên được tạo sẽ được ưu tiên hơn bất kỳ biến Người dùng và / hoặc Môi trường máy nào có cùng tên.


Đó là một tài liệu tham khảo hữu ích, nhưng câu đầu tiên mà bạn trích dẫn là một sự tăng trưởng quá mức. Các PATHbiến là một ngoại lệ (trường hợp đặc biệt) - biến người dùng nào không được ưu tiên hơn các biến hệ thống. Thực tế là một “phiên biến” sẽ được ưu tiên hơn cả người dùng và hệ thống biến cài đặt trước là đúng, nhưng làm thế nào để bạn thiết lập một biến phiên tự động cho người dùng?  G-Wiz đã trả lời câu hỏi đó và, AFAICS, bạn chưa thêm bất cứ điều gì vào câu trả lời đó.
Scott
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.