Windows 2000は CryptGetDefaultProviderで CRYPT_USER_DEFAULT を指定できない
Widows 2000は CryptGetDefaultProvider 関数で dwFlagsに CRYPT_USER_DEFAULT (2)を指定すると Error 87が返ってきます。
同条件でXPの場合はエラーになりません。
Windows 2000でエラーにならないようにするためにはレジストリ設定で、既定のユーザーのデフォルトプロバイダーを設定する必要があります
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\Cryptography\Providers\Type 001] ;"Name"="Microsoft Base Cryptographic Provider v1.0" "Name"="Microsoft Strong Cryptographic Provider" "TypeName"="RSA Full (Signature and Key Exchange)" [HKEY_CURRENT_USER\SOFTWARE\Microsoft\Cryptography\Providers\Type 003] "Name"="Microsoft Base DSS Cryptographic Provider" "TypeName"="DSS Signature" [HKEY_CURRENT_USER\SOFTWARE\Microsoft\Cryptography\Providers\Type 012] "Name"="Microsoft RSA SChannel Cryptographic Provider" "TypeName"="RSA SChannel" [HKEY_CURRENT_USER\SOFTWARE\Microsoft\Cryptography\Providers\Type 013] "Name"="Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider" "TypeName"="DSS Signature with Diffie-Hellman Key Exchange" [HKEY_CURRENT_USER\SOFTWARE\Microsoft\Cryptography\Providers\Type 018] "Name"="Microsoft DH SChannel Cryptographic Provider" "TypeName"="Diffie-Hellman SChannel" [HKEY_CURRENT_USER\SOFTWARE\Microsoft\Cryptography\Providers\Type 024] "Name"="Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)" "TypeName"="RSA Full and AES" |
レジストリでこんな感じですかね。
もちろん、CryptSetProviderEx で第4パラメータにCRYPT_USER_DEFAULTを指定して、既定のユーザーの既定の暗号プロバイダを設定してもエラーは出なくなります。
Comments