Installierte .NET Versionen und Details mit Batch auslesen

Musste heute wieder spontan schnell wissen, welche .NET Version installiert ist.

„Systemsteuerung/Software“ werden einige denken; ja sicher. Dort kann man die grobe Version sehen; v2.0, v3.5 oder so. Wenn man jetzt aber genauere Details haben möchte hilft das nicht. Hier eine schnelle Lösung:
Neue Batchdatei erstellen und folgendes reinkopieren:

@echo off

if "%1"=="" goto Start
if "%1"=="/Single" goto Single
if "%1"=="/TempVersion" goto TempVersion
echo wrong Option %1
exit

:Start
echo. 
echo.Installed .NET Framework-Versions :
echo.
for /D %%i in (%windir%\Microsoft.NET\Framework\v?"."*) DO call %0 /Single %%i

set info=Hotfix for Microsoft .NET Framework 3.0 - KB958483 - Dez 2008
set asm=%ProgramFiles%\Reference Assemblies\Microsoft\Framework\v3.0\PresentationFramework.dll
if exist "%asm%" call %OutExe% "%asm%" "%info%" "3.0.6920.1500"


set info=Hotfix for Microsoft .NET Framework 3.5 - KB958484 - Dez 2008
set asm=%ProgramFiles%\Reference Assemblies\Microsoft\Framework\v3.5\system.data.services.client.dll
if exist "%asm%" call %OutExe% "%asm%" "%info%" "3.5.30729.196"

echo.
pause && Goto Finish

:Single
set asm=mscorwks.dll
  if exist "%2\%asm%" call %0 /TempVersion %2 "%asm%"
set asm=Windows Communication Foundation\Infocard.exe
  if exist "%2\%asm%" call %0 /TempVersion %2 "%asm%"
set asm=Microsoft.Build.Tasks.v3.5.dll
  if exist "%2\%asm%" call %0 /TempVersion %2 "%asm%"
Goto Finish

:TempVersion
set CsFile=%TEMP%\VersionTmp.cs
set OutExe=%TEMP%\VersionTmp.exe
if exist %OutExe% call %OutExe% "%2\%~3" && goto Finish

echo. using System; using System.Diagnostics;                           >%CsFile%
echo. class Class1                                                     >>%CsFile%
echo. { static void Main(string[] args){                               >>%CsFile%
echo.   string pfad = Environment.ExpandEnvironmentVariables(args[0]); >>%CsFile%
echo.   FileVersionInfo v=FileVersionInfo.GetVersionInfo(pfad);        >>%CsFile%
echo.   if (args.Length == 3){string info = args[1];                   >>%CsFile%
echo.     string vCheck = args[2];                                     >>%CsFile%
echo.     if (v.ProductVersion != vCheck) return;                      >>%CsFile%
echo.     Console.WriteLine(info);                                     >>%CsFile%
echo.   } Console.WriteLine(v.ToString());                             >>%CsFile%
echo. }}                                                               >>%CsFile%
%2\csc /nologo /target:exe /out:%OutExe% %CsFile% 
%OutExe% "%2\%~3"

:Finish

Die Batch stammt von Frank Dzaebel, Dezember 2008.

Sie zeigt die genaue Version der installierten Frameworks an, Installationspfad und weitere Details. Kann durchaus hilfreich sein, das zu wissen.

Weitere, simple Möglichkeiten aber mit weniger Details:
Nummer 1:
Geht in den Ordner C:\WINDOWS\Microsoft.NET\Framework\ und schaut euch dort die Ordner an, die existieren. Anhand der Ordnernamen könnt ihr recht sicher die Installation sehen.
Nummer 2:
In der Registry unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\ die Unterordner angucken.

4 Kommentare

  1. also so eine große Batch-Datei..habs gleich mal ausprobiert klappt wunderbar. Nur bekomme ich die genau Version auch heraus, wenn ich unter Software auf „klicken Sie hier um Supportinformationen zu erhalten“ gehe. Oder ist das dort wieder einen andere Geschichte ?

  2. Oh diesen Link habe ich ja noch nie benutzt. Hab den immer für so sinnlos gehalten wie das Windows Hilfe- und Supportcenter (F1 aufn Desktop z.b.). Dort werden tatsächlich auch Versionen angezeigt aber komischerweise ganz andere als bei der Batch Ausgabe.
    Sowohl bei v2.0 und v3.0 zeigt er mir in dieser Hilfe andere Versionsnummern an als im Batch Script.
    Aber welche Version da was widerspiegelt und warum die anders sind kann ich dir nicht sagen. Windows-interner Kram halt.

  3. Du hast das mit dem Feed mitbekommen? ^^
    Ja ich glaube es ist behoben. Zumindest hoffe ich es. Ich veröffentliche in 15-45 Minuten nen Artikel über den coolen Explorer++, ich hoffe der wird wieder ganz normal über die Feedreader verteilt.
    Wär nett wenn du mir mal ne Rückmeldung geben könntest, ob dein Feedreader den Artikel ganz normal wieder angezeigt hat.

Schreibe einen Kommentar