OPC数据采集DCOM配置-问题解决

KEPServerEX 配置 OPC DA 通信
https://www.drsanwujiang.com/kepserverex-configure-opc-da-communication/#toc-head-1

DCOM配置参考,OPC Server端配置、OPC DA客户端浏览远程OPC Server
https://blog.csdn.net/qq_28768521/article/details/125782898

OpcEnum交互式用户不可选解决办法

https://blog.csdn.net/xiaochenXIHUA/article/details/117082617

1
2
3
4
5
6
7
8
9
重新注册OpcEnum.exe
①首先检查OpcEnum.exe存在哪个文件夹;

②如果OpcEnum.exe存在System32目录下,则在CMD中执行以下命令

C:\Windows\System32\OpcEnum.exe /regserver
③如果OpcEnum.exe存在SysWOW64目录下,则在CMD中执行以下命令

C:\Windows\SysWOW64\OpcEnum.exe /regserver

DCOM配置 OpcEnum 位置在此计算机上运行灰色无法选择

https://blog.csdn.net/weixin_45134977/article/details/126245825

1
2
3
4
5
6
7
问题描述:
在进行OPCDA消息抓包测试时,需要在俩台主机配置DCOM,配置过程发现服务器(Win10 专业版)的OpcEnum组件属性位置配置种在此计算机上运行应用选项无法选择。

解决办法:
Win+R 以管理员运行命令提示行,执行命令
mmc comexp.msc /32
亲测对本人所遇问题有效
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
您好!
我们了解到您关于windows 10DCOM如何配置的问题。
您可以按照以下步骤尝试下:

1.安装OPC运行库
KEPServer集成了OPC运行库,所以不需要单独安装
OPC Core Components Redistributable.msi 链接: https://pan.baidu.com/s/1gU7_2e1Ye_qW1saObYV6xQ 密码: 9evk

2.创建用户并赋予访问权限 :计算机管理
创建用户:
OPCUser
123456
添加到DCOM组

3.防火墙关于 DCOM 和 OPC 的规则 :高级安全 Windows Defender 防火墙

开放 DCOM 访问 :DCOM(wmi)启用
135端口:只有一个计算机不需要设置
创建 OPC 程序规则 :允许程序 OPCEnum
位置:"C:\Windows\SysWOW64\OpcEnum.exe"
添加 OPC 服务器程序的规则:允许程序 KEPServer的server_runtime
位置:"C:\Program Files (x 86) \Kepware\KEPServerEX 6\server_runtime.exe"


4.配置 DCOM 安全:组件服务
配置 COM 的安全设置:我的电脑--COM属性--安全--访问、激活 配置
OPCENUM 的安全设置 :OpcEnum的安全选项
配置 OPC 服务器的安全设置 :KEPServer的安全选项

5.配置本地安全策略 :
本地安全策略 本地策略--网络访问--匿名 :启用

希望以上的信息可以帮助到您

DCOM access, so as to avoid such exceptions. [0x00000005

Caused by: org.jinterop.dcom.common.JIException: Access is denied, please check whether the [domain-username-password]
are correct. Also, if not already done please check the GETTING STARTED and FAQ sections in readme.htm. They provide
information on how to correctly configure the Windows machine for DCOM access, so as to avoid such
exceptions. [0x00000005] opc da远程连接提示错误,如何解决

配置 Windows 系统权限

  • 打开注册表编辑器(regedit),导航到:
    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
  • 创建或修改一个 32 位的 DWORD 值,名称为 LocalAccountTokenFilterPolicy,将其值设置为 1
  • 打开“本地安全策略”(secpol.msc),在“本地策略 -> 安全选项”中找到:
    • “网络访问:本地账户的共享和安全模型”,并将其属性设置为“经典:对本地账户进行身份验证,不改变其本来身份”
  1. 查DCOM权限:

    • 打开dcomcnfg.exe(组件服务)。

    • 导航到“组件服务”->“计算机”->“我的电脑”->“DCOM 配置”。

    • 找到您尝试访问的特定 DCOM 应用程序或对象。

    • 右键单击并选择“属性”。

    • 转到“安全”选项卡。

    • 检查“启动和激活权限”以及“访问权限”设置。

      确保尝试连接的用户或组具有适当的权限(启动和激活权限通常为“本地启动”和“本地激活”,访问权限通常为“本地访问”)。

    • 如果需要,添加用户或组并授予必要的权限。

  2. 4. 检查注册表权限:

    • 打开regedit.exe

    • 导航至HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OLE

    • 右键单击“OLE”键并选择“权限”。

    • 验证尝试连接的用户或组的权限。

      如有必要,授予“完全控制”权限。

  3. 5. 检查LocalAccountTokenFilterPolicy

    • 导航至HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
    • 检查名为的 DWORD 值LocalAccountTokenFilterPolicy
    • 如果存在,请确保将其值设置为1。如果不存在,请创建它并将其值设置为1。此设置对于启用对目标计算机上某些资源的远程访问非常重要。
1
2
3
4
5
6
7
8
9
您无权访问本地 Windows 注册表,因此客户端无法将服务器的 ProgID 转换为 CLSID。请确保您以足够的权限(例如,以管理员用户身份)运行该应用程序。

或者,您可以只使用服务器的 CLSID 配置连接,这样就不需要注册表了。

OPC 客户端实际上应该使用服务器计算机上运行的 OpcEnum 服务来执行 ProgID 到 CLSID 的转换。可能是该服务不可用,或者 Utgard 只尝试访问注册表(我自己也不了解 Utgard)。如果您没有在客户端计算机上安装服务器,那么基于注册表的 ProgID 到 CLSID 转换无论如何都会失败,因为本地 Windows 注册表中没有该信息。最糟糕的情况是 Utgard 会尝试打开远程 Windows 注册表,但这种情况很少成功(或者您需要确保已单独启用该功能)。

请注意,由于我不了解 Utgard,我只是猜测它正在尝试哪些策略。然而,仅使用 CLSID 会绕过整个转换部分,这就是你的问题所在。

E:考虑到您的其他客户端可以毫无问题地连接,我怀疑 Utgard 根本没有尝试使用 OpcEnum。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
OPC 客户端实际上应该使用服务器计算机上运行的 OpcEnum 服务来执行 ProgID 到 CLSID 的转换。
可能是该服务不可用,或者 Utgard 只尝试访问注册表(我自己也不了解 Utgard)。
如果您没有在客户端计算机上安装服务器,那么基于注册表的 ProgID 到 CLSID 转换无论如何都会失败,因为本地 Windows 注册表中没有该信息。
最糟糕的情况是 Utgard 会尝试打开远程 Windows 注册表,但这种情况很少成功(或者您需要确保已单独启用该功能)。

请注意,由于我不了解 Utgard,我只是猜测它正在尝试哪些策略。然而,仅使用 CLSID 会绕过整个转换部分,这就是你的问题所在。

E:考虑到您的其他客户端可以毫无问题地连接,我怀疑 Utgard 根本没有尝试使用 OpcEnum。

我会把你的答案设为已采纳答案,因为我听说这确实是一个常见问题,而且它能帮助很多人。
不过,我按照 claptrap 的建议,再次修改了 DCOM 设置,解决了这个问题。
这次我将“位置”设置为“从以下计算机‘myComputerName’运行应用程序”,
而不是“从此计算机运行应用程序”。
不知道为什么,但现在一切正常。


我也像你说的那样使用了 CLSID!但这本身并没有消除异常。我还必须按照我之前的评论中解释的那样更改 DCOM。

我遇到了同样的错误,并通过将以下补丁应用到注册表解决了该问题:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
创建或修改 32 位 DWORD:LocalAccountTokenFilterPolicy
将值设置为:1