什么';注册的COM类的最大长度是多少?

什么';注册的COM类的最大长度是多少?,com,assemblies,registry,com+,Com,Assemblies,Registry,Com+,将对象添加到Windows注册表时,它们显示如下: MyNamespace.MyType 我似乎记得在尝试为COM注册名称空间和类名时遇到了名称空间和类名太长的问题。在Windows或COM+中注册类是否有最大长度限制?注册COM组件的主要方法是通过它们的CLSID,一个固定大小的16字节数。GUID。您可以发布ProgID,这对于需要使用后期绑定的COM客户端很有用。比如脚本语言 我不知道ProgIDs是否有长度限制,COM基础设施中没有定义长度限制。也许脚本语言有一个。我知道您使用的是VB

将对象添加到Windows注册表时,它们显示如下:

MyNamespace.MyType

我似乎记得在尝试为COM注册名称空间和类名时遇到了名称空间和类名太长的问题。在Windows或COM+中注册类是否有最大长度限制?

注册COM组件的主要方法是通过它们的CLSID,一个固定大小的16字节数。GUID。您可以发布ProgID,这对于需要使用后期绑定的COM客户端很有用。比如脚本语言

我不知道ProgIDs是否有长度限制,COM基础设施中没有定义长度限制。也许脚本语言有一个。我知道您使用的是VB6,根本不需要ProgID。它更喜欢早期绑定(新的类名,而不是CreateObject)。这是一个好主意,因为延迟绑定的调用要慢10000倍


Anyhoo,如果要指定ProgId,请使用
属性。通常的格式是AppName.ClassName,这应该很少测试任何类型的长度限制。

说到对“编程ID”的随机限制

---------------------------
Microsoft Visual Basic
---------------------------
编程ID字符串“”太长。
编程ID必须小于等于39个字符。
---------------------------
好的,救命
---------------------------
  • 不超过39个字符
  • 除一个或多个句点外,不包含标点符号(包括下划线)
  • 不是以数字开头
  • 与任何OLE 1应用程序的类名不同,包括同一应用程序的OLE 1版本(如果有)*

我不确定我们在哪里找到了长度限制。可能是在尝试在VB6中创建ActiveX组件时发生的。有趣的是,我们将创建一个.NET组件,它既可以在VB6中进行早期绑定,也可以在使用经典ASP/VB脚本的不同解决方案中进行后期绑定。感谢您的回答。如果安装了多个组件,ProgID允许使用组件的最新版本。后期绑定独立于通过CLSID或ProgID创建。如果性能是一个问题,您可以在实例化许多对象之前通过
CLSIDFromProgID
解决它。
---------------------------
Microsoft Visual Basic
---------------------------
Programmatic ID string too long '<<project_name>>.<<control_name>>'.
The Programmatic ID must be 39 characters or less.
---------------------------
OK   Help   
---------------------------