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を指定して、既定のユーザーの既定の暗号プロバイダを設定してもエラーは出なくなります。

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です