まず、この質問を間違った場所に投稿した場合は申し訳ありません。Object already exists in RSACryptoServiceProviderのエントリを見ました。そこで提供された解決策を試しました。しかし、彼らは私の問題を解決しませんでした。また、質問を再質問するオプションが表示されませんでした。
私はほとんど同じ問題を抱えています。RSACryptoServiceProvider
同じマシン上の同じアカウントで 2 つのプロジェクトで実行されるクラスがあります。どちらのプロジェクトも同じソリューション内にあり、同じ暗号化コードを共有しています。1 つのプロジェクト (サーバー) は Windows サービスであり、もう 1 つのプロジェクト (クライアント) は 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)
ご覧のとおり、この件に関する他の投稿で述べたように、アクセス ルールを設定するコードがあります。残念ながら、これで問題は解決しませんでした。他に変更する必要があるものはありますか?