2009-05-22 11 views
28

मेरी एक ऐसी स्थिति है जिसमें एक प्रबंधित डीएलएल कुछ अप्रबंधित डीएलएल को कॉल करता है। मैं अप्रबंधित डीएलएल के सीएलएसआईडी को जानता हूं, क्या सीएलएसआईडी के बाइनरी फाइल हाउसों को जानने का कोई तरीका है?एक सीएलएसआईडी दिए गए डीएलएल को कैसे ढूंढें?

+1

क्या आप इस प्रोग्रामेटिक रूप से या विज्ञापन करने की कोशिश कर रहे हैं? यानी, क्या आपको ऐसा करने के लिए एक कार्यक्रम की आवश्यकता है, या ऐसा कुछ है जिसे आपको कभी-कभी डेवलपर के रूप में करने की ज़रूरत होती है? –

उत्तर

32

Normaly, तुम बस जा सकते हैं:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ CLSID \ "GUID"

और एक कुंजी "InprocServer32" उदाहरण के लिए कहा जाता है खोजने के लिए और है कि डिफ़ॉल्ट मान नहीं होगा डीएलएल यह करने का यह एक आसान तरीका है।

+3

यह ध्यान देने योग्य है कि, यह कैसे स्थापित किया गया था, इस पर निर्भर करता है, आप इसके बजाय HKEY_CURRENT_USER \ सॉफ़्टवेयर \ क्लासेस \ CLSID में पा सकते हैं। – user1454265

+0

जिसका अर्थ है कि 'HKEY_CLASSES_ROOT \ CLSID' का उपयोग किया जाना चाहिए। – IllidanS4

5

क्या आप केवल regedit का उपयोग करके रजिस्ट्री में इसकी खोज नहीं कर सकते हैं और बाइनरी पथ की तलाश कर सकते हैं।

2

BobbyShaftoe जबाब हम एक सरल vbs स्क्रिप्ट कि हमारे लिए है कि रजिस्ट्री पढ़ता निर्माण कर सकते हैं के आधार पर:

Sub Main 

    ' used to find location of "System.Collections.ArrayList" progid dll 
    Const csGUID = "{6896B49D-7AFB-34DC-934E-5ADD38EEEE39}" 

    MsgBox srGetDllPathByGUID(csGUID) 

End Sub 

Function srGetDllPathByGUID(sGUID) 
    Const csRegPath = "HKEY_CLASSES_ROOT\CLSID\<GUID>\InProcServer32\" 

    Dim oShell: Set oShell = CreateObject("WScript.Shell") 
    Dim sReg: sReg = Replace(csRegPath, "<GUID>", sGUID) ' build str 

    srGetDllPathByGUID = oShell.RegRead(sReg) 

    Set oShell = Nothing ' clean up 
End Function 

Call Main 

तुम भी ProgId पा सकते हैं

Dll_RegPath = "HKEY_CLASSES_ROOT\CLSID\<GUID>\InProcServer32\" 

करने के लिए "test.vbs" चिपकाएँ द्वारा:

ProgID_RegPath = "HKEY_CLASSES_ROOT\CLSID\<GUID>\ProgID\" 
संबंधित मुद्दे

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