Saya menggunakan:
FileInfo(
System.Environment.GetFolderPath(
System.Environment.SpecialFolder.ProgramFiles)
+ @"\MyInstalledApp"
Untuk menentukan apakah suatu program terdeteksi pada mesin pengguna (itu tidak ideal, tetapi program yang saya cari adalah kludge tua yang tepat dari aplikasi MS-DOS, dan saya tidak bisa memikirkan metode lain).
Pada Windows XP dan Windows Vista versi 32-bit ini berfungsi dengan baik. Namun, pada x64 Windows Vista kode mengembalikan folder File Program x64, sedangkan aplikasi diinstal di Program Files x86. Apakah ada cara untuk mengembalikan jalur ke Program Files x86 secara terprogram tanpa kabel "C: \ Program Files (x86)"?
Jawaban:
Fungsi di bawah ini akan mengembalikan
Program Files
direktori x86 di ketiga konfigurasi Windows ini:sumber
Environment.Is64BitOperatingSystem
atauEnvironment.Is64BitProcess
?Jika Anda menggunakan .NET 4, ada program penghitungan folder khusus ProgramFilesX86 :
sumber
sumber
Perhatikan, bagaimanapun, bahwa
ProgramFiles(x86)
variabel lingkungan hanya tersedia jika aplikasi Anda menjalankan 64-bit.Jika aplikasi Anda menjalankan 32-bit, Anda bisa menggunakan
ProgramFiles
variabel lingkungan yang nilainya sebenarnya adalah "Program Files (x86)".sumber
Salah satu caranya adalah dengan mencari variabel lingkungan "ProgramFiles (x86)":
sumber
Saya menulis sebuah aplikasi yang dapat berjalan pada platform x86 dan x64 untuk Windows 7 dan menanyakan variabel di bawah ini hanya menarik jalur folder file program yang tepat pada platform apa pun.
sumber
One-liner menggunakan metode baru di .NET. Akan selalu mengembalikan folder File Program x86.
Environment.Is64BitOperatingSystem ? Environment.GetEnvironmentVariable("ProgramFiles(x86)") : Environment.GetEnvironmentVariable("ProgramFiles"))
sumber
Kode C #:
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)
Keluaran:
C: \ Program Files (x86)
catatan:
Kita perlu memberi tahu kompiler untuk tidak memilih platform build tertentu.
Alasan:
sumber