如何深入研究 COM 对象?
How do I dig into a COM object?
我正在挖掘 .NET 源代码,我发现了一个 COM 对象的互操作 class。如果我有 guid,我该如何找到有问题的 DLL 和 class(就此而言,.NET 如何根据 guid 加载 DLL)?
它在 GAC 的某个地方吗?
COM dll 未放入 GAC(仅适用于 .NET 程序集 - 因此得名 Global Assembly Cache)。
如果您知道 COM 组件的 GUID 并想知道实际二进制文件的路径,您可以在注册表中使用它来计算。
开始 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
我正在挖掘 .NET 源代码,我发现了一个 COM 对象的互操作 class。如果我有 guid,我该如何找到有问题的 DLL 和 class(就此而言,.NET 如何根据 guid 加载 DLL)?
它在 GAC 的某个地方吗?
COM dll 未放入 GAC(仅适用于 .NET 程序集 - 因此得名 Global Assembly Cache)。
如果您知道 COM 组件的 GUID 并想知道实际二进制文件的路径,您可以在注册表中使用它来计算。
开始 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