5

証明書を追加しようとしていますが、追加機能は何もしていないようです。

私は2つの証明書を持っています。どちらも、右クリックして個人の「testStore」ストアに保存することで手動で追加できますが、プログラムで追加しようとすると保存されません。それらの 1 つだけを追加したところ、X509Store オブジェクトには期待どおりにそれが含まれていますが、.Add(cert) を呼び出すと、そこには何も保存されません。

//I've already added 1 cert manually
X509Certificate2 cert2 = new X509Certificate2(@"C:\temp\Cert2.cer");
X509Store store = new X509Store("testStore", StoreLocation.CurrentUser);
store.Open(OpenFlags.MaxAllowed);

//here store.Certificates has the one Certificate I added manually as expected.

store.Certificates.Add(cert2);

//here store.Certificates still only has the first certificate, cert2 still isn't there..

store.Close();

何か不足していますか?

編集 StorePermission (以下のように) を使用してみました。また、管理者アカウントになりすまそうとしましたが、どちらも役に立ちませんでした。

StorePermission sp = new StorePermission( PermissionState.Unrestricted);
sp.Flags = StorePermissionFlags.AllFlags;
sp.Assert();
4

2 に答える 2

6

動作するようになりました... store.Certificates.Insert(); の代わりに store.Add() を使用する必要があることがわかりました。

//When LocalMachine is used, .Add() requires that you run the app as an administrator in order to work.
X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
X509Certificate2 cert = new X509Certificate2("C:\\test\\test.cer");
store.Open(OpenFlags.MaxAllowed);
store.Add(cert);
store.Close();
于 2014-12-29T13:37:19.060 に答える
1

このフラグを試してください: store.Open (OpenFlags.ReadWrite);

http://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.openflags(v=vs.110).aspx

于 2014-12-12T12:23:48.820 に答える