18 Eylül 2018 Salı

Bir DLL veya EXE derlemesinin .NET sürümünü tespit etmek


Daha önceden derlenmiş bir .NET DLL veya EXE dosyasının .NET'in hangi sürümü ile derlendiğini öğrenmenin birden fazla yolu yöntemi var.

İhtiyaç halinde internetten herhangi bir araç, program vs. arama gereksinimi olmadan bu işi çözebileceğiniz en pratik yöntem .NET Framework kurulumlarıyla birlikte gelen CorFlags.exe ismindeki araçtır.

Diskimizde emektar Everything Search programı ile arattığımızda aşağıdaki klasörlerde (her .NET Framework kurulumu ile birlikte gelen farklı versiyonlardaki CorFlags.exe) dosyaları görebiliyoruz:

CorFlags.exe dosyasının farklı versiyonlarının diskimizde bulunduğu klasörler


Bu dosyalar içinden diskimizde yüklü olan en son .NET Framework versiyonunun olduğu klasördekini aşağıdaki şekilde kullanacağız:

Cmd.Exe ile açtığımız konsol ekranında üstteki örnekte olduğu gibi komutumuzu çalıştırıyoruz

Benim bilgisayarımda dosya adını arattığımda dönen arama sonuçları aşağıdaki gibiydi:
* 32bit işletim sistemleri için:
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\CorFlags.exe
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\CorFlags.exe
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.2 Tools\CorFlags.exe
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.7 Tools\CorFlags.exe
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.7.1 Tools\CorFlags.exe
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\CorFlags.exe
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\CorFlags.exe

* 64bit işletim sistemleri için:
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\x64\CorFlags.exe
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\x64\CorFlags.exe
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.2 Tools\x64\CorFlags.exe
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.7 Tools\x64\CorFlags.exe
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.7.1 Tools\x64\CorFlags.exe
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\x64\CorFlags.exe
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\x64\CorFlags.exe

Benim kullandığım komut:
"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.7.1 Tools\x64\CorFlags.exe" test2.exe

Konsol ekranında dönen sonuç:
Microsoft (R) .NET Framework CorFlags Conversion Tool.  Version  4.7.2558.0
Copyright (c) Microsoft Corporation.  All rights reserved.

Version   : v4.0.30319
CLR Header: 2.5
PE        : PE32
CorFlags  : 0x20003
ILONLY    : 1
32BITREQ  : 0
32BITPREF : 1
Signed    : 0



Burada "Version" yazan satır bize aradığımız sonucu vermektedir. :)
Dediğim gibi sonucu birden farklı yöntemlerle de elde edebiliriz fakat harici bir araç, program kullanmadan en temiz ve kestirme yöntem bu.

Buna benzer şekilde ildasm aracı ile de açıp, publickeytoken'a bakıp bulabilirdik. O da .NET Framework kurulumlarıyla geliyor, fakat buna kıyasla az biraz daha zahmetli sayılır. :)

Hiç yorum yok:

Yorum Gönder