Bagaimana Anda menambahkan variabel lingkungan Windows tanpa me-reboot?

181

Saya ingin menambahkan variabel Lingkungan ke mesin Windows (desktop atau server) dan dapat menggunakannya tanpa me-reboot mesin itu.

Katakanlah Anda memiliki server produksi yang menampung berbagai aplikasi dan aplikasi baru memerlukan variabel Lingkungan tertentu untuk dijalankan. Anda tidak ingin mem-boot ulang saat pengguna terhubung ke aplikasi Anda yang lain. Pilihan apa yang Anda miliki? Saya tidak suka opsi menunggu hingga waktu yang tepat untuk reboot. Pasti ada cara yang lebih baik. Apa yang saya lewatkan?

Chad Braun-Duin
sumber
2
Saya punya masalah yang sama. Saya membaca bahwa membunuh proses explorer.exe akan memperbarui variabel dan itu berhasil. Kemudian saya hanya perlu menjalankan explorer dari task manager.
user19694
1
Anda harus menutup prompt perintah, dan membukanya lagi, agar variabel jalur Anda diperbarui. Variabel dimuat saat cmd dimulai.
NiLInfinite

Jawaban:

162

Perubahan ke variabel lingkungan harus segera berlaku, jika Anda membuat perubahan melalui dialog Properties utama untuk komputer yang bersangkutan (buka My Computer | Properties | Advanced | Environment Variables). Setelah perubahan disimpan, Explorer menyiarkan WM_SETTINGCHANGEpesan ke semua jendela untuk memberi tahu mereka tentang perubahan tersebut. Program apa pun yang muncul melalui Explorer setelah ini harus mendapatkan lingkungan yang diperbarui, meskipun program yang sudah berjalan tidak akan, kecuali mereka menangani pesan perubahan pengaturan.

Saya tidak dapat memberi tahu dari deskripsi masalah Anda apa masalah spesifik yang Anda alami dengan ini. Bisakah Anda ceritakan lebih lanjut tentang skenario spesifik yang tidak berfungsi?

Artikel KB ini mungkin juga berguna: Cara menyebarkan variabel lingkungan ke sistem

Charlie
sumber
2
Ok, saya kira saya pasti melihat perilaku ini pada layanan yang berjalan atau sesuatu. Saya menambahkan variabel lingkungan baru menggunakan metode yang dijelaskan di atas. Kemudian, saya bisa melihat nilai setelah membuka prompt perintah baru dan menggunakan perintah "echo% <myvar>%. Terima kasih atas jawaban Anda.
Chad Braun-Duin
5
Untuk pengguna PowerShell cuplikan ini mungkin bisa membantu: poshcode.org/2049
Anders Zommarin
8
Jika menggunakan cmd, Anda harus memulai ulang jika mengubah variabel env
Neil McGuigan
4
Baru saja menginstal Scala di PC saya tetapi PATH tidak memperbarui; mungkin MSI tidak menyiarkan pesan WM_SETTINGCHANGE. Saya menambahkan variabel SISTEM dummy yaitu CHANGE_TO_UPDATE = z, yang saya perbarui untuk memicu pesan WM_SETTINGCHANGE - masalah terpecahkan
Darren Bishop
3
404 untuk tautan :-(
Samoth
63
  1. Dalam jenis prompt perintah: runas /user:yourusername@yourdomain cmd
  2. Ini akan membuka prompt cmd baru, lalu ketik: taskkill /f /im explorer.exe
  3. Kemudian ketik: explorer.exe

Sekarang setelah menutup semua perintah, Anda akan melihat bahwa PATHvariabel telah benar-benar diperbarui.

Semua prompt perintah harus ditutup. Buka kembali prompt perintah baru, ketik path dan Anda akan melihat data baru.

Ron AndKim Stengel
sumber
6
Dari semua jawaban di halaman ini, ini adalah satu-satunya yang benar-benar bekerja untuk saya. Terima kasih!!
coredumperror
2
Ini berhasil untuk saya. Saya pikir masalahnya adalah bahwa jika Anda menjalankan cmd melalui explorer (untuk menyelamatkan Anda harus mengetikkan jalur panjang) maka explorer tidak pernah ditutup, bahkan jika Anda menutup semua jendela explorer. Terima kasih atas solusinya :)
Steve Mc
Bekerja untukku. Anda juga dapat menggunakan Pengelola Tugas untuk mematikan tugas-tugas penjelajah dan memulai kembali (File> Jalankan tugas baru).
adabyron
7
Uhh. Tolong jangan bunuh windows explorer kecuali salah satu prosesnya digantung. Alih-alih, buka dialog shutdown windows dan batalkan sambil menahan ctrl+alt+shift. Itu akan keluar dari windows explorer. Di Vista + dialog shutdown windows lebih sulit ditemukan (tapi masih ada, setidaknya sampai 7 (tidak yakin tentang 8 dan 10)), jadi ada metode kedua. ctrl + shift + klik kanan di bagian kosong menu mulai dan pilih keluar dari explorer. Di 8 opsi keluar sama, tetapi Anda menggunakan bilah tugas bukan menu mulai.
Kevin Cathcart
1
+1 Ini berfungsi sebagai pesona pada Windows 7. FYI, saya cukup menggunakan CTRL + ALT + SHIFT dan dari Windows Task Manager saya membunuh semua proses explorer.exe dan kemudian memulainya lagi dengan menekan tombol New Task .
Marco Demaio
19

