Mencegah Sistem Windows% PATH% agar tidak ditambahkan ke pengguna% PATH?

19

Saya tahu cara mengatur variabel lingkungan khusus sistem atau pengguna:

Variabel Lingkungan Windows

Sekarang, masalahnya adalah PATHvariabel diperlakukan sedemikian rupa sehingga nilai yang Anda masukkan untuk PATH pengguna akan secara otomatis ditambahkan ke PATH sistem dan itu akan menjadi variabel PATH yang efektif.

Yaitu, katakan saya punya

(SISTEM) PATH=C:\Windows\System32;C:\Program Files\Foo\bin;...

dan (USER) PATH=C:\Program Files\Bar\bin(perhatikan bahwa tidak ada %PATH%nilai ini)

maka variabel lingkungan yang dihasilkan untuk pengguna ini adalah:

(efektif) PATH=C:\Windows\System32;C:\Program Files\Foo\bin;...;C:\Program Files\Bar\bin

Namun, saya lebih suka bahwa untuk akun pengguna OS yang sangat spesifik, variabel lingkungan PATH harus memiliki bar\bindirektori di awal PATH daripada di akhir.

Apakah ada cara yang tepat untuk memberitahu windows untuk sepenuhnya menimpa PATHvariabel pengguna dengan nilai untuk pengguna itu alih-alih menambahkannya ke PATHvariabel sistem ?

Catatan: Jelas, dari file batch, semua ini tidak masalah karena Anda dapat mengatur dan mengubah env.vars sesuka Anda.

Martin
sumber
Mengapa tidak mengabaikan bagian USER saja. Hapus variabel Path USER dan masukkan semuanya ke dalam variabel Path System, sesuai urutan yang Anda inginkan.
Kevin Fegan
1
@KevinFegan: Nah, karena beberapa layanan pada mesin tergantung pada yang SYSTEM PATHdan akun khusus pengguna ini akan lebih baik dilayani dengan memiliki yang berbeda satu PATH. Saya tahu bahwa ada banyak solusi, tetapi saya tertarik apakah ada sesuatu di luar kotak / pada tingkat OS / registri untuk mencapai ini.
Martin

Jawaban:

3

Jika Anda hanya memerlukan ini untuk bekerja pada sesi prompt perintah, buat file batch profil / init dan konfigurasikan dalam registri, per /programming/17404165/how-to-run-a-command-on -command-prompt-startup-in-windows . Misalnya,

reg add "HKCU\Software\Microsoft\Command Processor" /v AutoRun ^
  /t REG_EXPAND_SZ /d "%"USERPROFILE"%\init.cmd" /f

Kemudian cukup modifikasi ke PATH dalam file batch itu. Misalnya,

SET USER_PATH=c:\whatever
SET PATH=%USER_PATH%;%PATH%
G-Wiz
sumber
0

Saya memiliki masalah yang sama dan ini berhasil untuk saya:

Anda bisa mendapatkan "variabel jalur pengguna" melalui:

>reg query HKCU\Environment /v path

Output (pada mesin saya) adalah:

HKEY_CURRENT_USER\Environment
    path    REG_SZ    C:\Program Files (x86)\GnuWin32\bin

Tetapi kemudian Anda harus menguraikan ini dan menggunakan bagian yang relevan.

Saya membaca solusinya di sini di sini dan diuji pada mesin saya.

pengguna2442366
sumber
-1

Saya tidak tahu bagaimana mengabaikan variabel sistem, tetapi saya tahu bahwa jika Anda menggunakan variabel sesi (melalui SETperintah), mereka lebih diutamakan daripada variabel lain. Jadi Anda dapat menggunakan SET PATH=C:\Program Files\Bar\bininstruksi dan jalur yang Anda inginkan akan menjadi bagian pertama dari variabel.

Berikut ini adalah referensi yang valid, dan saya melaporkan di sini periode sederhana dari halaman itu:

Jika variabel dengan nama yang sama disimpan sebagai variabel Pengguna dan Lingkungan Mesin, variabel pengguna akan diutamakan. Jika variabel Sesi dibuat yang akan diutamakan atas variabel Pengguna dan / atau Lingkungan Mesin dengan nama yang sama.

Gabriele Bertolucci
sumber
Itu referensi yang bermanfaat, tetapi kalimat pertama yang Anda kutip adalah generalisasi berlebihan. The PATHvariabel pengecualian (kasus khusus) - variabel pengguna tidak tidak lebih diutamakan daripada variabel sistem. Fakta bahwa "variabel sesi" akan didahulukan dari variabel pre-set pengguna & sistem itu benar, tetapi bagaimana Anda mengatur variabel sesi secara otomatis untuk pengguna?  G-Wiz telah menjawab pertanyaan itu , dan, AFAICS, Anda belum menambahkan apa pun pada jawaban itu.
Scott