首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确定COM是In-Proc还是LocalServer

确定COM是In-Proc还是LocalServer
EN

Stack Overflow用户
提问于 2013-03-26 08:54:39
回答 3查看 759关注 0票数 8

我得到了一个使用COM库应用程序,我想知道如何知道该应用程序是将该COM库用作LocalServer还是In-Proc?

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

代码语言:javascript
复制
DATCOMLib::ITEmulationPtr pTE(__uuidof(DATCOMLib::TEmulation));
EN

回答 3

Stack Overflow用户

发布于 2013-04-06 22:35:56

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

您可以在注册表中查找组件的类id,并检查它是否有LocalServer子项。因此,在您的示例中,您将查找:

代码语言:javascript
复制
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{CLSID of DATACOMLib::TEmulation}\LocalServer

如果它是进程内COM组件,则它将具有以下密钥:

代码语言:javascript
复制
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{CLSID of DATACOMLib::TEmulation}\InProcServer32

有关更多详细信息,请查看此文档:http://msdn.microsoft.com/en-us/library/aa908849.aspx

票数 1
EN

Stack Overflow用户

发布于 2013-07-05 14:47:17

可以通过多种方式找到它

查看代码-检查调用"CreateInstance“或"CoCreateInstance”时传递的类上下文是什么- (CLSCTX_INPROC_XXXX则表示它是

  1. ,这意味着它将被加载到调用应用程序的进程地址空间中。CLSCTX_LOCAL_SERVER,CLSCTX_REMOTE_SERVER -那么它就是COM服务器作为一个单独的进程运行。有一些#定义结合了一个或多个标志。只要搜索一下就可以了)

如果您有权访问安装了COM组件的计算机,则可以按照Peter在上面的ITEmulationPtr.CreateInstance(uuid(TEmulation), 0, CLSCTX_XXX)

  • If

中给出的步骤进行操作

票数 1
EN

Stack Overflow用户

发布于 2013-03-26 10:58:45

  1. 运行您的应用程序并确保它加载COM对象(代码到达您的问题中显示的部分)
  2. 打开进程资源管理器(如果您还没有,请从微软获取)
  3. 使用进程资源管理器搜索dll名称如果它在您的可执行文件中,则它在进程中。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15628430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档