証明書を現在のユーザー証明書ストアに追加しようとしていますが、他のアプリケーションから読み取った直後です。だから、私がやっていることは
var cert = new X509Certificate2(...//binary certificate here){
PrivateKey = myPrivateKey
};
var store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.MaxAllowed);
store.Add(new X509Certificate2(cert.Export(X509ContentType.Pfx), string.Empty, X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.UserKeySet));
store.Close();
store = null;
cert.Reset();
cert = null;
この操作が終了した後も、アプリケーションは引き続きオンになっており、他のことを行っていますが、この証明書を常にストアで見つけることができるとは限りません。ただし、1/2 分待てば、この証明書は確実に見つかります。
なにが問題ですか?X509Store.Add が同期操作ではない可能性はありませんか? 結局、Windows がインポート プロセスを完了するために行っている処理がまだ残っている可能性がありますか?