CryptAcquireContext 0x80090016错误及其相关错误
将 if (!CryptAcquireContext(
&hProv,
NULL,
NULL,
PROV_RSA_FULL,
0))
{
HandleError("Error during CryptAcquireContext!");
}
修改为
if (!CryptAcquireContext(
&hProv,
NULL,
NULL,
PROV_RSA_FULL,
CRYPT_VERIFYCONTEXT))
{
HandleError("Error during CryptAcquireContext!");
}
即会创建一默认的容器
更多情况参照MSDN
引用内容 http://www.my1984.com.cn/article.asp?id=922
CryptAcquireContext 错误下面是最常见的错误代码和引起错误的可能原因。
NTE_BAD_KEYSET (0x80090016)
密钥容器不存在;
您无权访问密钥容器;
"受保护的存储服务"没有运行。
NTE_EXISTS (0x8009000F) 密钥容器已存在,但您正在尝试创建它。
如果打开密钥的上次尝试以 NTE_BAD_KEYSET 失败,则意味着拒绝了对密钥容器的访问。
NTE_KEYSET_NOT_DEF (0x80090019) 加密服务提供程序 (CSP) 可能安装有误。
在 CSP DLL(Rsabase.dll 或 Rsaenh.dll)上使用 Regsvr32.exe 可能会更正此问题,这取决于正在使用的提供程序。