问题标签 [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 投票
1 回答
1681 浏览

java - 使用 Java (DCOM) 远程访问 COM 服务器 (EXE)

我有一个关于远程访问 COM 对象的问题。目前我正在使用 JACOB 连接我们的自定义 COM 服务器 (exe),它工作得非常好。然而,我们试图将 Java 代码与 COM 服务器分开,并将它们放在不同的机器上。JACOB 不支持 DCOM。所以我想知道 com4j 有可能吗?如果是这样,您能否指出一些链接等。我已经尝试过使用 j-interop 并且讨厌它,因为它非常冗长且完全不直观。

此外,当我使用 Component Services > DCOM+ Config 访问 COM 服务器的属性时,位置选项卡选项“在以下计算机上运行应用程序”是什么意思?这是否意味着所选计算机上也必须有 COM Server (exe)?这似乎是多余的。

最后,还有其他免费的开源库可以实现我想要实现的功能吗?

感谢您的时间和帮助。

0 投票
1 回答
9161 浏览

security - 通过 WMI 查询远程系统返回拒绝非管理员访问

我有一个简单的 WMI 查询,可以在本地正常运行,但是查询远程系统会出现拒绝访问错误。当我将本地用户作为管理员组的成员添加到远程系统时,查询按预期工作,但我不想让该用户成为该组的成员。

我已经尝试了以下事情,不幸的是到目前为止还没有成功:

  • 我为防火墙启用了 RemoteAdmin(netsh firewall set service RemoteAdmin enable)
  • 我通过 wmimgmt.msc 将具有所有可能访问权限的用户添加到 WMI 安全设置(对于根名称空间,并且我还检查了设置是否正确传播到我正在查询的名称空间,root/cimv2)
  • 我在 DCOM COM 安全中为用户启用了远程访问

每次运行查询时我仍然会遇到相同的错误,还有什么我可能遗漏的吗?

0 投票
1 回答
1331 浏览

c# - 使用 AutoIT 自动化远程窗口

我想在 C# 应用程序中使用 AutoIT 的 COM 接口来自动化远程机器上的窗口。我的代码如下所示:

问题是自动化器似乎没有识别远程机器上的窗口。有什么我做错了吗?这甚至可能吗?

0 投票
1 回答
522 浏览

delphi - Delphi COM EXE 和线程

只是想与那里的 COM/DCOM 专家确认...

我有一个在服务器上运行的 Delphi COM EXE(线程是 Single Apartment),并且同一 EXE 的另一个副本在同一台服务器上启动(一台服务器具有 2 个双核处理器,因此任务管理器显示 4 个单独的图表) 他们会轮流互相等待还是会在不同的内核上运行?

我在某个地方找到了一个帖子,上面写着

“如果两个客户端需要使用同一个对象,他们必须轮流使用。使用这种线程模型,实例数据是安全的,全局数据必须使用临界区或其他形式的序列化来保护。当然,线程的局部变量是在多个呼叫中可靠。”

0 投票
1 回答
1536 浏览

c# - 服务器 Word 自动化权限(一些答案和一些问题)

我正在尝试使用 word 自动化来计算 word 文档中的页数。到目前为止,我遇到了这些错误:

  1. Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046} failed due to the following error: 80070005.

  2. 打开文档时 Word 卡住了。

我目前的决议和到目前为止采取的步骤是:

  1. 将注册表项[HKEY_CLASSES_ROOT\AppID\WINWORD.EXE]从更改{A86A40B3-0008-4D41-975C-BB586C7121E3}{00020906-0000-0000-C000-000000000046}

  2. 在 DCOM 配置DCOMCNFG.EXE中进行了以下更改:

    • 在其 appID“{A86A40B3-0008-4D41-975C-BB586C7121E3}”下显示的“Microsoft Word 应用程序”中,授予用户iusr_<MACHINE_NAME>本地午餐权限(仅限)并将身份设置为“启动用户”。

    • 在“Microsoft Office Word 97 - 2003 文档”中,也被某些人称为“Microsoft Word 文档”(可能取决于 word 版本),我为 iusr 和 iwam 提供了完全启动和访问权限,将身份验证级别设置为“无”,设置启动用户到我自己的管理员用户。

“2-b”部分中所有 3 个 mod 的组合最终使所有这些磨难工作并且现在正在运行。使用我自己的用户启动是对打开文档时单词卡住的响应。将身份验证设置回默认值会导致错误“1”。将启动用户设置回“启动用户”会导致错误“2”。

目前的情况是一切正常,但只有当我的用户在机器上登录并处于活动状态时,我对我必须使用必须登录的自己的用户并且身份验证设置为这一事实并不感到兴奋没有任何。

我写这篇文章是为了回答那些像我一样挣扎了好几天才能让它工作的人,并希望能得到一些关于我如何提高安全性的答案,也就是删除启动用户并重新设置身份验证,而不是24/7 登录到生产机器(网站启动时)。

