This MSDN article声明任何progid都必须满足几个正式要求,包括长度限制。然而,如果这些行为被侵犯,会发生什么情况,我们却只字未提。
我在我们的代码库中找到了几个progid超过39个字符的地方,但对它们来说一切似乎都正常,包括progidfromclsid()和clsidfromprogid()。
因为违反这些要求很容易,所以很有兴趣知道这种违反行为的真正可能后果是什么?
最佳答案
我想你得到的是未定义的行为。这可以从正常功能到崩溃,小猫被吃掉,长子被牺牲,&C。
更重要的是,一些要求可能会告诉您一些事情:
不超过39个字符:其他软件可能使用40个字符的固定大小缓冲区来存储progid。因此,他们只有前39个,如果时间更长,可能找不到您的progid。
不以数字开头;除句点外不包含标点符号:同样,这是一个合同。软件可能依赖于此来验证它从某个地方得到的progid,例如它们是真正的progid,而不是完全不同的东西。
窗户可能不会马上咬你,但其他东西可能会。