2

首先让我先说如果我把这个问题发错了地方,我很抱歉。我看到Object 的条目已经存在于 RSACryptoServiceProvider 中。我尝试了那里提供的解决方案。但是,他们没有解决我的问题。另外,我没有看到重新提问的选项。

我有几乎同样的问题。我有一个RSACryptoServiceProvider在同一台机器上和同一帐户下的两个项目中使用的类。两个项目都存在于同一个解决方案中,并共享相同的加密代码。一个项目,服务器,是一个 Windows 服务,另一个项目,客户端,是一个 Windows 应用程序。他们使用RSACryptoServiceProvider非对称加密通过命名管道相互交谈。我一开始只是让服务器在与客户端相同的应用程序中以另一个 Windows 窗体运行。一切运行良好。然后,我将服务器移至 Windows 服务。

Windows 服务启动正常。它似乎能够创建它的RSACryptoServiceProvider罚款实例。但是,当在 Windows 应用程序中运行的客户端启动时,它会在尝试创建它时遇到运行时错误。这是在两个项目中运行的代码。

rule = New CryptoKeyAccessRule("everyone", CryptoKeyRights.FullControl, AccessControlType.Allow)
csp = New CspParameters
csp.KeyContainerName = _KeyContainerName
csp.Flags = CspProviderFlags.UseMachineKeyStore
csp.CryptoKeySecurity = New CryptoKeySecurity()
csp.CryptoKeySecurity.SetAccessRule(rule)

//Object already exists exception happens here
rsa = New RSACryptoServiceProvider(_KeySize, csp)

如您所见,我有设置访问规则的代码,如关于此主题的另一篇文章中所述。不幸的是,这并没有解决我的问题。还有什么需要改变的吗?

4

0 回答 0