Membaca melalui batch jika .NET 4.0 diinstal. Cukup aman dengan permintaan reg?

Saat ini saya mencoba mencari tahu apakah .NET 4.0 diinstal pada PC yang berbeda melalui baris perintah. Perintah yang saya gunakan adalah:

REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" /v Version

Jika 4.0 diinstal saya mendapatkan 4.0..... hasilnya sementara jika tidak ada yang diinstal sama sekali saya mendapatkan kesalahan kunci registri.

Sekarang pertanyaan saya adalah (karena saya tidak dapat mereproduksinya di sini):

Apakah itu cukup aman, atau bisakah saya mengalami masalah jika versi 2.0 diinstal atau 3.0 tetapi BUKAN 4.0? Jadi, apakah saya masih mendapatkan kesalahan kunci registri tidak ditemukan atau apakah saya harus menggunakan sesuatu yang berbeda di sini?


person Thomas    schedule 01.10.2015    source sumber
comment
Lihat artikel resmi Cara: Menentukan .NET yang mana Versi Kerangka Kerja Telah Dipasang. Saya pikir itu mencakup semua pertanyaan.   -  person wOxxOm    schedule 01.10.2015
comment
Terima kasih, tapi saya sudah melihatnya. Masalahnya adalah ia sebagian besar menggunakan c#/.net untuk mendapatkan info tetapi dalam kasus saya, saya harus melakukannya tanpa melibatkan .NET jadi saya menggunakan kueri reg. Intinya mencari statistik yang sama tetapi saya tidak yakin apa yang terjadi jika yang diinstal adalah 2.0 atau 3.0, bukan 4.0. Jika kunci tidak ada maka (mengakibatkan kesalahan kunci tidak ditemukan yang merupakan hasil terbaik, atau jika ada hasil lain di sana). Tanpa versi yang diinstal, kesalahan kuncinya tidak ditemukan, tetapi dengan 2.0 atau 3.0 saya tidak yakin dan sayangnya artikel tersebut tidak membahasnya.   -  person Thomas    schedule 01.10.2015
comment
Microsoft cukup muak karena harus berurusan dengan panggilan layanan pelanggan, jenis panggilan di mana mereka mencari solusi untuk perangkat lunak pemeriksaan versi yang rusak. Jadi mereka sengaja mempersulit pemeriksaan versi. Nomor versi Windows penting, mereka sengaja berbohong dan mengembalikan nomor yang lebih rendah. Apa yang ingin Anda lakukan hanyalah menjalankan penginstal. Ini akan dilakukan sangat dengan cepat ketika revisi yang sesuai dengan pembaruan terkini dan perbaikan keamanan sudah ada.   -  person Hans Passant    schedule 01.10.2015
comment
Hanya dalam kasus di mana pengembang perlu memastikan bahwa versi tertentu ada atau tidak.........mereka mendapatkan lebih banyak panggilan seperti itu (setidaknya jika stackoverflow tidak ada, itulah masalahnya)   -  person Thomas    schedule 01.10.2015
comment
Karena penasaran, apa yang Anda lakukan sehingga Anda perlu memeriksa versi .NET yang terinstal di luar penginstal?   -  person Scott Chamberlain    schedule 01.10.2015
comment
Pengurai log yang perlu dijalankan pada mesin non pc yang telah menginstal windows. Distribusi ke mereka harus tanpa penginstal (itulah sebabnya saya perlu memeriksa terlebih dahulu apakah mereka memiliki versi kerangka kerja yang benar atau tidak.......jika tidak, program saya bahkan tidak akan dapat dipanggil (menemukan hal itu ketika saya tidak sengaja menggunakan kerangka kerja 4.5, bukan 4.0). Dan karena saya tidak memiliki izin untuk menginstal kerangka .NET jika hilang, saya harus memeriksa dengan cara yang sulit (alias kumpulan di atas) tetapi perlu tahu apakah itu cukup sebagai pemeriksaan atau ada hal tambahan yang perlu dilakukan.   -  person Thomas    schedule 01.10.2015


Jawaban (1)


Untuk memeriksa apakah v4 sudah diinstal cukup sederhana.

dir /b /ad "%windir%\microsoft.net\Framework\v4.*"

kembali

v4.0.30319

Jika Anda ingin memastikan menginstal versi terbaru:

@echo off

for /f "delims=" %%a in (
   'dir /b /ad "%windir%\microsoft.net\Framework\*" ^|sort /r ^|findstr /r [0-9]'
) do (
      set "version=%%a"
      goto done
)
exit /b 0

:done
echo version %version%

Jika Anda perlu menjalankan executable spesifik terbaru misalnya csc.exe

@echo off

for /f "delims=" %%a in (
   'dir /b /s /a-d "%windir%\microsoft.net\Framework\*csc.exe"^|sort /r'
) do (
      set "executable=%%a"
      goto done
)
exit /b 0

:done
echo executable %executable%

Saya baru saja menemukan di sini cara lain untuk memverifikasi .NET diinstal dengan wmic tetapi cukup lambat pada pengaturan saya.

person Paul    schedule 01.10.2015