2010-06-16 71 views
0

下面這段代碼thows以下錯誤: System.Security.Cryptography.CryptographicException「句柄無效」DSACryptoServiceProvider構造函數會引發CryptographicException

CspParameters CSPParam = new System.Security.Cryptography.CspParameters(13, null, null); 
CSPParam.Flags = CspProviderFlags.UseMachineKeyStore; 
CSPParam.KeyContainerName = "MyKeys"; 

System.Security.Cryptography.DSACryptoServiceProvider r = new System.Security.Cryptography.DSACryptoServiceProvider(CSPParam); //Error occurs here 

該代碼已經工作沒有問題,然後它開始拋出這個錯誤。我想不出任何我已經改變的與此有關的事情。 nayone有沒有看到這個錯誤?什麼嘗試的想法?

回答

0

我不記得那張在CAPI幕後的一切,但如果我還記得它可以是相當痛苦的。通過使用空參數,你可能會得到一些叫做(我認爲)的默認密鑰容器。我認爲在運行你的代碼之前,你不能指望默認的密鑰容器不存在,如果它存在,那麼你會得到一個錯誤。您可以閱讀有關CryptAcquireContext函數和各種_KEYSET_THIS_THAT標誌的全部內容,以瞭解如何在非託管代碼中執行此操作。如果有圍繞恐怖的.NET包裝,我不知道。

0

確保您具有執行此操作的適當權限。

information

+0

我看了那篇文章,並做了它說的,但它沒有幫助。 – HitLikeAHammer 2010-06-16 22:37:26

相關問題