Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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

1 Answer 1

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)


File:C:\windows\assembly\GAC\Microsoft.StdFormat\7.0.3300.0__b03f5f7f11d50a3a\Microsoft.stdformat.dll
InternalName:
OriginalFilename:
FileVersion:      7.00.9466
FileDescription:
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

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.