Làm thế nào để bạn thêm một biến môi trường Windows mà không cần khởi động lại?


181

Tôi muốn thêm một biến Môi trường vào máy Windows (máy tính để bàn hoặc máy chủ) và có thể sử dụng nó mà không cần khởi động lại máy đó.

Giả sử bạn có một máy chủ sản xuất chứa nhiều ứng dụng và ứng dụng mới cần một biến Môi trường cụ thể để chạy. Bạn không muốn khởi động lại nó trong khi người dùng được kết nối với các ứng dụng khác của bạn. Bạn có lựa chọn nào? Tôi không thích tùy chọn chờ đợi cho đến khi khởi động lại. Phải có cách tốt hơn. Tôi đang thiếu gì?


2
tôi đã có vấn đề tương tự. Tôi đã đọc ở đâu đó rằng việc giết tiến trình explorer.exe sẽ cập nhật các biến và nó đã hoạt động. Sau đó, tôi phải chạy thám hiểm từ trình quản lý tác vụ.
dùng19694

1
Bạn phải đóng dấu nhắc lệnh và mở lại nó, để các biến đường dẫn của bạn cập nhật. Các biến được tải khi cmd bắt đầu.
NiLInfinite

Câu trả lời:


162

Các thay đổi đối với các biến môi trường sẽ có hiệu lực ngay lập tức, nếu bạn thực hiện thay đổi thông qua hộp thoại Thuộc tính chính cho máy tính được đề cập (đi tới Máy tính của tôi | Thuộc tính | Nâng cao | Biến môi trường). Sau khi các thay đổi được lưu, Explorer phát WM_SETTINGCHANGEthông báo tới tất cả các cửa sổ để thông báo cho họ về sự thay đổi. Bất kỳ chương trình nào được sinh ra thông qua Explorer sau này sẽ nhận được môi trường cập nhật, mặc dù các chương trình đã chạy sẽ không, trừ khi chúng xử lý thông báo thay đổi cài đặt.

Tôi không thể nói từ mô tả vấn đề của bạn về vấn đề cụ thể mà bạn gặp phải với vấn đề này. Bạn có thể cho chúng tôi biết thêm về kịch bản cụ thể không hoạt động?

Bài viết KB này cũng có thể được sử dụng: Cách truyền bá các biến môi trường cho hệ thống


2
Ok, tôi đoán tôi đã thấy hành vi này trên một dịch vụ đang chạy hoặc một cái gì đó. Tôi đã thêm một biến môi trường mới bằng cách sử dụng phương pháp được mô tả ở trên. Sau đó, tôi đã có thể thấy giá trị sau khi mở dấu nhắc lệnh mới và sử dụng lệnh "echo% <myvar>%. Cảm ơn cả hai vì câu trả lời của bạn.
Chad Braun-Duin

5
Đối với người dùng PowerShell, đoạn mã này có thể hữu ích: poshcode.org/2049
Anders Zommarin

8
Nếu sử dụng cmd, bạn cần khởi động lại nó nếu thay đổi biến env
Neil McGuigan

4
Chỉ cần cài đặt Scala trên PC của tôi nhưng PATH không cập nhật; có lẽ MSI đã không phát đi thông điệp WM_SETTINGCHANGE. Tôi đã thêm một biến HỆ THỐNG giả, tức là CHANGE_TO_UPDATE = z, mà tôi cập nhật để kích hoạt thông điệp WM_SETTINGCHANGE - vấn đề đã được giải quyết
Darren Giám mục

