Câu trả lời:
Nó thực sự phụ thuộc vào cách các biến môi trường của bạn được thiết lập. Ví dụ, nếu bạn đã sử dụng lệnh "SET" trong dòng lệnh, nó chỉ ảnh hưởng đến thể hiện hiện tại. Mặt khác, các lệnh như "SETX" sẽ điều chỉnh vĩnh viễn giá trị của biến môi trường. SETX sẽ đảm bảo rằng tất cả các phiên bản cmd trong tương lai sẽ thấy bản cập nhật. Nó sẽ không ảnh hưởng đến môi trường địa phương.
Nếu biến môi trường được thiết lập bởi một ứng dụng khác và không được cập nhật, thì thường dễ nhất là khởi động lại quá trình "explorer.exe", đăng xuất và đăng nhập lại hoặc khởi động lại. Về cơ bản, bạn chỉ cần nói với explorer để tải lại các biến môi trường. Nếu đó là một ứng dụng mà bạn đã phát triển, chẳng hạn như trình cài đặt, hãy đảm bảo rằng nó đang gọi SendMessage (HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)"Environment");
. Điều này báo cho explorer để làm mới bộ đệm của các biến môi trường.
Điều này rất quan trọng vì các ứng dụng được khởi chạy bởi một quá trình khác kế thừa các biến môi trường từ cha mẹ của chúng. Như vậy, nếu bạn khởi chạy cmd từ explorer, bạn sẽ nhận được các biến khi explorer nhìn thấy chúng.
Thiết lập và truy xuất lại môi trường chính trong Windows là điều mà người BartPE đã dành nhiều thời gian cho nó.
Môi trường chính được lưu trữ trong sổ đăng ký, nhưng trình thám hiểm shell đọc điều này đến địa chỉ của nó. Từ đây, nó được gửi đến mỗi phiên cmd.exe.
SET chỉ ảnh hưởng đến môi trường cmd. SETX cho phép bạn thay đổi môi trường chính, nhưng cài đặt không được phản ánh trong môi trường cục bộ.
TIÊU DÙNG và 4NT của Frank Westlake có thể tìm nạp các mục từ sổ đăng ký, nhưng không có công tắc nào cho môi trường chính nói riêng.
Các cửa sổ được tải thông thường theo dõi các cài đặt để đăng ký, trong khi các cửa sổ được tải thông qua minint (tức là WinPE) thì không. Vì vậy, thiết lập registry và đọc registry hoạt động trong cả hai, nhưng chỉ các cửa sổ khởi động bình thường mới thấy các cài đặt và chuyển chúng vào một chương trình exd cmd mới.
điều đó phụ thuộc vào nơi bạn "đặt" các biến môi trường của mình. tương đương với ví dụ bash của bạn sẽ như thế này:
tập tin: env.bat
set FOO=bar
và bây giờ bạn làm mới nó
% call env.bat
nhưng tôi nghĩ rằng bạn đã thực hiện nó thông qua hộp thoại windows-system-settings-(hoặc bất kể tên của nó là gì). kết quả của việc này là bạn đã thực sự thay đổi sổ đăng ký. các cài đặt đăng ký này được ánh xạ vào quy trình khi bạn khởi chạy một quy trình mới.
vì vậy, bạn có thể bắt đầu một quy trình mới (cmd.exe trong trường hợp của bạn) HOẶC bạn có thể đọc các khóa đăng ký phản ánh những thay đổi bạn muốn. bạn cũng có thể viết một đoạn script .bat / .cmd lấy môi trường từ sổ đăng ký và thay đổi sự phù hợp với môi trường hiện tại (nếu tâm trạng tấn công tôi, tôi sẽ làm điều này sau bữa trưa).
Điều này bây giờ dễ dàng hơn đáng kể, không cần phải khởi động lại vỏ:
RefreshEnv.bat
RefreshEnv.bat
Quan sát rằng các biến môi trường mới được thêm vào của bạn có sẵn trong bất kỳ trường hợp Command / Powershell mới nào, xác minh làm mới.