【发布时间】:2014-06-19 09:40:35
【问题描述】:
我正在升级一个带有 COM 自动化接口的 Delphi 软件项目,以简化一些批处理任务(通过 WSH 脚本)。这本身很容易......但是,该软件的大多数“实际”用户不需要(甚至不知道)这个界面,我想让他们免于注册 COM-Server 或错误消息弹出,当程序无法启动 com 服务器时(目前该软件没有安装程序 - 它只是复制和运行。注册任何东西对用户来说都是一个额外的步骤。它是内部的,所以客户端已经习惯了。 ..)。
这是一个实际的问题:我能否以编程方式找出运行该软件的当前用户是否有足够的权限来注册 COM 服务器,然后(如果没有)避免尝试创建服务器?我想要一种行为,当用户没有足够的权限时,自动化服务器不存在(没有错误消息)。
我尝试在TAutoObjectFactory.Create(...) 周围添加一个try-catch,但这并不能防止错误。添加启用服务器的命令行参数也不起作用,因为从脚本创建自动化对象将在没有该参数的情况下启动程序,因此也不会创建服务器。
【问题讨论】:
-
您始终可以使用 PerUserRegistion 而不是全局。它不需要管理员权限。
-
你为什么要注册服务器。使用免费注册 COM。
-
@DenisAnisimov 在 Delphi5 中似乎不存在
-
@DavidHeffernan 我试过了 - 但无法让它工作......而且我在某处读到无注册 COM 并不真正适用于脚本。
-
@FrankB Delphi 5 没有定义 COM。 COM 是系统的一部分。如果你想注册每次使用,就这样做。如果 Emba 类不提供该功能,请自己编写。如果您必须使用 15 年历史的工具,请确保它已经过时 15 年。确实希望必须编写代码来弥补这一点。
标签: windows com automation delphi-5 com-server