我正在尝试添加证书,但是“添加”功能似乎没有任何作用。
我有两个证书。两者都可以通过右键单击并手动添加并保存到个人“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();
最佳答案
我知道它可以工作了……事实证明,您应该使用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();