调用CryptAcquireContext错误:8009000B

Posted royhawk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了调用CryptAcquireContext错误:8009000B相关的知识,希望对你有一定的参考价值。

自己写的程序之前运行的好好的,现在突然运行不了,经过调试分析,错误锁定在CryptAcquireContext函数,程序如下:

if ( !CryptAcquireContext( &hCryptProv, TEXT( "asdfghj.EncryptDecrypt" ), NULL, PROV_RSA_FULL, 0 )) 
{

        if ( !CryptAcquireContext( &hCryptProv, TEXT( "asdfghj.EncryptDecrypt" ), NULL, PROV_RSA_FULL, CRYPT_NEWKEYSET )) 
        {
                break;
        }
}

当程序执行完 CryptAcquireContext( &hCryptProv, TEXT( "phantom.EncryptDecrypt" ), NULL, PROV_RSA_FULL, 0 ) 后出现了8009000B错误,网上查解决方法也没有找到,于是换了台机器试试,发现程序运行成功,结合之前网上查的说此函数跟C:\Users\xxx\AppData\Roaming\Microsoft\Crypto\RSA\ 下的文件有关,于是查看此目录发现生成了新文件48297cfb00d65bf63a17c282c61c6302_3ad499d0-f20f-47e6-8edc-b3d51afc16ca,打开文件发现文件中包含我们的"asdfghj.EncryptDecrypt"字符串,于是猜测之前机器运行不成功也许跟此文件有关系,于是回到原机器到RSA目录,也发现了48297cfb00d65bf63a17c282c61c6302_3ad499d0-f20f-47e6-8edc-b3d51afc16ca文件,把这个文件删了,然后运行程序,程序正常运行了!具体原因尚不清楚,有知道的告诉我下!

以上是关于调用CryptAcquireContext错误:8009000B的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 8 API 调用未正确返回验证错误

Angular 8 - ng lint:超出最大调用堆栈大小错误

未捕获的错误:将 laravel 5.8 升级到 8 后调用未定义的函数 Illuminate\Mail\TransportManager()

从 n = 8 开始的错误:“调用 Python 对象时超出了最大递归深度”[重复]

jQuery v1.8.3 在 ie 8 和 ie 7 中创建错误“意外调用方法或属性访问”。

Windows Phone 8 服务调用导致错误 HRESULT E_FAIL 已从对 COM 组件的调用中返回