2009-07-21 35 views
8

Tôi đã gặp khó khăn khi đưa người dùng của mình đặt biến môi trường PATH theo cách thủ công, tôi đang tìm cách tự động thực hiện điều này. Một tập tin batch sẽ là thích hợp hơn, vì điều đó sẽ yêu cầu họ chạy nó (với một cảnh báo về những gì họ đang làm), nhưng một bổ sung cho setup.py cũng được chấp nhận.Thay đổi vĩnh viễn biến môi trường% PATH% của người dùng qua lô hoặc Python

Thông tin khác: SET chỉ ảnh hưởng đến vỏ hiện tại và phái sinh; các giá trị vĩnh viễn dường như được lưu trữ trong Registry một nơi nào đó (một nơi mà tôi không dám bước đi).

Trả lời

5

Như David đã nói, có công cụ SETX mà bạn có thể lấy từ Windows Resource Kit.

Tuy nhiên, tôi đã thấy rằng SETX gặp sự cố (như gặp sự cố) đôi khi. Tôi đã không tìm ra chính xác vấn đề là gì, nhưng tôi nghi ngờ đó là vấn đề kích thước (ví dụ nếu bạn cố gắng đặt biến - trong trường hợp của tôi là PATH — với giá trị quá lớn, ví dụ> 1024 số lẻ nhân vật).

Tôi đã tìm thấy hai tệp thực thi khác có thể thực hiện tương tự. Yêu thích của tôi đặc biệt là SetEnv bởi Jonathan “Darka” Wilkes qua tại CodeProject. Ông đã làm cho nó khá hữu ích, với chức năng tốt, và nó tương thích với tất cả các hệ thống Windows - tôi cũng đề xuất một số tính năng. :)

Một tùy chọn khác, nếu bạn muốn, hãy thực hiện thủ công (thực sự thêm mục vào sổ đăng ký và sau đó phát sóng WM_SETTINGCHANGE đến cửa sổ cấp cao nhất hoặc khởi động lại trình bao/khởi động lại) . Tuy nhiên tôi nghĩ rằng SetEnv trong một tập tin BATCH là đặt cược tốt nhất của bạn. ;)

+0

Bạn vẫn phải yêu cầu họ cài đặt SetEnv, nhưng đó là một thủ tục tương đối không đau. Đây là cách tôi làm. –

+0

Vâng, bạn không thực sự phải * cài đặt * SetEnv, bạn chỉ có thể thực thi trong cùng thư mục với tệp BATCH thực hiện cài đặt. – Synetech

+0

Cuối cùng tôi cũng đã tìm cách làm việc này. Cài đặt SetEnv trong rượu vang, kéo ra thực thi và ném nó vào thư mục chương trình của tôi, đã viết một tập tin thực thi để sử dụng nó, và nước thịt của tất cả mọi thứ. –

2

Từ này website:

Sử dụng add-on cụ Setx.exe

Nó không phải là một phần của Windows tiêu chuẩn XP cài đặt nhưng một công cụ dòng lệnh gọi setx.exe là được bao gồm trong các công cụ Hỗ trợ Windows XP Gói Dịch vụ 2 Công cụ. Công cụ này mở rộng lệnh thiết lập để thay đổi vĩnh viễn trong các biến môi trường có thể được thực hiện. Ví dụ, để thêm một thư mục C: \ New Folder để con đường, lệnh sẽ được

setx path "%PATH%;C:\New Folder" 

này nghe có vẻ như nó sẽ làm việc cho những gì bạn đang muốn làm.

5

Vì vậy, vì tôi gặp khó khăn khi đưa người dùng của mình đặt PATH theo cách thủ công, tôi đang tìm cách tự động thực hiện việc này.

Các HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths (cũng như HKEY_CURRENT_USER\...) khóa registry cho phép bạn đính kèm một con đường ứng dụng cụ thể tên thực thi của bạn.

Bất cứ khi nào một thực thi của tên được được khởi động, ứng dụng đường dẫn cụ thể được thêm vào biến môi trường PATH của thực thi đó.

2

Tôi vừa chạy qua câu hỏi này và không thích bất kỳ tùy chọn nào có sẵn để tôi quyết định viết giải pháp của riêng mình.

(SetEnv sẽ tốt, nhưng tôi không thích giấy phép không tự do và tôi luôn không muốn gọi một tiến trình con ... Tôi không ngại gọi SetEnv là một tiến trình con nhưng, theo Wikipedia, giấy phép nó sử dụng không phải là tự do bởi vì nó có một số loại "không có ác" khoản và loại hạn chế pháp lý-mơ hồ luôn luôn là một đánh dấu thời gian bom theo ý kiến ​​của tôi.)

Đây là một chút MIT-licensed Python class để ẩn đi công việc sửa đổi registry trực tiếp và gửi WM_SETTINGCHANGE. (Tốt để sử dụng trong setup.py)

Các vấn đề liên quan