2015-11-24 77 views
0

我正在挖掘.NET源代碼,並且發現了一個COM對象的interop類。如果我有GUID,我該如何去查找有問題的DLL和類(並且就此而言,.NET如何根據GUID加載DLL)?如何挖掘COM對象?

它在GAC某處嗎?

+0

很廣泛的問題,這是很容易回答用在何處註冊表和磁盤看,如果你描述明確提示你發現了什麼。 –

+0

@HansPassant是的,這是一個廣泛的問題。主要是因爲我不知道該問什麼。我正在研究http://stackoverflow.com/questions/33615152/how-does-wpf-store-the-language-dictionaries,但沒有人回答,所以我正在挖掘自己,並學習一點關於COM一路上。 – McKay

+0

這不會讓你走得很遠,它使用無證API。您誤讀了Guid,CLSID是333E6924-4353-4934-A7BE-5FB5BDDDB2D6。這將把你帶到c:\ windows \ system32 \ NaturalLanguage6.dll。用C++編寫,你不能反編譯它。它嵌入了類型庫,您可以通過從Visual Studio命令提示符運行OleView.exe來查看它。使用它的文件>查看Typelib菜單命令。但是,只要你會得到。 –

回答

1

COM dll未放入GAC(僅適用於.NET程序集 - 因此名稱爲全局程序集高速緩存)。

如果您知道COM組件的指導並想知道實際二進制文件的路徑,那麼您可以在註冊表中使用它。

開始regedit.exe,導航到

HKEY_CLASSES_ROOT\CLSID\<guid value>\InprocServer32 

,檢查鍵的默認值。另外,對於命令行愛好者,使用reg.exe工具:

reg query HKEY_CLASSES_ROOT\CLSID\{0000002F-0000-0000-C000-000000000046} 
HKEY_CLASSES_ROOT\CLSID\{0000002F-0000-0000-C000-000000000046}\InprocServer32 
    (Default) REG_SZ C:\Windows\System32\oleaut32.dll 
    ThreadingModel REG_SZ Both 
+0

啊,是的,不是GAC。 – McKay