开发机规格:
Windows XP Pro 32bit
IIS 5.1
Classic ASP Website
COM+ C# object做自动化。

0 投票
4 回答
800 浏览

c# - COM 方法调用在 C#、VB.NET 中失败,但在 Python 中有效

我在尝试使用的 COM 库时遇到问题。当我调用特定方法并传递它时,我得到一个 ArgumentException null。这发生在我的 C# 项目和 VB.NET 项目(我使用 调用该方法Nothing)中,我在 Visual Studio 2008 的“COM”列表中添加了库引用。当我在 Python 中调用相同的方法时,传入None,该方法按预期工作,没有错误。我的理解是 Python 通过 DCOM 与 COM 库进行交互(我只有最模糊的概念),而当我在 C#/VB.NET 项目中引用它时,我可能会直接使用 COM 库。会不会发生什么事情会导致我传递的参数在它到达 COM 库之前搞砸了?我不确定这里发生了什么。我最近将 COM 库更新到了较新的版本,所以我想知道我是否在某个地方遇到了版本冲突,从而导致了异常。我从我的 C# 和 VB.NET 项目中删除了对 COM 库的所有引用,删除了所有目录,binobj重新添加了引用。这确实导致 Interop.MyCOMLibrary.dll 文件显示在obj有今天的日期,而不是我一直看到的旧日期。

我对 COM 库的唯一文档描述了该方法,如下所示:

我现在正在尝试搜索有关Variant参数的问题。

编辑:因此,虽然Type.Missing其他解决方案可以让我顺利通过该方法调用,但尝试从该方法读取返回项目上的某些字符串属性会导致:

System.Runtime.InteropServices.COMException:项目不存在。

这是另一个在 Python 中工作但在 C# 中引发异常的示例,所以我猜测更多 DCOM 与 COM 的怪异。或者这可能是一个线程问题,因为我正在使用 MSTest 进行测试。

0 投票
2 回答
419 浏览

c# - 如何从 C# .NET 强制解除分配 COM 服务器对象

如果特定条件失败或对象部分构造,我能否知道如何从 C# .NET 强制解除分配 COM 服务器对象?

问题是我使用的是使用 DCOM 机制的 COM 服务器;在最坏的情况下,当对象没有完全创建并且我因为失败而退出应用程序时,COM 对象仍在内存中(显示在 COM+ 应用程序组件服务中)。如果超出某些限制,则会导致内存泄漏和崩溃。但是,如果它的故障数量是可控的,它会在某个时间点后被删除。

示例:- Calculator.App objApp = new Calculator.App();

if( !obj.CanBeUsed() ) { //如何释放 COM 对象 objApp }

注意:Garbase 收集器使用 GC.Collect() 方法强制从堆内存中取消分配。我是否可以使用这种方法或 .NET 框架为这种特殊情况提供任何其他解决方案?

0 投票
1 回答
6113 浏览

c# - 如何从 C# 调用 DCOM 对象?

我有一个 CLSID,我需要在我的工作机器所在的不同服务器(即 DCS )中实例化它(即 MWS )。

现在,如果我使用以下内容:

然后我得到“COM 目标没有实现 IDispatch”错误。好的,我知道 COM 目标对象可能没有 IDispatch,所以它失败了。

现在尝试其他方法,如果我在 VS 中添加该 COM DLL 的引用,则 VS 生成互操作程序集,然后一切都像常规的 .net 对象创建一样工作,但在这种情况下,该对象实际上是在我的本地计算机中生成的(MWS pc)没有进入我想要的服务器。

伙计们有什么建议我该如何处理这种情况?

提前致谢。

0 投票
5 回答
18489 浏览

excel - 通过交互式用户的 Excel COM 自动化在用户注销时停止工作

我开发了一个服务器应用程序,它使用 Excel 2007 COM 自动化来转换一些 xls 文件。它作为 Windows Datacenter 实例上的服务启动,在其自己的用户下运行,我必须更改 DCOM 安全设置(“作为交互式用户启动”)才能使其工作。

问题是,当我注销(通过 RDP)时,它停止工作。我登录,它再次工作。

有没有人有同样的问题?

0 投票
0 回答
205 浏览

.net - COM+:服务器和客户端部分的托管代码需要 DCOM 协议吗?

我们在 COM+ 1.0 环境中开发了许多解决方案: 在 COM+ 1.0 中托管并暴露给 VB6 客户端的旧 VB6 DLL,其中分布式工作的协议是 DCOM。我们也使用旧版 VB6 客户端开发了托管在 COM+ 1.0 中的托管代码 COM,并且一切正常。

但是现在我们必须在客户端和服务器部分实现托管代码的通信。

我们想在托管的 COM 和 .NET 客户端中使用带有托管代码的 COM+ 1.5,而我们唯一要问自己的是 COM+ 是否会再次使用 DCOM 作为传输应用程序协议。

更清楚一点:服务器和客户端部分的托管代码需要 DCOM 协议吗?