更新
我正在尝试以编程方式将 COM+ 组件的 ConstructorString 设置为稍后初始化的值。
有问题的代码在 WinXP、Win2k3、Vista 和 Win2k8 上运行良好。
我在 Win7 - 家庭高级版上失败了。
我通过反复试验确定构造函数字符串似乎有大小限制 - 如果字符串为 512 个字符 (wchar) 或更少,它会保存。更长,并且对 CatalogCollection 对象的 SaveChanges 调用失败并出现 0x80110437 - COMADMIN_E_PROPERTYSAVEFAILED 错误。
事实证明,所有系统都有这个限制 - 512 个字符。
我们使用 CryptProtectData 在将密码放入字符串之前对其进行加密。
在 win7 (x64) 上,字符串的输出比 XP (x32) 和 W2k3 (x64) 上的长。
所以 - CryptProtectData 发生了变化 - 为什么输出更长?
if (!CryptProtectData(&dataIn,L" ",&optionalEntropy,NULL,NULL,
CRYPTPROTECT_LOCAL_MACHINE | CRYPTPROTECT_UI_FORBIDDEN, &dataOut))