2009-01-24 16 views
59

यदि मेरे पास विंडोज निष्पादन योग्य है, तो मैं यह कैसे पता लगा सकता हूं कि यह कौन सा डीएल लोड करेगा?मैं कैसे पता लगा सकता हूं कि निष्पादन योग्य कौन से डीएल लोड होंगे?

मैं सिर्फ उन लोगों के बारे में बात कर रहा हूं जो स्थिर रूप से लोड किए जाएंगे, न कि लोडलोडरी जैसे कुछ के साथ गतिशील रूप से लोड हो सकता है।

उत्तर

28

ऐसी सुविधाएं हैं जो आपके लिए यह कर सकती हैं।

अतीत मैं एमएस उपकरण (Depends.exe) है कि के साथ आया था का उपयोग किया है में (मुझे लगता है कि) वीबी .:
https://msdn.microsoft.com/en-us/library/8kche8ah.aspx

और इस के रूप में अच्छी तरह से:
http://dependencywalker.com/

और शायद अन्य भी।

+4

विजुअल स्टूडियो/वीबी/... और "depend.exe" के साथ स्थापित "depend.exe" जो http://dependencywalker.com/ से डाउनलोड कर सकता है, वही टूल (केवल अलग संस्करण) हैं । ;) –

8

Dependency Walker यह निर्धारित करने में आपकी सहायता कर सकता है कि कौन सा .dll लोड किया जाएगा।

+0

अच्छा जीयूआई कार्यक्रम। 'निर्भरता वाकर' डीएलएल और उनके पदानुक्रमिक निर्भरताओं को खोजने का प्रयास करें। – SuB

39

dumpbin एक उपकरण है कि कुलपति ++ साथ आता है।

क्या DLLs एक प्रोग्राम आयात करेगा देखने के लिए:

  • ओपन दृश्य स्टूडियो
  • मेनू आइटम उपकरण | दृश्य स्टूडियो कमांड प्रॉम्प्ट
  • सीडी निष्पादन युक्त
  • DUMPBIN/आश्रितों whatever.exe
Dump of file whatever.exe 

File Type: EXECUTABLE IMAGE 

    Image has the following dependencies: 

    AIOUSB.DLL 
    sqlite3.dll 
    wxmsw293u_core_vc_custom.dll 
    wxbase293u_vc_custom.dll 
    KERNEL32.dll 
    ole32.dll 
    OLEAUT32.dll 
    MSVCP90.dll 
    MSVCR90.dll 

क्या कार्य (और DLLs) को देखने के लिए यह आयात करेगा, का उपयोग फ़ोल्डर में

C:\> dumpbin /imports whatever.exe 
+2

मेरा मानना ​​है कि यह होना चाहिए: डंपबिन/आश्रित जो भी हो .exe –

+1

/आश्रित केवल आपको डीएलएल दिखाता है।/ आयात आपको कार्यों * और * डीएलएल दिखाता है। –

+0

यह सबसे अच्छा जवाब है। दुर्भाग्यवश यह टूल केवल '.exe' के लिए लोड किए गए डीएलएल को दिखाता है जो डीएलएल नहीं है जो निष्पादन योग्य फ़ाइल अप्रत्यक्ष रूप से उन पर निर्भर करता है। – SuB

1

एनडीपेन्ड नामक एक आसान टूल है जो आपको सभी डीएलएल निर्भरताओं को देगा।

+0

_'ndepend' .NET प्रबंधित कोड'_ के लिए एक स्थिर विश्लेषण उपकरण है। तो यह केवल .NET अनुप्रयोगों के लिए काम करता है। – SuB

10

बस कमांड प्रॉम्प्ट पर जाएं और tasklist /m टाइप करें, आप विशिष्ट प्रोग्राम द्वारा उपयोग की जाने वाली डीएलएल फाइलों की सूची देखेंगे।

+0

हाँ, यह वही करता है जो आप कहते हैं, हालांकि, अगर एक निष्पादन योग्य एकाधिक प्रक्रियाएं शुरू करता है, तो आप कमांड लाइन से कभी नहीं पाएंगे, जिसे निष्पादन योग्य द्वारा शुरू किया गया था, इसलिए आप निष्पादन योग्य के सभी निर्भर डीएल को नहीं जान पाएंगे। – Fazi

2

माइक्रोसॉफ्ट नेट के लिए समाधान:

foreach (AssemblyName a in Assembly.ReflectionOnlyLoadFrom("SAMPLE.EXE").GetReferencedAssemblies()) 
{ 
    MessageBox.Show(a.Name); 
} 
11

कमांड प्रॉम्प्ट खोलें और फिर नीचे टाइप कमान

कार्यसूची/एम/फाई "imagename eq netbeans.exe"

प्रकार के बजाय netbeans.exe जो भी आपके exe फ़ाइल नाम का नाम है।

+0

अच्छी टिप, हालांकि केवल प्रोसेसिंग चलाने के लिए काम करता है। –

+0

मैंने इसका इस्तेमाल किया और यह मुझे उपयोग करने वाले डीएलएस की पूरी सूची नहीं दे रहा है, क्रिस्टलरपोर्ट्स डीएलएस का एक समूह है जो मेरा एक्सई उपयोग कर रहा है लेकिन मुझे उस आदेश के माध्यम से मुद्रित सूची में कोई भी उल्लेख नहीं है। कोई विचार? – user734028

संबंधित मुद्दे

 संबंधित मुद्दे