更新しました
COM+ コンポーネントの ConstructorString に、後で初期化するための値をプログラムで設定しようとしています。
問題のコードは、WinXP、Win2k3、Vista、および Win2k8 で正常に動作します。
Win7 - Home Premium バージョンで失敗します。
試行錯誤の結果、コンストラクター文字列にはサイズ制限があるようだと判断しました。文字列が 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))