Jika saya mengeksekusi set PATH=%PATH%;C:\\Something\\bin
dari baris perintah ( cmd.exe
) dan kemudian mengeksekusi echo %PATH%
saya melihat string ini ditambahkan ke PATH. Jika saya menutup dan membuka baris perintah, string baru itu tidak ada di PATH.
Bagaimana cara memperbarui PATH secara permanen dari baris perintah untuk semua proses di masa mendatang, tidak hanya untuk proses saat ini?
Saya tidak ingin melakukan ini dengan membuka Properti Sistem → Lanjutan → Variabel lingkungan dan memperbarui PATH di sana.
Perintah ini harus dijalankan dari aplikasi Java (lihat pertanyaan saya yang lain ).
Runtime.getRuntime().exec("my command");
Jawaban:
Dokumentasi tentang cara melakukannya dapat ditemukan di MSDN . Ekstrak kuncinya adalah ini:
Perhatikan bahwa aplikasi Anda memerlukan hak admin yang lebih tinggi agar dapat mengubah kunci ini.
Anda menunjukkan di komentar bahwa Anda dengan senang hati akan mengubah lingkungan per pengguna saja. Lakukan ini dengan mengedit nilai di HKEY_CURRENT_USER \ Environment . Seperti sebelumnya, pastikan Anda menyiarkan
WM_SETTINGCHANGE
pesan.Anda seharusnya dapat melakukan ini dari aplikasi Java dengan cukup mudah menggunakan kelas registri JNI.
sumber
HKEY_CURRENT_USER\Environment
untuk menghindari persyaratan ketinggian.requestedExecutionLevel
kerequireAdministrator
dalam manifes aplikasi.Kamu bisa memakai:
Namun,
setx
akan memotong string yang disimpan menjadi 1024 byte, berpotensi merusak PATH./M
akan mengubahPATH
dalam,HKEY_LOCAL_MACHINE
bukanHKEY_CURRENT_USER
. Dengan kata lain, variabel sistem, bukan pengguna. Sebagai contoh:Anda harus ingat, PATH baru tidak terlihat di Anda saat ini
cmd.exe
.Tetapi jika Anda melihat di registri atau di baru
cmd.exe
dengan"set p"
Anda dapat melihat nilai baru.sumber
setx
untuk mengubah jalur mesin dan bukan jalur pengguna?/m
di akhir perintah, di windows xp dan 7. Saya belum mencobanya.setx
perintah "Opsi default tidak diperbolehkan lebih dari '2' waktu" Bagaimana cara memotongnya?Saya berhati-hati agar tidak menggunakan perintah
untuk memodifikasi variabel PATH karena "fitur" implementasinya. Pada banyak (kebanyakan?) Penginstalan akhir-akhir ini, variabelnya akan menjadi panjang -
setx
akan memotong string yang disimpan menjadi 1024 byte, berpotensi merusak PATH (lihat pembahasan di sini ).( Saya mendaftar secara khusus untuk menandai masalah ini, dan karena itu tidak memiliki reputasi situs untuk secara langsung mengomentari jawaban yang diposting pada 2 Mei '12. Terima kasih saya kepada beresfordt untuk menambahkan komentar seperti itu )
sumber
Skrip Python [*] ini melakukan persis seperti itu:
Di bawah ini adalah beberapa contoh penggunaan, dengan asumsi itu telah disimpan dalam file bernama
setenv.py
di suatu tempat di jalur Anda saat ini. Perhatikan bahwa dalam contoh ini saya tidak memiliki hak admin , jadi perubahan hanya memengaruhi pohon registri pengguna lokal saya:[*] Diadaptasi dari: http://code.activestate.com/recipes/416087-persistent-environment-variables-on-windows/
sumber
Untuk tujuan referensi, bagi siapa pun yang mencari cara mengubah jalur melalui kode, saya mengutip posting berguna oleh programmer Delphi dari halaman web ini: http://www.tek-tips.com/viewthread.cfm?qid=686382
sumber
Di jaringan perusahaan, di mana pengguna hanya memiliki akses terbatas dan menggunakan aplikasi portabel, ada trik baris perintah berikut:
reg query "HKEY_CURRENT_USER\Environment"
. Gunakan"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
untuk LOCAL_MACHINE.reg add "HKEY_CURRENT_USER\Environment" /v shared_dir /d "c:\shared" /t REG_SZ
. GunakanREG_EXPAND_SZ
untuk jalur yang berisi variabel %% lainnya.reg delete "HKEY_CURRENT_USER\Environment" /v shared_dir
.sumber
Skrip ini http://www.autohotkey.com/board/topic/63210-modify-system-path-gui/
menyertakan semua panggilan Windows API yang diperlukan yang dapat difaktorisasi ulang untuk kebutuhan Anda. Ini sebenarnya adalah GUI AutoHotkey untuk mengubah PATH Sistem dengan mudah. Perlu dijalankan sebagai Administrator.
sumber