2014-12-12 3 views
0

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

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

Я что-то не хватает?

Edit Я также попытался с помощью StorePermission (как показано ниже), а также пытался олицетворения учетной записи администратора, и те, не помогло

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

ответ

1

Я получил его на работу ... Оказывается, вы должны использовать 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();