Satu hal yang perlu diingat adalah bahwa banyak program mendapatkan variabel lingkungan ketika pertama kali dimulai, jadi sementara windows mungkin tidak perlu restart, beberapa program mungkin sebelum mereka akan dapat menggunakan variabel baru. Contoh bagus dari ini adalah harus membuka jendela command prompt baru setelah menambahkan PATH (ya, saya sudah tersandung oleh ini).

nedm
sumber
3
Masalah ini mempengaruhi SEMUA LAYANAN, bahkan layanan yang dimulai kembali tidak akan melihat variabel lingkungan baru.
gimel
1
Apakah Anda yakin itu bukan karena berbagi proses svchost?
Mark Sowul
16

Sementara saya tidak memiliki cukup reputasi untuk mengomentari jawaban yang dipilih paling tinggi untuk pertanyaan ini, saya ingin menyatakan bahwa itu tidak sepenuhnya benar. Saya tahu ini karena tidak masalah solusi yang saya coba di posting ini, tidak ada yang berhasil.

The kb artikel terkait dalam bahwa jawaban sebenarnya menyatakan bahwa:

Namun, perhatikan bahwa modifikasi pada variabel lingkungan tidak menghasilkan perubahan langsung. Misalnya, jika Anda memulai Command Prompt lain setelah melakukan perubahan, variabel lingkungan akan mencerminkan nilai sebelumnya (bukan yang sekarang). Perubahan tidak berlaku sampai Anda keluar lalu masuk kembali.

Bagian tentang variabel lingkungan yang disetel ulang ke nilai sebelumnya setelah memuat ulang command prompt adalah persis apa yang saya alami di Windows Server 2008.

Artikel selanjutnya mengatakan:

Untuk melakukan perubahan ini tanpa harus keluar, tayangkan pesan WM_SETTINGCHANGE ke semua jendela dalam sistem, sehingga aplikasi apa pun yang tertarik (seperti Windows Explorer, Manajer Program, Manajer Tugas, Panel Kontrol, dan sebagainya) dapat melakukan pembaruan.

Itu tidak menyiratkan bahwa Explorer menyiarkan pesan WM_SETTINGCHANGE setelah Anda mengubah variabel lingkungan sistem, atau itu benar-benar berfungsi. Saya tidak yakin bagaimana Anda akan melakukan apa yang disarankan dalam artikel KB (untuk segera menyebarkan perubahan) dari command prompt.

pekerjaan pengujian
sumber
1
Ini satu-satunya jawaban yang tepat untuk saya. Tidak ada yang lain, termasuk membunuh Explorer dengan cara yang sulit atau cara yang "tepat", membuat perbedaan.
Hashim
4

Buat env. variabel tersedia segera:

1. Open a shell

Bergantung pada variabel lingkungan yang ingin Anda ubah, lakukan hal berikut: (Andaikan Anda ingin menambahkan PATH baru untuk aplikasi yang baru saja diinstal) Jadi, pada prompt shell, ketikkan yang berikut ini:

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

periksa apakah jalur baru Anda telah ditambahkan ke variabel lingkungan

3. echo %PATH%

Selesai.

Jadikan variabel tersedia saat reboot

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

Diuji dan bekerja pada Windows 7/10

Pedro Sousa
sumber
3

Solusi yang mungkin untuk layanan adalah menjalankannya sementara sebagai pengguna lain (selain LocalSystem, LocalService, NetworkService). Misalnya untuk layanan Apache ini berfungsi tanpa masalah. Untuk mengubah konsol buka layanan.msc akun layanan, pilih layanan, klik properti layanan dan pada tab kedua masukkan kredensial masuk untuk pengguna. Mulai ulang layanan dan variabel lingkungannya harus terkini.

Jika ini adalah pengguna yang telah dicatat maka ini akan berfungsi tanpa masalah. Jika Anda menggunakan akun pengguna saat ini, maka me-restart explorer.exe mungkin juga diperlukan. Perhatikan juga bahwa menjalankan layanan sebagai akun pengguna biasa dapat menimbulkan risiko keamanan.

Odin
sumber
1

Karena orang belum menambahkan jawaban ini, saya ingin menyebutkan bahwa Anda dapat mengatur variabel sistem permanen yang selamat reboot dengan perintah SETX.

misalnya

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

Harap dicatat bahwa di atas tidak akan berfungsi di jendela perintah saat ini dan akan meminta Anda untuk membuka jendela perintah baru sebelum mulai berlaku. Akibatnya, tergantung pada use case; Anda mungkin perlu menggabungkan ini dengan salah satu teknik lain di atas.

Silakan lihat URL berikut untuk detail tambahan :

Doug
sumber
tidak berfungsi: / "sintaks tidak valid"
Joe DF
1
Coba sekarang. Rupanya dibutuhkan tanda kutip ganda.
Doug
Terima kasih, ya saya pikir .... kecuali saya mendapat peringatan pemotongan, jadi saya tidak bisa menambahkannya ... :(
Joe DF