2010-06-16 65 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

相关问题