3
404 cho liên kết :-(
Samoth

63
  1. Trong một dấu nhắc lệnh: runas /user:yourusername@yourdomain cmd
  2. Nó sẽ mở ra một dấu nhắc cmd mới, sau đó gõ: taskkill /f /im explorer.exe
  3. Sau đó gõ: explorer.exe

Bây giờ sau khi đóng tất cả các dấu nhắc lệnh, bạn sẽ thấy PATHbiến đã được cập nhật thực sự.

Tất cả các dấu nhắc lệnh phải được đóng lại. Mở lại một dấu nhắc lệnh mới, nhập đường dẫn và bạn sẽ thấy dữ liệu mới.


6
Trong số tất cả các câu trả lời trên trang này, đây là người duy nhất thực sự làm việc cho tôi. Cảm ơn bạn!!
coredumperror

2
Điều này làm việc cho tôi. Tôi nghĩ vấn đề là nếu bạn chạy cmd thông qua explorer (để tiết kiệm bạn phải gõ theo những con đường dài) thì explorer không bao giờ bị đóng, ngay cả khi bạn đóng tất cả các cửa sổ explorer. Cảm ơn giải pháp :)
Steve Mc

Đã làm cho tôi. Bạn cũng có thể chỉ cần sử dụng Trình quản lý tác vụ để tiêu diệt các tác vụ thám hiểm và khởi động lại nó (Tệp> Chạy tác vụ mới).
adabyron

7
Ừm Xin đừng giết windows explorer trừ khi một trong các quy trình của nó được treo. Thay vào đó, hãy mở hộp thoại tắt máy và hủy nó trong khi giữ ctrl+alt+shift. Điều đó sẽ thoát khỏi cửa sổ explorer. Trong Vista +, hộp thoại tắt máy khó tìm hơn (nhưng vẫn hiện diện, ít nhất là qua 7 (không chắc chắn về 8 và 10)), vì vậy có một phương pháp thứ hai. ctrl + shift + nhấp chuột phải vào phần trống của menu start và chọn exit explorer. Trong 8 tùy chọn thoát là như nhau, nhưng bạn sử dụng thanh tác vụ chứ không phải menu bắt đầu.
Kevin Cathcart

1
+1 Điều này hoạt động như một cơ duyên trên Windows 7. FYI, tôi chỉ cần sử dụng CTRL + ALT + SHIFT và từ Trình quản lý tác vụ Windows, tôi đã giết tất cả quy trình explorer.exe và sau đó khởi động lại bằng cách nhấn nút Tác vụ mới .
Marco Demaio

19

Một lưu ý là nhiều chương trình có được các biến môi trường khi chúng khởi động lần đầu tiên, vì vậy trong khi các cửa sổ có thể không cần khởi động lại, một số chương trình có thể trước khi chúng có thể sử dụng các biến mới. Một ví dụ điển hình cho việc này là phải mở một cửa sổ nhắc lệnh mới sau khi thêm PATH (vâng, tôi đã bị vấp bởi điều này).


3
Vấn đề này ảnh hưởng đến TẤT CẢ DỊCH VỤ, ngay cả một dịch vụ được khởi động lại sẽ không thấy các biến môi trường mới.
gimel

1
Bạn có chắc chắn không phải vì chia sẻ quy trình svchost không?
Mark Sowul

16

Mặc dù tôi không đủ tiếng tăm để bình luận về câu trả lời được bình chọn cao nhất cho câu hỏi này, tôi muốn nói rằng nó không chính xác. Tôi biết điều này bởi vì bất kể cách giải quyết nào tôi đã cố gắng trong bài đăng này, không có gì thực sự hiệu quả.

Các bài viết liên quan đến kb trong câu trả lời rằng thực sự khẳng định rằng:

Tuy nhiên, lưu ý rằng sửa đổi các biến môi trường không dẫn đến thay đổi ngay lập tức. Ví dụ: nếu bạn bắt đầu một Dấu nhắc lệnh khác sau khi thực hiện các thay đổi, các biến môi trường sẽ phản ánh các giá trị trước đó (không phải hiện tại). Các thay đổi không có hiệu lực cho đến khi bạn đăng xuất và sau đó đăng nhập lại.

Phần về các biến môi trường đặt lại các giá trị trước đó sau khi tải lại dấu nhắc lệnh chính xác là những gì tôi đã trải nghiệm trong Windows Server 2008.

Bài báo tiếp tục nói:

