自己寫的程序之前運行的好好的,現在突然運行不了,經過調試分析,錯誤鎖定在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文件,把這個文件刪了,然后運行程序,程序正常運行了!具體原因尚不清楚,有知道的告訴我下!