Apa sajakah cara baris perintah yang bagus untuk memeriksa detail DLL / EXE?

13

Dengan sebagian besar executable Windows (DLL, EXE ...), versi dan detail lainnya dapat dilihat menggunakan tab "Detail" di "Properties" ( Alt+ Enter).

Rincian shell32.dll dari Windows 7 amd64

Saya bertanya-tanya: apakah ada cara baris perintah untuk melakukan ini? Saya sangat tertarik untuk versi Produk, tetapi juga hal-hal lain dapat bermanfaat.

Properti berikut ini diinginkan, dalam urutan prioritas:

  • terima jalur exe / dll sebagai parameter
  • output ke output standar (sehingga Anda dapat memproses sisanya melalui |pipa)
  • tersedia secara default di semua Windows yang didukung (XP +)
  • tersedia secara default di Windows Vista +
  • tersedia secara default di Windows XP
  • dapat digunakan dalam lingkungan komersial
  • lisensi gratis (seperti GPL)
  • portable (mis. exe mandiri, mungkin disertai dengan DLL)
Alois Mahdal
sumber
Ini telah ditanyakan pada Stack Overflow: Alat baris perintah untuk membuang versi Windows DLL?
Alois Mahdal

Jawaban:

9

Dalam PowerShell, get-command "full-path-to-executable" | format-listakan melakukan trik. Powershell adalah baris perintah baru untuk Vista dan kemudian Windows, dapat diinstal di XP.

kreemoweet
sumber
Saya tidak dapat membuat kode Anda berfungsi ...
soandos
Saya sudah sejauh ini get-command "$args[0]" | format-list, yang saya simpan sebagai aaa.ps1dan dipanggil powershell -File aaa.ps1 shell32.dlltetapi tidak mencetak apa-apa.
Alois Mahdal
@soandos: tampaknya PowerShell v2 diperlukan untuk mendapatkan-perintah untuk bekerja dengan executable yang sewenang-wenang.
kreemoweet
Saya memiliki powershell v2
soandos
bagus, saya tidak tahu itu, bahkan mengembalikan sedikit informasi lebih dari jendela properti. Info menarik dirangkum dalam FileInfoVersionproperti ApplicationInfoobjek.
mjsr
5

Gunakan utilitas DUMPBIN Microsoft .

Ini memiliki banyak opsi berguna, namun, itu tergantung pada apa yang ingin Anda lakukan.

Namun, ini tidak gratis, tapi saya percaya bisa didapatkan secara gratis dengan Windows SDK.

wizzard0
sumber
3
Mengapa tidak gratis jika dapat diperoleh secara bebas dengan SDK?
CJ7
4

Anda dapat menggunakan sigcheck.exealat portabel yang merupakan bagian dari Sysinternals Suite , mis

$ sigcheck.exe some_app.exe

Sigcheck v2.51 - File version and signature viewer
Copyright (C) 2004-2016 Mark Russinovich
Sysinternals - www.sysinternals.com

C:/Program Files (x86)/Foo App\some_app.exe:
    Verified:   Signed
    Signing date:   14:48 23/12/2015
    Publisher:  X
    Company:    X
    Description:    X
    Product:    Some App
    Prod version:   5.0.0.1241
    File version:   5.0.0.1241
    MachineType:    32-bit

Untuk versi Windows yang lebih lama seperti XP / 2k / 2003 (masih berfungsi di yang baru), gunakan filever.exealat (periksa tautan langsung di exedll.info ) untuk mendapatkan informasi spesifik tentang file seperti:

  • Platform tempat file berjalan
  • Versi file
  • Atribut file
  • Jenis file
  • Bahasa file
  • Apakah file tersebut merupakan jenis pengiriman atau jenis debug
  • Ukuran file
  • Tanggal pembuatan file
  • Jalur file

Beberapa lainnya untuk dipertimbangkan:

  • Dumper File Biner Microsoft COFF (DUMPBIN.EXE)

    Menampilkan informasi tentang file biner Common Object File Format (COFF). Anda dapat menggunakan DUMPBIN untuk memeriksa file objek COFF, pustaka standar objek COFF, file yang dapat dieksekusi, dan pustaka tautan dinamis (DLL).

  • binwalk- cari file yang ditentukan untuk opcodes yang dapat dieksekusi yang umum untuk berbagai arsitektur CPU. Alat yang mudah digunakan untuk menganalisis, merekayasa balik, dan mengekstraksi file / data menarik dari file biner.


Untuk perintah lebih lanjut, periksa:

kenorb
sumber
3
Function GetProductVersion (sFilePath, sProgram)  
Dim objShell, objFolder, objFolderItem, i  
If FSO.FileExists(sFilePath & "\" & sProgram) Then  
    Set objShell = CreateObject("Shell.Application")  
    Set objFolder = objShell.Namespace(sFilePath)  
    Set objFolderItem = objFolder.ParseName(sProgram)  
    Dim arrHeaders(300)  
    For i = 0 To 300  
        arrHeaders(i) = objFolder.GetDetailsOf(objFolder.Items, i)  
        'WScript.Echo i &"- " & arrHeaders(i) & ": " & objFolder.GetDetailsOf(objFolderItem, i)  
        If lcase(arrHeaders(i))= "product version" Then  
            GetProductVersion= objFolder.GetDetailsOf(objFolderItem, i)  
            Exit For  
        End If  
    Next  
End If  
End Function  

Source adalah tautan ke file .vbs yang bisa mendapatkan versi file untuk Anda, dan Anda bisa mengambilnya dan menggunakan output sesuai keinginan Anda.

Kapal akan semua versi windows, tidak yakin tentang lisensi, sangat portabel, tetapi tidak exe atau DLL.

soando
sumber
Ada beberapa jawaban di sana, saya tidak yakin yang mana yang Anda maksud. Namun, saya mencoba beberapa dari mereka, mereka tampaknya memiliki jalur ke notepad.exe yang dikodekan. Apakah ada cara mudah untuk membungkusnya sehingga mereka menerima path ke dll / exe sebagai parameter? Lebih disukai keluaran ke keluaran standar?
Alois Mahdal
Dibutuhkan path sebagai parameter, dan versi produk terkandung diGetProductVersion
soandos