DLL / EXE विवरण का निरीक्षण करने के लिए कुछ अच्छे कमांड लाइन तरीके क्या हैं?


13

अधिकांश विंडोज़ निष्पादन योग्य (DLL, EXE ...) के साथ, संस्करण और अन्य विवरण "गुण" ( Alt+ Enter) में "विवरण" टैब का उपयोग करके देखे जा सकते हैं ।

Windows 7 amd64 से shell32.dll का विवरण

मुझे आश्चर्य है: ऐसा करने के लिए एक कमांड-लाइन तरीका भी है? मुझे विशेष रूप से उत्पाद संस्करण के लिए दिलचस्पी है, लेकिन अन्य चीजें भी उपयोगी हो सकती हैं।

पूर्ववर्ती क्रम में निम्नलिखित गुण वांछित हैं:

  • एक पैरामीटर के रूप में exe / dll पथ को स्वीकार करें
  • मानक उत्पादन के लिए उत्पादन (ताकि आप |पाइप के माध्यम से बाकी की प्रक्रिया कर सकें )
  • सभी समर्थित विंडोज (XP +) में डिफ़ॉल्ट रूप से उपलब्ध
  • विंडोज विस्टा + में डिफ़ॉल्ट रूप से उपलब्ध है
  • Windows XP में डिफ़ॉल्ट रूप से उपलब्ध है
  • वाणिज्यिक वातावरण में प्रयोग करने योग्य है
  • मुफ्त लाइसेंस (GPL की तरह)
  • पोर्टेबल (यानी, स्वसंपूर्ण निर्वासन, शायद DLL के साथ)

यह पहले से ही स्टैक ओवरफ्लो पर पूछा गया है: विंडोज DLL संस्करण को डंप करने के लिए कमांड लाइन टूल?
Alois Mahdal

जवाबों:


9

शक्तियों में, get-command "full-path-to-executable" | format-listचाल चलेंगे। Powershell विस्टा और बाद में विंडोज के लिए नई कमांड-लाइन है, जिसे XP में स्थापित किया जा सकता है।


मैं काम करने के लिए अपने कोड नहीं मिल सकता है ...
soandos

मुझे अब तक मिला है get-command "$args[0]" | format-list, जिसे मैंने सहेजा है aaa.ps1और बुलाया है, powershell -File aaa.ps1 shell32.dllलेकिन वह कुछ भी नहीं छापता है।
एलोइस महदाल

@soandos: ऐसा प्रतीत होता है कि शक्तियां v2 को मनमाने ढंग से निष्पादनयोग्य के साथ काम करने के लिए आवश्यक है।
kreemoweet

मेरे पास v2
शक्तियां हैं

अच्छा, मुझे नहीं पता था कि, यह संपत्ति की खिड़की से थोड़ी अधिक जानकारी भी लौटाता है। दिलचस्प जानकारी वस्तु की FileInfoVersionसंपत्ति में ApplicationInfoसंलग्न है।
mjsr

5

Microsoft की DUMPBIN उपयोगिता का उपयोग करें ।

इसके बहुत सारे उपयोगी विकल्प हैं, हालांकि, यह इस बात पर निर्भर करता है कि आप क्या करना चाहते हैं।

हालांकि, यह मुफ़्त नहीं है, लेकिन मेरा मानना ​​है कि विंडोज एसडीके के साथ स्वतंत्र रूप से प्राप्त किया जा सकता है।


3
अगर यह एसडीके के साथ स्वतंत्र रूप से प्राप्त किया जा सकता है तो यह मुफ़्त क्यों नहीं है?
CJ7

4

आप sigcheck.exeपोर्टेबल टूल का उपयोग कर सकते हैं जो Sysinternals Suite का हिस्सा है , जैसे

$ 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

Windows के पुराने संस्करण जैसे XP / 2k / 2003 (यह अभी भी नए में काम करता है) के लिए, filever.exeटूल का उपयोग करें ( exedll.info पर सीधे लिंक की जांच करें ) जैसे कि किसी फ़ाइल के बारे में विशेष जानकारी प्राप्त करने के लिए:

  • वह प्लेटफ़ॉर्म जिस पर फ़ाइल चलती है
  • फ़ाइल का संस्करण
  • फ़ाइल की विशेषताएँ
  • फ़ाइल प्रकार
  • फ़ाइल की भाषा
  • चाहे फ़ाइल शिपिंग प्रकार हो या डिबग प्रकार
  • फ़ाइल का आकार
  • फ़ाइल बनाई गई दिनांक
  • फ़ाइल का पथ

कुछ अन्य विचार करने के लिए:

  • Microsoft COFF बाइनरी फ़ाइल डम्पर (DUMPBIN.EXE)

    सामान्य ऑब्जेक्ट फ़ाइल स्वरूप (COFF) बाइनरी फ़ाइलों के बारे में जानकारी प्रदर्शित करता है। आप COFF ऑब्जेक्ट फ़ाइलों, COFF ऑब्जेक्ट्स के मानक पुस्तकालयों, निष्पादन योग्य फ़ाइलों और डायनेमिक-लिंक लाइब्रेरीज़ (DLL) की जांच करने के लिए DUMPBIN का उपयोग कर सकते हैं।

  • binwalk- विभिन्न प्रकार के सीपीयू आर्किटेक्चर के लिए निष्पादन योग्य ऑपकोड के लिए निर्दिष्ट फ़ाइल खोजें। विश्लेषण, रिवर्स इंजीनियरिंग, और बाइनरी फ़ाइलों से दिलचस्प फ़ाइलों / डेटा को निकालने के लिए उपकरण का उपयोग करना आसान है।


अधिक आदेशों के लिए, जांचें:


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  

स्रोत एक .vbs फ़ाइल का एक लिंक है जो आपके लिए फ़ाइल संस्करण प्राप्त कर सकता है, और आप जो चाहें उसे ले सकते हैं और आउटपुट का उपयोग कर सकते हैं।

जहाजों को विंडोज़ के सभी संस्करण, लाइसेंस के बारे में निश्चित नहीं, बहुत पोर्टेबल, लेकिन exe या DLL नहीं।


वहाँ जवाब के एक जोड़े है, मुझे यकीन नहीं है जो आप मतलब है। हालांकि, मैंने उनमें से कुछ की कोशिश की, उन्हें लगता है कि notepad.exe हार्ड-कोडेड का रास्ता है। क्या उन्हें लपेटने का एक आसान तरीका है ताकि वे पैरामीटर के रूप में dll / exe के लिए रास्ता स्वीकार करें? अधिमानतः मानक उत्पादन के लिए उत्पादन?
Alois Mahdal

यह एक पैरामीटर के रूप में एक रास्ता लेता है, और उत्पाद संस्करण में निहित हैGetProductVersion
soandos
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.