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