Jawaban:
Itu benar-benar tergantung pada bagaimana variabel lingkungan Anda ditetapkan. Jika, misalnya, Anda menggunakan perintah "SET" di baris perintah, itu hanya memengaruhi instance saat ini. Di sisi lain, perintah seperti "SETX" akan secara permanen menyesuaikan nilai variabel lingkungan. SETX akan memastikan bahwa semua instance cmd di masa depan akan melihat pembaruan. Ini tidak akan mempengaruhi lingkungan setempat.
Jika variabel lingkungan diatur oleh aplikasi lain dan tidak diperbarui, seringkali paling mudah untuk memulai kembali proses "explorer.exe", logout dan kembali, atau reboot. Intinya, Anda hanya perlu memberi tahu explorer untuk memuat ulang variabel lingkungan. Jika itu adalah aplikasi yang telah Anda kembangkan, seperti installer, pastikan itu memanggil SendMessage (HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)"Environment");
. Ini memberi tahu explorer untuk menyegarkan cache dari variabel lingkungan.
Ini penting karena aplikasi yang diluncurkan oleh proses lain mewarisi variabel lingkungannya dari induknya. Dengan demikian, jika Anda meluncurkan cmd dari explorer, Anda mendapatkan variabel seperti yang dilihat explorer.
Pengaturan dan retreving lingkungan master di Windows adalah sesuatu yang orang BartPE menghabiskan banyak waktu.
Lingkungan utama disimpan dalam registri, tetapi shell explorer membacanya ke alamatnya. Dari sini dikirim ke setiap sesi cmd.exe.
SET hanya memengaruhi lingkungan cmd. SETX memungkinkan Anda untuk mengubah lingkungan master, tetapi pengaturan tidak tercermin di lingkungan lokal.
CONSET dan 4NT milik Frank Westlake dapat mengambil entri dari registri, tetapi tidak ada sakelar khusus untuk lingkungan master.
Jendela yang dimuat secara normal melacak pengaturan ke registri, sedangkan yang dimuat melalui minint (yaitu WinPE) tidak. Jadi pengaturan registry dan membaca registry berfungsi di keduanya, tetapi hanya windows yang boot normal akan melihat pengaturan dan meneruskannya ke cmd, program exe baru.
itu tergantung di mana Anda "mengatur" variabel lingkungan Anda. setara dengan contoh bash Anda akan seperti ini:
file: env.bat
set FOO=bar
dan sekarang Anda menyegarkannya
% call env.bat
tetapi saya pikir Anda telah melakukannya melalui windows-system-settings-dialog (atau apa pun namanya). hasil dari ini adalah Anda telah benar-benar mengubah registri. pengaturan registri ini dipetakan ke dalam proses ketika Anda meluncurkan proses baru.
jadi, Anda dapat memulai proses baru (cmd.exe dalam kasus Anda) ATAU Anda dapat membaca kunci registri yang mencerminkan perubahan yang Anda inginkan. Anda juga dapat menulis sedikit skrip .bat / .cmd yang mendapatkan lingkungan dari registri dan mengubah lingkungan saat ini (jika suasana hati saya, saya akan melakukan ini setelah makan siang).
Ini sekarang jauh lebih mudah, tidak perlu me-restart shell:
RefreshEnv.bat
RefreshEnv.bat
Perhatikan bahwa variabel lingkungan Anda yang baru ditambahkan tersedia di setiap instance Command / Powershell baru, memverifikasi penyegaran.