我有一个使用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