问题标签 [dcom]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
19541 浏览

c# - 办公自动化的DCOM故障

我开发了一个 C# 程序,它从 SQL Server 数据库中提取数据,然后生成包含数据的 Word 文档。我已将该程序设置为在 Windows Server 2003 机器上作为 SSIS 作业的一部分运行。该程序作为没有管理权限的用户 SQLSVC 运行。当我以 SQLSVC 身份登录并运行程序时,它会正确执行。但是,当程序作为 SSIS 作业自动运行时,它会在以下代码行冻结

当我强行终止进程时,会生成以下错误消息。

据我所知,问题出在 DCOM 权限上。我已经使用 dcomcnfg 将所有可能的 DCOM 权限添加到用户 SQLSVC,但这没有帮助。还有其他可能的解决方案吗?

0 投票
1 回答
1802 浏览

windows - 这个奇怪的 32 位/64 位互操作解决方案是如何工作的?

我目前正在维护我们几年前外包的软件,但文档记录很差。该部分是供第三方应用程序使用的 COM 服务器和执行所有必要部署的安装程序。

内核编译为 32 位 DLL,旨在用于 32 位应用程序。还有一个 shim 编译为 64 位 DLL,用于 64 位应用程序。shim 调用 CoCreateInstance() 来实例化核心并将调用重定向到核心。核心依赖于大量其他 32 位库。

32 位内核的注册方式与正常的进程内服务器完全一样 - HKCR\CLSID 下有一个条目,其中包括内核类 ID 和 InprocServer32 下的库路径。64 位 shim 以相同的方式注册,并且还为 64 位 shim 引入了一个应用程序 ID - 它添加到 HKCR\CLSID 下,并且还向 DCOM 注册 - 在 DCOM 控制台中有一个具有该应用程序 ID 的条目。

现在 DCOM 注册看起来很奇怪。为什么将垫片注册到 DCOM 而不是核心?我希望 32 位内核应该注册到 DCOM 以在单独的进程中实例化并与 64 位使用者屏蔽。但显然它像目前所做的那样工作。用 DCOM 注册 64 位 shim 而不是 32 位内核有什么意义?

0 投票
3 回答
3346 浏览

windows - 我该如何配置 DCOM 以将我的 DLL 加载到单独的进程中?

我正在尝试将现有的本机 C++ ATL in-proc COM 服务器强制转换为单独的进程。我希望 DCOM 可以在不更改 COM 服务器的情况下为我做到这一点。

我从通常的注册表设置开始 - 我有一个 HKCR\CLSID{classId} 条目和一个 InProcServer32 键,其中指定了 .dll 文件的路径。

我生成了一个应用程序 ID (GUID) 并在这里和那里添加了它。具体来说,我在 HKCR\CLSID{classId} 下添加了一个字符串值“AppId”,等于应用程序 ID。我还添加了一个 HKCR\AppId{applicationId} 键和一个等于空字符串的字符串值“DllSurrogate”。我认为将我的 COM 服务器强制为系统提供的默认代理就足够了。

DCOM 应用程序出现在 DCOM 配置控制台中。但是,当我调用CoCreateInstance()orCoGetClassObject()并提供类 ID 时,CLSCTX_LOCAL_SERVER它会返回“类未注册”。我究竟做错了什么?

UPD:已解决。所采取的步骤足以使其工作,除了我正在为错误的类 id 编辑注册表,由于某种原因在 InProcServer32 键下具有相同的路径 - 也许这是一个 COM 地狱问题。

0 投票
1 回答
214 浏览

windows - 我应该选择哪一个来在单独的进程中托管我的进程内服务器 - COM+ 或 DCOM?

我需要从 32 位本机 C++ ATL 进程内 COM 组件中屏蔽 64 位 COM 组件使用者。

似乎 COM+ 和 DCOM 都可以在单独的进程中托管我的进程内组件并进行编组,这样我和消费者应用程序都不会关心它,我什至不必更改我的进程内组件全部。我尝试了这两种方法——在最初使用锤子分别设置 COM+ 应用程序或 DCOM 应用程序之后,两者似乎都“正常工作”。

我需要一个在部署和诊断客户问题方面最好的解决方案。我该选择哪一个 - COM+ 还是 DCOM?

0 投票
6 回答
2333 浏览

dcom - DCOM 有什么问题?

似乎对 DCOM 有很多敌意,我很想知道为什么。对于一家仍在使用 C++ 编写 Win32 SKD 的公司,在当前或未来的开发中是否有任何不使用 DCOM 的真正理由?某些未来版本的 Windows 将不支持它吗?是不是太脆弱,不能经常工作?与其他技术相比,实施起来是否过于复杂?这是怎么回事?

0 投票
2 回答
2495 浏览

c# - 远程 COM 服务器实例化

我有一个 COM 接口来启动和使用程序。这在本地机器上效果很好。是否有可能通过网络在另一台机器上启动该程序,而无需在其上安装其他软件或更改程序?

0 投票
2 回答
840 浏览

c++ - DCOM CoCreateInstanceEx E_ACCESSDENIED

我正在使用 2 台 PC,它们都运行 Windows XP。两者都使用其 DCOM 接口注册了相同的应用程序。现在我正在尝试从另一台计算机上启动程序。

首先我调用了 CoInitializeSecurity,然后调用了 CoCreateInstanceEx,但结果是 E_ACCESSDENIED。

我确实也运行了 dcomcnfg,让任何人都可以访问,但它没有帮助。

0 投票
1 回答
4793 浏览

com - 使用脚本/api 更改组件服务 > COM 安全性中的访问权限?

是否有用于更改 COM 安全性的访问权限的 api?我需要将新值写入“编辑限制...”和“编辑默认值...”。这些是普通的注册表设置吗?找不到如何设置这些条目。

0 投票
1 回答
128 浏览

windows - 以编程方式发现“仅限访客”共享/安全模型

在现代 Windows 上,默认配置是这样完成的,即如果我以本地用户身份登录网络,我实际上只会以访客身份获得身份验证(有关此行为的更多详细信息,请参阅http://technet.microsoft.com /en-us/library/cc786449(WS.10).aspx )

当我的程序尝试通过 DCOM 访问此类服务器上的 WMI 时,我只是收到“拒绝访问”错误,可能是因为不允许来宾用户连接到 WMI。

我想将此错误与其他类型的拒绝访问错误区分开来,例如密码错误或用户名不存在,以便我可以向用户解释他们需要什么来解决问题。

所以我的问题是,我能做些什么来检测这样的服务器。我在想,如果有一些 COM 组件可以由来宾激活,那就可以了 --- 我可以尝试激活这样的组件,如果可行,我知道我的登录凭据是正确的。但我想不出任何这样的具体组成部分。

有谁知道这样的组件?或任何其他诊断这种情况的方法?

0 投票
1 回答
1307 浏览

java - Java<->DCOM 通信中的 DLL/TLB

我必须编写一个 OpenOffice 附加组件(用 Java 编写),它与某些闭源应用程序的 DCOM 服务器通信。主要问题是,我没有任何关于服务器 Interfaces 的文档。

我所拥有的只是应用程序的 VB/C++ SDK 工具包。SDK 在 dll 中包含一个库和一堆 *.tlb 文件。在 SDK 文档中有一条信息,我可以使用 java,但根本没有示例。我已经阅读了提供的示例,看起来所有与 DCOM 的通信都通过这个 dll。

有没有办法以某种方式将此类 dll/tlb 函数 def 直接导入 java,绕过 dll 并与 DCOM 通信,或者我必须编写一个 C++ 包装器(dll)?最好的方法是什么?

欢迎任何提示。