Как я могу получить список всех окон / системных библиотек и их версий?

5256
Ron Klein

Я хотел бы иметь следующий отчет:

Все библиотеки DLL в% WIN_DIR% на моем компьютере и в его подпапках рекурсивно.

Для каждой найденной библиотеки DLL я хотел бы иметь свою версию файла, версию продукта и т. Д. (Как это можно узнать, просмотрев свойства файла).

Знаете ли вы какую-либо утилиту, которая может подготовить такой отчет?

PS : я знаю, что могу написать сценарий, но здесь вопрос не в этом, поскольку он должен быть выполнен как спускаемая программа / исполняемый файл, а хост сценария недоступен из-за политики безопасности.

Спасибо за любую помощь / привести!

1

1 ответ на вопрос

3
John T

Вы можете использовать Windows PowerShell :

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

несколько строк примера вывода:

Файл: C: \ windows \ assembly \ GAC \ Microsoft.JScript \ 7.0.5000.0__b03f5f7f11d50a3a \ Microsoft.JScript.dll InternalName: Microsoft.JScript.dll Исходное имя файла: Microsoft.JScript.dll FileVersion: 7.10.3052.4 Описание файла: Microsoftr JScript Engine Продукт: Microsoftr JScript .NET ProductVersion: 7.10.3052.4 Отладка: Ложь Исправлено: Ложь PreRelease: False PrivateBuild: False SpecialBuild: False Язык: английский (США)   Файл: C: \ Windows \ Assembly \ GAC \ Microsoft.StdFormat \ 7.0.3300.0__b03f5f7f11d50a3a \ Microsoft.stdformat.dll InternalName: OriginalFilename: FileVersion: 7.00.9466 Описание файла: Продукт: Microsoftr Visual Studio .NET ProductVersion: 7.00.9466 Отладка: Ложь Исправлено: Ложь PreRelease: False PrivateBuild: False SpecialBuild: False Язык: английский (США) ....

Если вы хотите сохранить это в файл:

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

это сохранит весь вывод в C:\DLL_Versions.txt.

Альтернативное предложение: `Get-ChildItem $ Env: windir -Recurse -Include * .dll -ErrorAction SilentlyContinue | ForEach-Object {[Diagnostics.FileVersionInfo] :: GetVersionInfo ($ _)} | Format-Table {[IO.Path] :: GetFileName ($ _. FileName)}, * Version, * Description` - более приятный вывод таблицы, нет видимых сообщений об ошибках о недостижимых каталогах, нет суеты строк, нет жестко закодированного каталога Windows. Joey 14 лет назад 0
И вы действительно должны переключиться на Lucida Console или Consolas в качестве шрифта консоли. Отсутствие вывода Unicode в вашем списке ... тревожит :-) Joey 14 лет назад 0
Хорошие предложения, но тогда заголовок имени файла будет ** [IO.Path] :: GetFileName ($ _. Filename) **, и вывод обрезается даже при передаче в файл. Не стесняйтесь редактировать и улучшать мой ответ, я должен идти на работу: \ John T 14 лет назад 0
Спасибо за отличный сценарий. Есть ли инструмент, который делает такие отчеты? Ron Klein 14 лет назад 0
Не то, чтобы я знал, к сожалению, John T 14 лет назад 0
хорошо, спасибо за сценарий. принято, хотя оригинальный вопрос был о полезности. Ron Klein 14 лет назад 0