it-swarm-vi.com

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?

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 lưu trữ nhiều ứng dụng khác nhau và một ứ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ì?

186
Chad Braun-Duin

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 sẽ phát WM_SETTINGCHANGE nhắn tin cho 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 đó 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 các biến môi trường cho hệ thống

166
Charlie
  1. Trong một lệnh Nhắc loại: runas /user:[email protected] 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 lời nhắc lệnh, bạn sẽ thấy biến PATH đã đượ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 lệnh mới Nhắc, nhập đường dẫn và bạn sẽ thấy dữ liệu mới.

66
Ron AndKim Stengel

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 lệnh mới Cửa sổ nhắc nhở sau khi thêm PATH (vâng, tôi đã bị vấp bởi điều này).

20
nedm

Trong khi tôi không đủ danh tiếng để 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ả.

bài viết kb được liên kết đến trong câu trả lời đó thực sự nói 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 lệnh Prompt 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 các 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ừ lệnh Nhắc.

16
testworks

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 Shell Prompt, 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

4
Pedro Sousa

Một giải pháp khả thi cho các dịch vụ là chạy chúng tạm thời như 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.

3
Odin

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 :

1
Doug