Добавление сертификата в x509Store ничего не делает C#

Я пытаюсь добавить сертификаты, но функция Add, похоже, ничего не делает.

У меня есть два сертификата. И то, и другое можно добавить вручную, щелкнув правой кнопкой мыши и сохранив в личном хранилище "testStore", но они не сохраняются, когда я пытаюсь добавить их программно. Я даже добавил только один из них, и объект 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();

2 ответа

Я получил его на работу... Оказывается, вы должны использовать store.Add() вместо store.Certificates.Insert();

//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();

Попробуйте с этим флагом: store.Open (OpenFlags.ReadWrite);

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

Другие вопросы по тегам