Để thực hiện những thay đổi này mà không cần phải đăng xuất, hãy phát thông báo WM_SettINGCHANGE tới tất cả các cửa sổ trong hệ thống, để mọi ứng dụng quan tâm (như Windows Explorer, Trình quản lý chương trình, Trình quản lý tác vụ, Bảng điều khiển, v.v.) có thể thực hiện cập nhật.

Điều đó không có nghĩa là Explorer phát thông báo WM_SETTINGCHANGE một khi bạn đã thay đổi các biến môi trường hệ thống hoặc nó thực sự hoạt động. Tôi không chắc chắn làm thế nào bạn sẽ làm những gì được đề xuất trong bài viết KB (để tuyên truyền các thay đổi ngay lập tức) từ dấu nhắc lệnh.


1
Đây là câu trả lời duy nhất phù hợp với tôi. Không ai trong số những người khác, kể cả việc giết Explorer theo cách khó hay cách "phù hợp", sẽ tạo ra bất kỳ sự khác biệt nào.
Hashim

4

Làm cho env. biến có sẵn ngay lập tức:

1. Open a shell

Tùy thuộc vào biến môi trường mà bạn muốn thay đổi, hãy làm như sau: (giả sử bạn muốn thêm PATH mới cho ứng dụng được cài đặt gần đây) Vì vậy, tại dấu nhắc shell, hãy nhập như sau:

2. PATH=%PATH%;C:\type\your\new\path\here

kiểm tra xem đường dẫn mới của bạn đã được thêm vào biến môi trường chưa

3. echo %PATH%

Làm xong.

Làm cho biến có sẵn khi khởi động lại

1. Press WinLogoKey+Pause/Break
2. On the left pane, press 'Advanced System Settings'
3. On the 'Advanced' tab, click 'Environment Variables'
4. In 'System Variables' choose the one you want to modify
5. Click Ok

Đã thử nghiệm và hoạt động trên Windows 7/10


3

Một giải pháp khả thi cho các dịch vụ là chạy chúng tạm thời với tư cách là một người dùng khác (ngoài LocalSystem, LocalService, NetworkService). Ví dụ, đối với dịch vụ Apache, công việc này không có vấn đề gì. Để thay đổi tài khoản dịch vụ mở bảng điều khiển services.msc, chọn dịch vụ, nhấp vào thuộc tính dịch vụ và trên tab thứ hai, nhập thông tin đăng nhập cho người dùng. Khởi động lại dịch vụ và các biến môi trường của nó sẽ được cập nhật.

Nếu đây là một người dùng đã được đăng nhập hơn thì điều này sẽ hoạt động mà không có vấn đề. Nếu bạn đang sử dụng tài khoản người dùng hiện tại, thì việc khởi động lại explorer.exe cũng có thể cần thiết. Cũng lưu ý rằng việc chạy các dịch vụ như tài khoản người dùng thông thường có thể tạo ra rủi ro bảo mật.


1

Vì mọi người chưa thêm câu trả lời này, tôi muốn đề cập rằng bạn có thể đặt các biến hệ thống vĩnh viễn tồn tại khi khởi động lại bằng lệnh SETX.

ví dụ

setx PATH "%PATH%;c:\temp\my\new\path"

Xin lưu ý rằng những điều trên sẽ không hoạt động trong cửa sổ lệnh hiện tại và sẽ yêu cầu bạn mở một cửa sổ lệnh mới trước khi nó có hiệu lực. Kết quả là, tùy thuộc vào trường hợp sử dụng; bạn có thể cần kết hợp điều này với một trong những kỹ thuật khác ở trên.

Vui lòng xem URL sau để biết thêm chi tiết :


không hoạt động: / "cú pháp không hợp lệ"
Joe DF

1
Thử ngay bây giờ. Rõ ràng nó cần báo giá kép.
Doug

Cảm ơn, vâng tôi đã tìm ra .... ngoại trừ tôi nhận được cảnh báo cắt ngắn, vì vậy tôi không thể thêm vào nó ... :(
Joe DF
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.