Làm cách nào tôi có thể làm mới biến PATH của mình từ sổ đăng ký mà không cần khởi động lại, đăng xuất hoặc khởi động lại trình thám hiểm?


6

Tôi đã thực hiện một số thay đổi đối với %PATH% biến trong sổ đăng ký. Bây giờ, tôi muốn thấy những thay đổi đó được áp dụng mà không cần phải đăng nhập, khởi động lại hoặc tải lại Explorer. Có một cách này có thể được thực hiện?

Tôi muốn làm điều này thông qua một số loại lệnh có thể được đặt ở cuối của một .BAT và không muốn sử dụng bất kỳ công cụ nào ngoài những công cụ đi kèm với HĐH trong bản cài đặt mới. Điều này cần phải tương thích tối thiểu với Windows XP SP3 và sẽ hoạt động hoàn toàn cho đến Windows 7 x64 và Server 2008 R2.


3
superuser.com/questions/312906/ - Bạn cần viết / cài đặt chương trình gửi tin nhắn WM_SETTINGCHANGE.
Zoredache

@Zoredache Vì vậy, đó không phải là thứ có thể được thực hiện từ dấu nhắc lệnh? Bummer.
Iszi

Có thể tắt trình thám hiểm, thay đổi và khởi động lại trình thám hiểm thông qua các công cụ CMD trong XP. Tôi đã sử dụng Kill / f, cảnh báo người dùng, tạm dừng, sau đó giết nó. Trong 7 tôi nghĩ lệnh là taskkill. Tôi đã không thử mẹo đó trong 7.
Psycogeek

Câu trả lời:


3
  • Thay đổi người dùng hoặc hệ thống PATH trong thuộc tính hệ thống.
  • Chạy tệp bó này sẽ kéo các biến PATH mới bằng truy vấn REG.
  • Các lệnh FOR phân tích các biến PATH từ kết quả REG.
  • PATH hiện tại được cập nhật vào các giá trị đăng ký.
  • Tôi sử dụng ConEmu cho bảng điều khiển của mình và nó chạy tệp bó này trên mỗi bảng điều khiển mới để làm mới PATH để không cần khởi động lại.

@echo off
echo.
echo Refreshing PATH from registry

:: Get System PATH
for /f "tokens=2*" %%A in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path') do set syspath=%%B

:: Get User Path
for /f "tokens=2*" %%A in ('reg query "HKCU\Environment" /v Path') do set userpath=%%B

:: Set Refreshed Path
set PATH=%userpath%;%syspath%

echo Refreshed PATH
echo %PATH%

`` `

Nhiệm vụ Các lệnh tham số trong ConEmu khởi chạy C: \ Windows \ System32 \ cmd.exe với công tắc / k để chạy refreshpath.cmd ở trên và sau đó vẫn còn. Điều đó cập nhật đường dẫn và để giao diện điều khiển mở.

C:\Windows\System32\cmd.exe /k refreshpath.cmd

ConEmu Task settings


Khi tôi chạy for /f "tokens=3*" %%A in ... do set syspath=%%A%%B đầu ra không bao gồm Đầu tiên không gian trong Đường dẫn của tôi, ví dụ: C:\Program Files trở thành C:\ProgramFiles. Thay vào đó, nó sẽ hoạt động tốt hơn để sử dụng for /f "tokens=2*" %%A in ... do set syspath=%%B
Twisty Impersonator

Dave, bạn có thể nói từng bước, những gì bạn làm, bảng điều khiển ConEmu mới đó chạy với tệp bó này không? Bạn đã đặt mã này ở đâu? Cảm ơn.
Саша Черных

1

Nếu bạn đang cố gắng sử dụng giá trị mới của biến đường dẫn từ bên trong vỏ lệnh Windows, tất cả những gì bạn cần làm là đóng cửa sổ vỏ lệnh của bạn và mở một cái mới. Shell lệnh mới sẽ tải biến đường dẫn cập nhật.

Vì vậy, tôi nghĩ rằng câu trả lời cho loại câu hỏi ban đầu của bạn phụ thuộc vào chính xác nơi bạn đang cố gắng để xem thay đổi có hiệu lực ... Có điều gì cụ thể không hiệu quả với bạn không?


Tôi sẽ phải kiểm tra điều này. Tôi đã thử mở một shell lệnh mới, nhưng tôi chưa đóng cái đầu tiên.
Iszi

Ngoài ra, biến nào bạn đang thay đổi - đường dẫn hệ thống hoặc đường dẫn người dùng? Tôi gần như chắc chắn rằng hành vi sẽ khác nhau đối với mỗi hành vi (chúng được làm mới dựa trên các kích hoạt khác nhau).
Shannon Wagner

1
Biến này nằm trong HKEY_LOCAL_MACHINE \ HỆ THỐNG \ CurrentControlset \ Control \ Session Manager \ Môi trường
Iszi

3
Thử nghiệm. Không có may mắn ở đây. Shell CMD đã bị đóng khi khóa Registry được thay đổi, mở một cái mới sau đó và thay đổi PATH dường như không có hiệu lực.
Iszi

2
Điều này không thực sự hoạt động. Nó sẽ tải giá trị cũ của biến đường dẫn.
iopq

-2

Cách dễ nhất để thêm một biến vào đường dẫn mà không cần khởi động lại là mở dấu nhắc lệnh và gõ: PATH = (VARIABLE);% path% và nhấn enter. Để kiểm tra xem biến của bạn đã được tải chưa, gõ PATH và nhấn enter.


Tôi nghĩ rằng anh ta có nghĩa là hỏi làm thế nào để thay đổi PATH được phản ánh trong CMD mà không cần khởi động lại.
Nic Szer

-2
  1. Thay đổi biến PATH từ UI trong các biến môi trường.
  2. Thêm một biến môi trường mới, gọi nó là một cái gì đó ngẫu nhiên. Có thể một cái gì đó như CHANGE_TO_UPDATE và đặt một giá trị ngẫu nhiên như x trong đó.
  3. Hãy nhớ khởi động lại cmd.exe hoặc bất kỳ chương trình nào cần xem biến đường dẫn mới.

Điều này thực sự sẽ kích hoạt các cài đặt để cập nhật khi bạn khởi chạy một ứng dụng mới.

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.