我有一个使用COM库的应用程序,只是想知道如何知道该应用程序使用该COM库作为LocalServer还是In-Proc?

我查看了以这种方式构造的代码:

DATCOMLib::ITEmulationPtr pTE(__uuidof(DATCOMLib::TEmulation));

最佳答案

这部分取决于创建对象时提供的执行上下文-有关更多详细信息,请参见此处:http://msdn.microsoft.com/en-us/library/windows/desktop/ms693716(v=vs.85).aspx

您可以在注册表中查找组件的类ID,并检查它是否具有LocalServer子项。因此,在您的情况下,您将寻找:

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{CLSID of DATACOMLib::TEmulation}\LocalServer

如果它是一个In Proc COM组件,它将具有以下 key :
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{CLSID of DATACOMLib::TEmulation}\InProcServer32

查看此文档以获取更多详细信息:http://msdn.microsoft.com/en-us/library/aa908849.aspx

10-06 09:17