2

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

MyNamespace.MyType

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

4

3 回答 3

4
  • 不超过 39 个字符。
  • 除一个或多个句点外,不包含标点符号(包括下划线)。
  • 不以数字开头。
  • 与任何 OLE 1 应用程序的类名不同,包括同一应用程序的 OLE 1 版本,如果有的话。*

来源 = MSDN

于 2010-06-26T10:55:33.050 回答
2

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

我不知道 ProgID 是否有长度限制,COM 基础结构中没有定义。也许脚本语言有一个。我知道您使用的是 VB6,根本不需要 ProgID。它更喜欢早期绑定(新的 ClassName,而不是 CreateObject)。这是一个好主意,因为后期绑定调用慢了大约 10,000 倍。

Anyhoo,如果您想指定 ProgId,请使用该<ProgId>属性。正常格式是 AppName.ClassName,很少会测试任何类型的长度限制。

于 2010-06-25T18:36:29.617 回答
2

说到“程序化 ID”的随机限制......

---------------------------
Microsoft Visual Basic
---------------------------
Programmatic ID string too long '<<project_name>>.<<control_name>>'.
The Programmatic ID must be 39 characters or less.
---------------------------
OK   Help   
---------------------------
于 2010-06-26T10:49:25.513 回答