Wie kann ich eine Liste aller Windows / System-DLLs und ihrer Versionen erhalten?

5492
Ron Klein

Ich hätte gerne folgenden Bericht:

Alle DLLs in% WIN_DIR% in meinem PC und in seinen Unterordnern rekursiv.

Für jede gefundene DLL würde ich gerne die Dateiversion, die Produktversion usw. haben (da diese durch die Eigenschaften der Datei gefunden werden kann).

Kennen Sie ein Hilfsprogramm, das einen solchen Bericht erstellen kann?

PS : Ich weiß, dass ich ein Skript schreiben kann, aber das ist hier nicht die Frage, da dieses Programm als "Abstiegsprogramm" ausgeführt werden sollte und ein Skript-Host aufgrund von Sicherheitsrichtlinien nicht verfügbar ist.

Danke für jede Hilfe / Lead!

1

1 Antwort auf die Frage

3
John T

Sie können Windows PowerShell verwenden :

PS C: \ Windows> Get-ChildItem c: \ windows -include * .dll -recurse | foreach-object {"" -f [System.Diagnostics.FileVersionInfo] :: GetVersionInfo ($ _)}

Einige Zeilen der Beispielausgabe:

Datei: C: \ Windows \ Assembly \ GAC \ Microsoft.JScript \ 7.0.5000.0__b03f5f7f11d50a3a \ Microsoft.JScript.dll InternalName: Microsoft.JScript.dll OriginalFilename: Microsoft.JScript.dll Dateiversion: 7.10.3052.4 FileDescription: Microsoftr JScript Engine Produkt: Microsoftr JScript .NET Produktversion: 7.10.3052.4 Debuggen: Falsch Gepatcht: Falsch PreRelease: Falsch PrivateBuild: Falsch SpecialBuild: Falsch Sprache: Englisch (USA)   Datei: C: \ windows \ assembly \ GAC \ Microsoft.StdFormat \ 7.0.3300.0__b03f5f7f11d50a3a \ Microsoft.stdformat.dll Interner Name: OriginalFilename: Dateiversion: 7.00.9466 Dateibeschreibung: Produkt: Microsoft Visual Studio .NET Produktversion: 7.00.9466 Debuggen: Falsch Gepatcht: Falsch PreRelease: Falsch PrivateBuild: Falsch SpecialBuild: Falsch Sprache: Englisch (USA) ....

Wenn Sie dies in einer Datei speichern möchten:

PS C: \ Windows> Get-ChildItem c: \ windows -include * .dll -recurse | foreach-object {"" -f [System.Diagnostics.FileVersionInfo] :: GetVersionInfo ($ _)}> C: \ DLL_Versions.txt

Dies würde die gesamte Ausgabe in speichern C:\DLL_Versions.txt.

Alternativer Vorschlag: Get-ChildItem $ Env: windir -Recurse -Include * .dll -ErrorAction SilentlyContinue | ForEach-Object {[Diagnostics.FileVersionInfo] :: GetVersionInfo ($ _)} | Format-Table {[IO.Path] :: GetFileName ($ _. FileName)}, * Version, * Description` - schönere Tabellenausgabe, keine sichtbaren Fehlermeldungen über nicht erreichbare Verzeichnisse, kein String-Fiddling, kein hartcodiertes Windows-Verzeichnis. Joey vor 14 Jahren 0
Und Sie sollten wirklich zu Lucida Console oder Consolas als Konsolenschrift wechseln. Das Fehlen einer Unicode-Ausgabe in Ihrem Eintrag ist ... störend :-) Joey vor 14 Jahren 0
Gute Vorschläge, aber dann lautet die Überschrift des Dateinamens ** [IO.Path] :: GetFileName ($ _. Dateiname) ** und die Ausgabe wird selbst dann abgeschnitten, wenn sie in eine Datei geleitet wird. Fühlen Sie sich frei, meine Antwort zu bearbeiten und zu verbessern, ich muss zur Arbeit gehen: \ John T vor 14 Jahren 0
Danke für ein tolles Skript. Gibt es ein Werkzeug, das solche Berichte erstellt? Ron Klein vor 14 Jahren 0
Das ist mir leider nicht bekannt John T vor 14 Jahren 0
ok, danke für das script. akzeptiert, obwohl es sich bei der ursprünglichen Frage um einen Nutzen handelte. Ron Klein vor 14 Jahren 0