Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'd like to have the following report:

All DLLs in %WIN_DIR% in my PC, and in its sub-folders, recursively.

For each DLL found, I'd like to have its file version, product version etc. (as it can be found by looking at the file's properties).

Do you know any utility that can prepare such report?

PS: I know I can write a script, but that's not the question here, since this should be executed as a "descent" program/executable, and a script host is unavailable due to security policy.

Thanks for any help/lead!

share|improve this question
up vote 3 down vote accepted

You can use Windows PowerShell:

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

a few lines of example output:

File:             C:\windows\assembly\GAC\Microsoft.JScript\7.0.5000.0__b03f5f7f11d50a3a\Microsoft.JScript.dll
InternalName:     Microsoft.JScript.dll
OriginalFilename: Microsoft.JScript.dll
FileVersion:      7.10.3052.4
FileDescription:  Microsoftr JScript Engine
Product:          Microsoftr JScript .NET
ProductVersion:   7.10.3052.4
Debug:            False
Patched:          False
PreRelease:       False
PrivateBuild:     False
SpecialBuild:     False
Language:         English (United States)

FileVersion:      7.00.9466
Product:          Microsoftr Visual Studio .NET
ProductVersion:   7.00.9466
Debug:            False
Patched:          False
PreRelease:       False
PrivateBuild:     False
SpecialBuild:     False
Language:         English (United States)

If you'd like to save this to a file:

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

this would save all of the output to C:\DLL_Versions.txt.

share|improve this answer
Alternative suggestion: Get-ChildItem $Env:windir -Recurse -Include *.dll -ErrorAction SilentlyContinue | ForEach-Object { [Diagnostics.FileVersionInfo]::GetVersionInfo($_) } | Format-Table { [IO.Path]::GetFileName($_.FileName) },*Version,*Description – nicer table output, no visible error messages about unreachable directories, no string fiddling, no hardcoded Windows directory. – Joey Jan 10 '10 at 12:30
And you should really switch to Lucida Console or Consolas as your console font. The lack of Unicode output in your listing is ... disturbing :-) – Joey Jan 10 '10 at 12:32
Good suggestions, but then the filename heading is [IO.Path]::GetFileName($_.filename) and output is cut off even when piped to a file. Feel free to edit and improve my answer, I have to go to work :\ – John T Jan 10 '10 at 12:40
Thanks for a great script. Is there a tool that makes such reports? – Ron Klein Jan 10 '10 at 15:22
Not that I am aware of unfortunately – John T Jan 11 '10 at 4:27

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .