【发布时间】:2011-12-20 06:15:30
【问题描述】:
相同的设置适用于 Windows 7 / 64 位和 Windows Server 2008 / 64 位:
- Datasnap 服务器应用程序位于已安装的网络驱动器上
- 在 tregsvr
<drive>:\path\to\server.exe注册(作为管理员) - GUID 显示在 dcomcnfg 中
- Socketserver 和 DCOM 服务正在运行
客户端失败并显示错误消息“类未注册”
如果我将服务器应用程序移动到本地目录,并重复注册tregsvr,客户端可以毫无问题地连接。
我还能检查什么?
【问题讨论】:
-
注意套接字服务器:1) 一切都在 scktsrv.exe 服务用户的安全上下文中运行(不要将其作为本地系统运行!) 2) 确实如此不正确支持 64 位整数。它将覆盖内存并返回错误的结果。使用普通 DCOM 尤其是当您在 LAN 中并且由于防火墙等原因不需要通过单个 TCP/IP 端口进行通信时。
-
@ldsandon 这是一个不能很快被替换的遗留系统。 Socketserver 在推出时曾被宣传为访问 MIDAS(现为 Datasnap)服务器的好方法,我们使用了它。现在它似乎有点像 BDE :)
-
如果可以的话,摆脱 DCOM。这是一项已弃用的技术,Windows 7 和 2008 Server 不喜欢它。您需要在 PC 上强制使用 SMB 1 协议,即便如此,我们还是遇到了很多问题。请参阅stackoverflow.com/questions/7647289/…,了解我如何将它替换为 HTTP 服务,同时用于多个 Delphi 5 应用程序。
-
@Arnaud 谢谢(DCOM 已成为历史),我们很快就会转向 HTTP
-
我将 DCOM 与 7 和 2008 R2 一起使用,没有问题。如果它不工作,很多 Windows 工具本身就不能工作 - 许多远程管理工具通过 RPC 或 DCOM 工作。无需强制 SMB1,这没有意义。 DCOM 与 AD 安全性紧密集成,而 HTTP 则不然。
标签: windows delphi dcom datasnap