在第一个程序启动时注册COM对象

gon*_*les 2 delphi com

我有一个带有自动化对象的Delphi应用程序.在程序开始时,我想在注册表中自动注册COM对象(而不是使用/ regserver开关).

该程序的旧版本是用Delphi 7编写的,我想我记得这个版本在程序启动后注册了.但是现在它是用D2009编译的,现在它没有注册.也许有人对此有所了解?

非常感谢你!

Dav*_*nan 7

这可能是失败的,因为您在具有UAC的计算机上运行,​​并且您无权写入HKLM.您无法使用/regserver交换机找到满意的解决方案,因为它总是会尝试在那里写.

您可以切换到无注册表的COM,尽管在安装过程中进行注册可能更好.那时你应该这样做,因为当你知道你将拥有足够的权利时.


Mik*_*son 5

您可以使用它ComServer.UpdateRegistry(True);来注册您的 com 对象并ComServer.UpdateRegistry(False);取消注册。

ComServer在 ComServ.pas 中找到

http://docwiki.embarcadero.com/VCL/en/ComServ.TComServer.UpdateRegistry

  • 由于 David Heffernan 提到的原因,该功能已被 Embarcadero 删除。当以普通用户身份运行或启用 UAC 时,您不允许修改保存 com 注册的注册表部分。在 Delphi XE 中,应该有一种方法只为当前用户注册 COM 对象,该对象可能能够在启用 UAC 的情况下为非管理员运行。 (2认同)
  • 自动注册 com-server 在 Delphi 2007 中被删除。以前的版本总是更新注册表,无论是否有必要。改变是为了更好。 (2认同)