ОБНОВЛЕНО
Я пытаюсь программно установить ConstructorString компонента COM + со значением для последующей инициализации.
Данный код отлично работает на WinXP, Win2k3, Vista и Win2k8.
У меня не получается на Win7 - Home Premium версия.
Я методом проб и ошибок определил, что существует ограничение на размер строки конструктора - если строка 512 символов (wchar) или меньше, она сохраняется. Дольше и вызов SaveChanges объекта CatalogCollection завершается ошибкой с ошибкой 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))