2011-03-11 15 views
12

मैं आपके सामने एक डीएलएल रखता हूं। केवल Win32 SDK का उपयोग करके, क्या आप मुझे बता सकते हैं कि यह DLL एक .NET असेंबली है?क्या यह डीएलएल प्रबंधित या अप्रबंधित है?

क्यों? हमारा एप्लिकेशन डीएलएल के रूप में प्लगइन लोड करता है। हम .NET असेंबली की अनुमति देने के लिए इन प्लगइन की परिभाषा को विस्तारित करने का प्रयास कर रहे हैं लेकिन इंटरफेस अलग होगा और इस प्रकार लोडर को यह जानने की आवश्यकता होगी कि डीएलएल इसे लोड करने से पहले प्रबंधित या अप्रबंधित है या नहीं।

+0

आप प्लगइन निर्माता से विशेष संसाधन शामिल करने के लिए कह सकते हैं। –

उत्तर

4

डीएलएल में किस प्रकार की जानकारी निहित है, इस बारे में जानकारी के लिए आप पीई हेडर जानकारी देख सकते हैं। यह article describes how to accomplish this in detail

7

मैं इसे .NET असेंबली के रूप में लोड करने का प्रयास करता हूं, और यदि यह विफल रहता है, तो "अप्रबंधित" इंटरफ़ेस पर वापस आना।

+0

प्रबंधित असेंबली लोड करते समय अनुपलब्ध निर्भरताओं जैसे त्रुटियों को लोड नहीं करेगा प्लगइन लोडर अप्रबंधित मोड में वापस आना चाहिए? – Harindaka

+0

@ हरिंडाका: मुझे लगता है कि यह होगा, तो क्या? अप्रबंधित लोडर भी असफल हो जाएगा, और यह कहानी का अंत होगा। आप इसके साथ क्या समस्याएं देखते हैं? –

11

यह निर्धारित करने के लिए कि कोई DLL (या EXE) प्रबंधित या अप्रबंधित है, use dumpbin.exe with the /dependents switch। यदि आप mscoree.dll in the output देखते हैं, तो असेंबली एक प्रबंधित असेंबली है।

Dump of file <MANAGED_DLL>.dll 

File Type: DLL 

    Image has the following dependencies: 

    mscoree.dll 

    Summary 

     2000 .reloc 
     2000 .rsrc 
     2000 .sdata 
     12000 .text 

dumpbin.exeदृश्य स्टूडियो उपकरण के हिस्से के रूप वितरित किया जाता है:

उदाहरण के लिए, एक प्रबंधित DLL है कि मैं दृश्य स्टूडियो 2010 में बनाया के लिए, मैं निम्नलिखित उत्पादन मिलता है। इसे चलाने के लिए, ऐसा करने का एक सुविधाजनक तरीका विजुअल स्टूडियो कमांड प्रॉम्प्ट के माध्यम से है। उदाहरण के लिए, मेरे विंडोज 7 दृश्य स्टूडियो 2010 से चल रहा है मशीन से, मैं कम से विंडोज प्रारंभ मेनू में दृश्य स्टूडियो कमांड प्रॉम्प्ट लगता है:

माइक्रोसॉफ्ट विजुअल स्टूडियो 2010 =>दृश्य स्टूडियो उपकरण =>दृश्य स्टूडियो कमांड प्रॉम्प्ट (2010)

फिर, विजुअल स्टूडियो कमान के भीतर शीघ्र बस दर्ज करें:

dumpbin /dependents DLL_OF_INTEREST.DLL 

या

dumpbin /dependents EXE_OF_INTEREST.EXE 

एक विकल्प के रूप में, आप corflags.exe उपयोगिता है कि यह विजुअल स्टूडियो उपकरण के साथ शामिल है का उपयोग कर सकते हैं। एक अप्रबंधित विधानसभा पर दृश्य स्टूडियो कमांड प्रॉम्प्ट से यह चल रहा है:

corflags UNMANAGED.DLL 

मिल ..you'll:

corflags : error CF008 : The specified file does not have a valid managed header 

...

Version : v2.0.50727 
CLR Header: 2.5 
PE  : PE32 
CorFlags : 1 
ILONLY : 1 
32BIT  : 0 
Signed : 0 

संबंधित:

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