Pertanyaan serupa ditanyakan di sini , tetapi khusus untuk .NET 3.5. Secara khusus, saya mencari yang berikut:
- Apa cara yang benar untuk menentukan versi dan paket layanan .NET Framework yang diinstal?
- Apakah ada daftar kunci registri yang dapat digunakan?
- Apakah ada ketergantungan antara versi Kerangka?
.net
installation
version-detection
Scott Dorman
sumber
sumber
Jawaban:
Registri adalah cara resmi untuk mendeteksi jika versi spesifik dari Kerangka ini diinstal.
Kunci registri mana yang perlu diubah tergantung pada versi Kerangka yang Anda cari:
Secara umum Anda mencari:
kecuali untuk .NET 1.0, di mana nilainya adalah string (
REG_SZ
) daripada angka (REG_DWORD
).Menentukan tingkat paket layanan mengikuti pola yang sama:
Seperti yang Anda lihat, menentukan level SP untuk perubahan .NET 1.0 jika Anda menjalankan Windows Media Center atau Windows XP Tablet Edition. Sekali lagi, .NET 1.0 menggunakan nilai string sementara yang lain menggunakan DWORD.
Untuk .NET 1.0 nilai string di salah satu kunci ini memiliki format #, #, ####, #. # Terakhir adalah tingkat Paket Layanan.
Meskipun saya tidak secara eksplisit meminta ini, jika Anda ingin tahu nomor versi Kerangka yang tepat Anda akan menggunakan kunci registri ini:
Sekali lagi, .NET 1.0 menggunakan nilai string sementara yang lain menggunakan DWORD.
catatan tambahan
untuk .NET 1.0 nilai string di salah satu kunci ini memiliki format
#,#,####,#
. The#,#,####
porsi string adalah versi Kerangka.untuk .NET 1.1, kami menggunakan nama kunci registri itu sendiri, yang mewakili nomor versi.
Akhirnya, jika Anda melihat dependensi, .NET 3.0 menambahkan fungsionalitas tambahan untuk .NET 2.0 sehingga .NET 2.0 dan .NET 3.0 harus keduanya evaulate sebagai yang diinstal untuk mengatakan bahwa .NET 3.0 diinstal. Demikian pula, .NET 3.5 menambahkan fungsionalitas tambahan untuk .NET 2.0 dan .NET 3.0, jadi .NET 2.0, .NET 3.0, dan .NET 3. harus semuanya mengevaluasi untuk diinstal agar mengatakan bahwa .NET 3.5 diinstal.
.NET 4.0 menginstal versi baru CLR (CLR versi 4.0) yang dapat berjalan berdampingan dengan CLR 2.0.
Pembaruan untuk .NET 4.5
Tidak akan ada
v4.5
kunci dalam registri jika .NET 4.5 diinstal. Alih-alih, Anda harus memeriksa apakahHKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full
kunci berisi nilai yang disebutRelease
. Jika nilai ini hadir, .NET 4.5 diinstal, jika tidak. Rincian lebih lanjut dapat ditemukan di sini dan di sini .sumber
Ada jawaban resmi Microsoft untuk pertanyaan ini di artikel pangkalan pengetahuan berikut:
ID Artikel: 318785 - Tinjauan Terakhir: 7 November 2008 - Revisi: 20.1 Cara menentukan versi .NET Framework yang diinstal dan apakah paket layanan telah diterapkan
Sayangnya, tampaknya tidak berfungsi, karena versi mscorlib.dll dalam direktori 2.0 memiliki versi 2.0, dan tidak ada versi mscorlib.dll di direktori 3.0 atau 3.5 walaupun 3.5 SP1 diinstal ... mengapa apakah jawaban resmi Microsoft akan salah informasi?
sumber
Kerangka 4 beta menginstal ke kunci registri yang berbeda.
sumber
Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP", true)
keRegistry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP")
untuk menghindari pengecualian keamanan pada pengguna non-admin.Saya ingin mendeteksi keberadaan .NET versi 4.5.2 yang diinstal pada sistem saya, dan saya tidak menemukan solusi yang lebih baik daripada ASoft .NET Version Detector .
Cuplikan dari alat ini menampilkan versi .NET yang berbeda:
sumber
Hitung subkunci dari
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP
. Setiap subkunci adalah versi .NET . Itu harus memilikiInstall=1
nilai jika ada di mesin, nilai SP yang menunjukkan paket layanan danMSI=1
nilai jika diinstal menggunakan MSI. (.NET 2.0 pada Windows Vista tidak memiliki yang terakhir misalnya, karena merupakan bagian dari OS.)sumber
Untuk OS 64-bit, jalurnya adalah:
sumber
Wow6432Node
kunci registri merupakan bagian dari reflektor registry WOW64, yang cermin kunci tertentu dan nilai-nilai di antara tampilan registry 64-bit dan 32-bit. Seharusnya tidak perlu mengakses kunci ini secara langsung karena registri secara otomatis menangani pengalihan dan mirroring.Pembaruan untuk .NET 4.5.1
Sekarang .NET 4.5.1 tersedia, nilai aktual dari kunci yang bernama Release dalam registri perlu diperiksa, bukan hanya keberadaannya. Nilai 378758 berarti bahwa .NET Framework 4.5.1 diinstal. Namun, seperti dijelaskan di sini nilai ini adalah 378675 pada Windows 8.1.
sumber
Ada alat GUI yang tersedia, ASoft .NET Version Detector , yang selalu terbukti sangat andal. Itu dapat membuat file XML dengan menentukan nama file output XML pada baris perintah.
Anda dapat menggunakan ini untuk otomasi. Ini adalah program kecil, ditulis dalam bahasa yang tidak bergantung pada NET dan tidak memerlukan instalasi.
sumber
Saya perlu mencari tahu versi .NET framework yang saya miliki di komputer saya, dan yang saya lakukan hanyalah pergi ke panel kontrol dan memilih opsi "Copot Program". Setelah itu, saya mengurutkan program berdasarkan nama, dan menemukan Profil Klien Microsoft .NET Framework 4.
sumber
Berikut ini adalah skrip PowerShell untuk mendapatkan versi .NET framework yang diinstal
Itu ditulis berdasarkan Bagaimana: Menentukan Versi .NET Framework Yang Dipasang . Silakan gunakan fungsi THE Get-FrameworkVersion () untuk mendapatkan informasi tentang versi .NET framework yang diinstal.
sumber
Menggunakan perpustakaan Signum.Utilities dari SignumFramework (yang dapat Anda gunakan sendiri), Anda bisa mendapatkannya dengan baik dan tanpa berurusan dengan registri sendiri:
sumber
Lihat Cara: Menentukan Versi .NET Framework Yang Dipasang (MSDN).
MSDN mengusulkan satu contoh fungsi yang tampaknya melakukan pekerjaan untuk versi 1-4. Menurut artikel tersebut, keluaran metode adalah:
Perhatikan bahwa untuk "versi 4.5 dan yang lebih baru" ada fungsi lain.
sumber
Di Windows 7 (seharusnya bisa juga untuk Windows 8, tapi saya belum mengujinya):
Buka prompt perintah
Langkah-langkah untuk pergi ke command prompt:
Dalam cmd, ketikkan perintah ini
Ini memberikan versi terbaru NET Framework diinstal.
Anda juga dapat mencoba Raymond.cc Utilties untuk hal yang sama.
sumber
cmd
memberi sayaERROR: Description = Invalid namespace
.ERROR: Description = Invalid namespace