Apakah mungkin untuk memiliki seluruh atau sebagian PATH
variabel lingkungan yang spesifik untuk jenis gambar proses yang sedang berjalan (32bit / 64bit)? Ketika saya menjalankan beberapa aplikasi dari dalam cmd.exe 64bit saya ingin memilikinya memilih versi 64bit perpustakaan OpenSSL sedangkan ketika saya menjalankan beberapa aplikasi dari dalam cmd.exe 32bit saya ingin memilikinya memilih versi 32bit perpustakaan OpenSSL.
14
echo %programfiles%
menunjukkan jalur yang berbeda tergantung pada jenis cmd.exe yang dijalankannya tetapiwhere ssleay32.dll
pada kedua jenis cmd.exe (32bit dan 64bit) tidak dapat menemukan dll ini dan menampilkanINFO: Could not find files for the given pattern(s).
Ada ide?Jawaban (dicentang sebagai benar) yang diberikan oleh romka sederhana dan elegan, tetapi sayangnya tidak bekerja (setidaknya pada Windows 7 dan Windows 8 64 bit, saya tidak mendorong pengujian lebih lanjut).
Masalahnya berasal dari kenyataan bahwa sistem% PATH% variabel tidak selalu memperluas variabel env lainnya: ia bekerja dengan% SYSTEMDRIVE% misalnya, tetapi sayangnya tidak untuk% PROGRAMFILES%. Wikipedia menyarankan bahwa perilaku ini berasal dari tingkat tipuan (% SYSTEMDRIVE% tidak merujuk ke variabel env ketiga).
Satu-satunya solusi yang saya temukan adalah menggunakan sihir File System Redirector dan direktori System32 / SysWoW64, seperti yang disarankan dalam komentar.
Untuk menghindari penyebaran langsung DLL di direktori Windows, yang biasanya sulit dipertahankan, seseorang dapat menggunakan softlink ke direktori kustom (berfungsi pada Windows Vista dan versi Windows yang lebih baru):
Ngomong-ngomong, maaf karena tidak berkomentar langsung pada posting yang relevan: saat ini tidak cukup reputasi di akun saya untuk melakukan ini.
sumber
Ya itu sangat mungkin. Cukup tulis tiga file .bat. Yang pertama akan terlihat seperti ini:
File .bat kedua dan ketiga pada dasarnya sama, kecuali mereka berbeda dalam namanya. Yang pertama akan disebut x86.bat yang kedua ia64.bat dan mereka ditempatkan di folder bernama bin yang berada di atas file bat pertama. Anda akan memiliki ini:
Konten file .bat kedua dan ketiga akan terlihat seperti ini:
Anda dapat membuat tautan ke file .bat pertama yang akan memiliki pengaturan berikut:
Target:% comspec% / k "PATH \ first.bat" OPSI | Di mana OPTION adalah x86 atau ia64
Mulai di: PATH | Di mana PATH adalah PATH untuk first.bat Anda
Script adalah skrip yang disederhanakan yang digunakan Microsoft untuk memulai baris perintah yang tepat untuk lingkungan Visual Studio mereka. Anda cukup memperluas skrip ini ke lingkungan N. Dengan menambahkan lebih banyak file .bat untuk lingkungan yang berbeda dan dengan mengedit first.bat dengan lebih banyak opsi dan pernyataan goto. Saya harap ini menjelaskan sendiri.
Dan saya berharap Microsoft tidak menuntut saya karena menggunakan skrip mereka.
EDIT:
Ah saya pikir saya sedikit salah paham. Untuk garis 32bit cmd, tautan harus dibuat sebagai:
Target:% windir% \ SysWoW64 \ cmd.exe "PATH \ first.bat" x86
EDIT2:
Coba sesuatu seperti:
sumber
%ProgramFiles%
variabel. (Kutipan:% ProgramFiles% itu sendiri tergantung pada apakah proses yang meminta variabel lingkungan itu sendiri 32-bit atau 64-bit (ini disebabkan oleh pengalihan Windows-on-Windows 64-bit). En.wikipedia.org/wiki/ ... )Saya hanya ingin meringkas jawaban yang saya peroleh dengan mengikuti tautan yang disediakan dalam jawaban dari Baptiste Chardon. Dengan menggunakan
mklink
alat baris perintah untuk membuat tautan simbolis direktori masukC:\Windows\system32
dan masukC:\Windows\SysWOW64
, masing-masing memiliki nama yang sama (meskipun target yang berbeda), Anda kemudian dapat menambahkan satuC:\Windows\system32
kePath
variabel lingkungan. Sebagai contoh:sumber
Saya memiliki masalah ini dan jawabannya adalah sebagai berikut:
Path untuk variabel sistem Anda pada mesin 64 bit adalah
c:\progra~2
. Anda perlu memiliki jalur tanpa spasi untuk variabel lingkungan Anda, jika tidak, sistem tidak akan membaca lebih jauh dari ituC:\programs
.Pada mesin 32 bit kami, program perusahaan variabel lingkungan
c:\program files
dan pada yang 64 bitc:\progra~2
. Kami kemudian mengatur pintasan untuk pengguna%companyprograms%\...
Anda dapat melakukannya melalui kebijakan grup atau dengan skrip.
sumber
Seperti yang ditunjukkan romka dalam tindak lanjut, jawaban sederhana adalah direktori SysWOW64.
Untungnya installer dari produksi Shining Light mengurus ini untuk Anda. Jalankan saja penginstal 32bit dan 64bit dan pilih untuk menyalin .DLL ke dalam direktori "Sistem" Window dan direktori yang tepat dipilih untuk .DLL (yaitu 64bit .DLL masuk ke System32 dan 32bit .DLL masuk ke SysWOW64.
Setelah saya melakukan ini, aplikasi 32bit saya menemukan 32bit. DLL dan aplikasi 64bit saya menemukan 64bit. DLL.
sumber